# Introduction

General overview.

EXA Community is a decentralized initiative focused on the success of [EXA Market](https://exa.market/), an NFT marketplace empowering creators and collectors on the [Algorand blockchain](https://algorandtechnologies.com/).&#x20;

It is powered by the [EXA token](/getting-started/governance), which grants the community voting power to have a say in the protocol's future but also to create proposals that can influence the direction of the project.

\
Official media:

* Website: <https://exa.community/>
* Twitter: [@EXA\_Community](https://twitter.com/EXA_Community)


# Governance

Overview of the Governance Architecture.

The governance platform allows token holders to participate in the future of the EXA Ecosystem. \
EXA token holders can get involved in the project by proposing or deciding on protocol settings, new feature implementation, strategic partnerships, and even modifying the governance system itself.&#x20;

{% hint style="info" %}
The governance architecture is greatly inspired by [Uniswap](https://uniswap.org/governance), [DyDx](https://docs.dydx.community/dydx-governance/voting-and-governance/dip-proposal-lifecycle), [Tinyman](https://docs.tinyman.org/token-and-governance/governance-details/overview), and [Blur](https://docs.blur.foundation/governance) protocols.
{% endhint %}

## Proposal Lifecycle

<figure><img src="/files/bzVxG119vVtRthvwHtu8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/odCjYGmBYl1yP7mAJSox" alt=""><figcaption><p>Proposal Lifecycle</p></figcaption></figure>

**The Governance model consists of 5 distinct phases.**

#### Phase 1 - Forum Discussion

Initial concepts and suggestions are first shared on the forum to gather input from the community. This serves as a platform for receiving feedback. Each proposal undergoes a phase of improvements and addresses any objections raised. If the proposal is positively received and feedback is integrated, it progresses to the next phase.

#### Phase 2  - EXRC Creation

Off-chain EXA Request for Comments (EXRCs) creation is the first step in the governance improvement process. Anyone can participate in the Governance Forum, create off-chain EXRCs, and discuss potential improvements.

#### Phase 3  - EXRC Feedback

Once posted on the Governance Forum, all questions and comments should be addressed and taken into consideration to further improve the EXRC.

#### Phase 4  - EXIP Creation

An EXA Improvement Proposal (EXIP) is the final version of the proposal, created by the EXA Community based on the information gathered in the Forum Discussion. The EXIP is then posted on the DAO Platform for community members to vote on in the next phase.

#### Phase 5 - EXIP Voting Process

This is the final step, where community members vote to either approve or reject the proposal. A proposal must receive more than 50% of the votes to be approved. Otherwise, it is rejected.

**The full process and implementation will be detailed closer to the launch of the DAO.**


# Utility

Token Utility.

The primary utility of the EXA token is to give holders the ability to participate in key decisions affecting the EXA Ecosystem, such as platform upgrades, partnerships, and treasury fund allocations.

**From day 1, holders will be able to:**

* [<mark style="color:purple;">Provide liquidity:</mark>](< https://app.tinyman.org/pool/WEQOTNFXXHPYLCSC53P5T2P7MTNKZX37CKQBMNOFC7KMYI4R3UAX3YUSQA/add-liquidity>) Contribute to the ALGO <> EXA liquidity pool on Tinyman and earn fees on all token swaps within the pool.<br>
* [<mark style="color:purple;">Farm EXA:</mark>](< https://app.tinyman.org/pool/WEQOTNFXXHPYLCSC53P5T2P7MTNKZX37CKQBMNOFC7KMYI4R3UAX3YUSQA/farming-programs/167>) Earn EXA tokens by staking LP tokens in the Tinyman farming pool.<br>
* [<mark style="color:purple;">Trade NFTs:</mark>](https://exa.market/) Use EXA tokens to buy and sell NFTs on [exa.market](https://exa.market/).

**However, additional utilities can be added over time by the community via the** [**Governance system**](/getting-started/governance)**.**\
\
For instance:

* <mark style="color:purple;">Launch governance participation rewards:</mark> Incentivize active participation in governance by offering rewards or voting power to token holders who contribute to key decisions affecting the ecosystem.<br>
* <mark style="color:purple;">Offer token buybacks or burns:</mark> Implement periodic buybacks or token burns, reducing the total supply of EXA tokens, which could drive demand among the community.<br>
* <mark style="color:purple;">Provide exclusive platform benefits for token holders:</mark> Grant token holders access to exclusive features, such as early access to NFT drops, premium content, or reduced fees for trading and minting on the EXA Market.<br>
* <mark style="color:purple;">Loyalty Programs:</mark> Implement a loyalty system where users accumulate benefits such as higher staking rewards, based on how long they have held a certain amount of EXA tokens.<br>
* <mark style="color:purple;">Integrate with external ecosystems:</mark> Explore partnerships where EXA tokens can be used across multiple platforms or blockchain projects, increasing its utility and attractiveness to a wider audience.


# Tokenomics

Token Allocations & Distribution.

## **Token details**

| Token ASA ID | [1888888888](https://explorer.perawallet.app/asset/1888888888/)                                                      |
| ------------ | -------------------------------------------------------------------------------------------------------------------- |
| Ticker       | EXA                                                                                                                  |
| Total Supply | 1,000,000,000 (one billion)                                                                                          |
| Decimal      | 6                                                                                                                    |
| Creator      | [exatoken.algo](https://explorer.perawallet.app/address/EXAMARKETNGVS7HBZDDRJE2QST33WCBUQPYOQRJBYLMCE7TKKRCZRX3N2M/) |
| Allo         | <https://allo.info/asset/1888888888/token>                                                                           |
| Vestige      | <https://vestige.fi/asset/1888888888>                                                                                |
| Tinyman Pool | <https://app.tinyman.org/pool/WEQOTNFXXHPYLCSC53P5T2P7MTNKZX37CKQBMNOFC7KMYI4R3UAX3YUSQA>                            |

## **Allocations**

<figure><img src="/files/B3OZGbRsxlIXhjn0kapO" alt="" width="563"><figcaption></figcaption></figure>

`EXA` has a fixed supply of `1,000,000,000` (one billion) tokens.\
&#x20;\
The allocation of the total supply is broken down as follows:

* **56.00%** (`560,000,000 EXA`) to the [**Community Treasury**](#community-treasury).
* **23.00%** (`230,000,000 EXA`) to investors.
* **11.00%** (`110,000,000 EXA`) to the [**Foundation Treasury**](#foundation-treasury).
* **10.00%** (`100,000,000 EXA`) to founders, and employees.&#x20;

### Community Treasury

`56.00%` of the token supply (`560,000,000 EXA`) will be distributed to a Community Treasury to be allocated on an ongoing basis through rewards campaigns, community initiatives, liquidity mining, and other programs.

**Objectives**

* Attract new creators and collectors to the EXA Ecosystem.
* Reward active creators and collectors.
* Reward contributors and ambassadors.
* Develop a best-in-class governance system and incentivize robust governance.

### Foundation Treasury

`11.00%` of the token supply (`110,000,000 EXA`) will be distributed to the Foundation Treasury.\
The Foundation is responsible for supporting programs and initiatives that drive the growth of the EXA Ecosystem.

**Objectives**

* **Expand marketing and outreach:** Fund marketing campaigns and strategic partnerships to increase brand visibility and attract a broader audience of creators, collectors, and developers.
* **Promote educational initiatives:** Develop educational programs and resources to help onboard new users and provide training for creators, developers, and collectors in the EXA Ecosystem.
* **Support developer tools and infrastructure:** Fund the development of open-source tools, SDKs, and APIs that make it easier for creators, developers, and collectors to interact with the EXA platform.
* **Develop decentralized governance initiatives**: Promote community-driven governance systems, providing tools and incentives for token holders to actively participate in decision-making processes that shape the future of the ecosystem.

## Distribution

{% hint style="info" %}
EXA tokens are distributed on the third Monday of each month.
{% endhint %}

<mark style="color:purple;">**Community Treasury 56% —**</mark> <mark style="color:purple;"></mark><mark style="color:purple;">`560,000,000 EXA`</mark>

**->** `Community Rewards`: 4 years non-linear distribution.

| Year   | Community Treasury | Distribution % |
| ------ | ------------------ | -------------- |
| Year 1 | `168,000,000 EXA`  | 16.8           |
| Year 2 | `140,000,000 EXA`  | 14.0           |
| Year 3 | `140,000,000 EXA`  | 14.0           |
| Year 4 | `112,000,000 EXA`  | 11.2           |

**Year 1 distribution:**

* Incentivized Testnet Rewards \~0.49% — `4,912,650 EXA`
  * &#x20;**->** 100% unlocked initially.
* CoinList Rewards Campaign 1.0% — `10,000,000 EXA`
  * **->** 6 months linear distribution.
* Ambassadors \~0.13% — `1,350,000 EXA`
  * **->** 1 year linear distribution.
* Staking Rewards 4% — `40,000,000 EXA`
  * **->** Distributed every single block.
* Liquidity Mining 6% — `60,000,000 EXA`
  * **->** Distributed every single block.
* EXA Rewards Campaign Season 2  \~5.17% — `51,737,350 EXA`
  * **->** 1 year linear distribution starting from December 2025.

*Note — Years 2-4 distributions will be defined by the Community via* [*Governance*](/getting-started/governance)*.*

<mark style="color:purple;">**Investors 23.00% —**</mark> <mark style="color:purple;"></mark><mark style="color:purple;">`230,000,000 EXA`</mark>\
**->** 15% upfront, then 1 year cliff, 1 year linear distribution.\
\
*Investors list — Borderless Capital, Lemniscap, Encode Club, Meld Ventures, Algorand Foundation, Big Brain Holdings, 0xVentures, Speedinvest, Al Goanna, Stonks and some Angels.*

<mark style="color:purple;">**Foundation Treasury 11.00% —**</mark> <mark style="color:purple;"></mark><mark style="color:purple;">`110,000,000 EXA`</mark>\
**->** 4 years linear distribution.\ <br>

<mark style="color:purple;">**Team 10% —**</mark> <mark style="color:purple;"></mark><mark style="color:purple;">`100,000,000 EXA`</mark>\
**->** 15% upfront, then 1 year cliff, 1 year linear distribution.

## Token Generation Event <a href="#token-generation-event" id="token-generation-event"></a>

**\~5.91% of the Token Supply will be in circulation on day 1 (\~59.1M EXA).**

*Note — Investors and team will be unable to vest any tokens during the first year following the Token Generation Event. For the initial 12 months, the only tokens entering circulation will be distributed through Community Rewards.*


# Protocol

Overview of the EXA Market protocol.

## Empowering users <a href="#empowering-users" id="empowering-users"></a>

The EXA Market protocol introduces a new range of possibilities for peer-to-peer trading on the Algorand network.

The protocol allows users to:

* **Trade both NFTs and fungible tokens**
  * Unlike Ethereum where NFTs use ERC721/ERC1155 standards and fungible tokens use the ERC20 standard, Algorand assets share the same standard called [ASA (Algorand Standard Assets)](https://developer.algorand.org/docs/get-details/asa/). This gives the ability to natively support a wide range of operations without any extra layer.
* **Exchange up to 4 assets\* at once (bundle of assets)**
  * Up to 4 assets can be bundled for sales at the moment.
  * For instance: a user could sell (ASA 1 + ASA 2 + ASA 3 + 100 ALGO) for (ASA 4).
  * Important to point out that the 4 assets limit could be extended in the future according to market needs.
* **Sell NFT for any type of assets**
  * Users are not just limited to the native ALGO payment token, any type of ASA can be used as a payment method thus enabling NFT to NFT trades by design.
* **Make offers**
  * Negotiate with any user for both NFTs and fungible tokens.
* **Perform standard sales, auctions and multi-mints.**

{% hint style="info" %}
**\***&#x61;ssets here refer to NFTs and fungible tokens.
{% endhint %}

## Sales types <a href="#sales-types" id="sales-types"></a>

As mentioned in the last section standard sales, auctions and multi-mints can be performed.

### **Standard sales**

Baskets\* are sold for a fixed price specified by the seller. This sale can be made public (to the market) or private (to a specific user) and can have start and end listing dates.

{% hint style="info" %}
\*basket(s) represent(s) the container(s) whereby assets are sold
{% endhint %}

### **Auctions**

1. **Normal auction** – Potential buyers bid in an auction in order to claim the assets in the basket, and the highest bidder wins.
2. **Reverse/dutch auction** – The price of a basket is reduced according to the progression of time.

### Multi-mints

A basket containing a supply of a single asset type, where different buyers can purchase portions of the supply available.<br>

## Creator fees <a href="#algorand-inheritance" id="algorand-inheritance"></a>

The Creator sets its fee (up to 15%) globally on-chain using its Creator Address. That means that all assets created by this address will be governed by this fee.\
​\
In addition to earning royalties in ALGO, Creators could also earn royalties over time in the following currencies, if they have opted-in the assets.\
\
Here is the list of assets that the protocol currently supports as means of payment:

| Asset   | ASA ID                                                           |
| ------- | ---------------------------------------------------------------- |
| ALGO    | N/A                                                              |
| USDC    | [31566704](https://explorer.perawallet.app/assets/31566704/)     |
| USDT    | [312769](https://explorer.perawallet.app/assets/312769/)         |
| gALGO   | [793124631](https://explorer.perawallet.app/assets/793124631/)   |
| goBTC   | [386192725](https://explorer.perawallet.app/assets/386192725/)   |
| goETH   | [386195940](https://explorer.perawallet.app/assets/386195940/)   |
| goUSD   | [672913181](https://explorer.perawallet.app/assets/672913181/)   |
| AKTA    | [523683256](https://explorer.perawallet.app/assets/523683256/)   |
| xUSD    | [760037151](https://explorer.perawallet.app/assets/760037151/)   |
| PEPE    | [1096015467](https://explorer.perawallet.app/assets/1096015467/) |
| COOP    | [796425061](https://explorer.perawallet.app/assets/796425061/)   |
| mALGO   | [1185173782](https://explorer.perawallet.app/assets/1185173782/) |
| GORA    | [1138500612](https://explorer.perawallet.app/assets/1138500612/) |
| EURS    | [227855942](https://explorer.perawallet.app/asset/227855942/)    |
| COSG    | [1065092715](https://explorer.perawallet.app/assets/1065092715/) |
| Finite  | [400593267](https://explorer.perawallet.app/asset/400593267/)    |
| BLOOM   | [1930070705](https://explorer.perawallet.app/asset/1930070705/)  |
| META    | [712012773](https://explorer.perawallet.app/asset/712012773/)    |
| SILVER$ | [246519683](https://explorer.perawallet.app/asset/246519683/)    |
| GOLD$   | [246516580](https://explorer.perawallet.app/asset/246516580/)    |

### Listing of a single asset

Let’s say Creator has created 10 NFTs with Creator Address and sets its royalty to 8%. All of these NFTs will have a 8% royalty attached to them, meaning that 8% of the listing price will be paid to Creator whenever a sale occur.

<figure><img src="/files/311Ym1AQL3YkNfl0hhoB" alt="" width="563"><figcaption></figcaption></figure>

#### Case study 1 <a href="#h_15e44d01be" id="h_15e44d01be"></a>

Seller lists an NFT from Creator for 100 ALGO.

<figure><img src="/files/bTiui6LV6mGUWSvo4Kqv" alt="" width="563"><figcaption><p>Listing for 100 ALGO</p></figcaption></figure>

Buyer purchases the NFT:

* 8 ALGO goes to Creator
* 1.99 ALGO goes to Platform fee
* 90.01 ALGO goes to Seller

#### Case study 2

Seller lists an NFT from Creator for 200 USDC.

<figure><img src="/files/bTiui6LV6mGUWSvo4Kqv" alt="" width="563"><figcaption><p>Listing for 200 USDC</p></figcaption></figure>

Buyer purchases the NFT:

* 16 USDC goes to Creator
* 3.98 USDC goes to Platform fee
* 180.02 USDC goes to Seller

{% hint style="warning" %}
Note that if the Creator has not opted-in USDC, the royalties will be sent to the Platform fee address. This is applicable for any ASA (USDC, USDT, gALGO, goBTC, goETH…etc).
{% endhint %}

### Listing of a bundle of assets

The EXA protocol allows users to create bundles of up to 4 assets but how do the royalties are computed? Especially for bundles with assets from different Creators? \
Let’s find out in this section. ​ \
\
The royalties are computed according to the following formula:

$$
R = \frac{P}{N}\sum\_{i}^{N} r\_{i}
$$

* $$R$$ is the total royalties a Buyer will pay to the Creators
* $$P$$ is the price of the listing
* $$N$$ is the number of assets with a Creator fee set (> 0%)
* $$r\_{i}$$ is the royalty of asset of index i

#### Case study 1 <a href="#h_51dd924ce5" id="h_51dd924ce5"></a>

Seller lists a bundle of 3 NFTs from Creator for 100 ALGO. ​ \
\
Creator has 5% royalties set.

<figure><img src="/files/Br31WqjvHKFz4679EG2i" alt="" width="563"><figcaption><p>Bundle of 3 NFTs listed for 100 ALGO</p></figcaption></figure>

Buyer purchases the NFT:

* 5 ALGO goes to Creator

$$
R = \frac{100}{3}\sum\_{1}^{3} r\_{i}=\frac{100}{3}\ \times (r\_{1}+r\_{2}+r\_{3})=\frac{100}{3}\ \times (0.05+0.05+0.05)=5
$$

* 1.99 ALGO goes to Platform fee
* 93.01 ALGO goes to Seller

#### Case study 2 <a href="#h_fec47fe1d5" id="h_fec47fe1d5"></a>

Seller lists a bundle of 3 NFTs from Creator1, Creator2, and Creator3 for 100 ALGO.\
​

Creator1 has 9% royalties set.\
Creator2 has 4% royalties set.\
Creator3 has 8% royalties set.

<figure><img src="/files/nLf0WQvjkswpBJZ2asaU" alt="" width="563"><figcaption><p>Bundle of 3 NFTs listed for 100 ALGO</p></figcaption></figure>

Buyer purchases the NFT:

* 7 ALGO in royalties goes to the Creators (Creator1, Creator2, and Creator3)

$$
R = \frac{100}{3}\sum\_{1}^{3} r\_{i}=\frac{100}{3}\ \times (r\_{1}+r\_{2}+r\_{3})=\frac{100}{3}\ \times (0.09+0.04+0.08)=7
$$

* 3 ALGO goes to Creator1
* 1.33 ALGO goes to Creator2
* 2.66 ALGO goes to Creator3
* 1.99 ALGO goes to Platform fee
* 91.01 ALGO goes to Seller

#### Case study 3 <a href="#h_431a39c6b1" id="h_431a39c6b1"></a>

Seller lists a bundle of 3 NFTs from Creator1, Creator2, and Creator3 for 100 ALGO.\
​

Creator1 has 9% royalties set.\
Creator2 has 4% royalties set.\
Creator3 has 0% royalties set.

<figure><img src="/files/nLf0WQvjkswpBJZ2asaU" alt="" width="563"><figcaption><p>Bundle of 3 NFTs listed for 100 ALGO</p></figcaption></figure>

Buyer purchases the NFT:

* 6.5 ALGO in royalties goes to the Creators (Creator1, and Creator2)

$$
R = \frac{100}{2}\sum\_{1}^{2} r\_{i}=\frac{100}{2}\ \times (r\_{1}+r\_{2})=\frac{100}{2}\ \times (0.09+0.04)=6.5
$$

* 4.5 ALGO goes to Creator1
* 2 ALGO goes to Creator2
* 0 ALGO goes to Creator3
* 1.99 ALGO goes to Platform fee
* 91.51 ALGO goes to Seller

## Markets

| Market    | Sales type                            | Platform fee |
| --------- | ------------------------------------- | ------------ |
| Primary   | Standard sales, Auctions, Multi-mints | 3.99%        |
| Secondary | Standard sales, Auctions              | 1.99%        |

## Algorand inheritance <a href="#algorand-inheritance" id="algorand-inheritance"></a>

Being built on Algorand, the protocol natively inherits essential features such as:

* **Low gas fee**
  * Network fees cost less than a penny. This limits the risk of paying more fees than the value of the asset itself, opening the doors to new users and use cases.
* **Low carbon footprint**
  * Its [Pure Proof of Stake (PPoS)](https://www.algorand.com/technology/algorand-protocol) consensus algorithm makes Algorand a sustainable blockchain with very low power consumption in contrast to other chains. In addition to that it offsets its additional carbon footprint with environment-focused organizations (more details provided [here](https://www.algorand.com/resources/blog/how-algorand-offsets-carbon-footprint)).
* **Low block confirmation time**
  * It takes less than 3 seconds for a transaction to get validated.


# Contracts

List of all EXA Market related contracts.

### EXA Token

| Token ASA ID | [1888888888](https://explorer.perawallet.app/asset/1888888888/) |
| ------------ | --------------------------------------------------------------- |
| Ticker       | EXA                                                             |
| Total Supply | 1,000,000,000 (one billion)                                     |
| Decimal      | 6                                                               |

### Listing Contract

{% hint style="info" %}
A listing contract is deployed whenever one makes a listing.
{% endhint %}

```
// Approval Program (BASE 64)
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
```

```
// Clear State Program (BASE 64)
BYEB
```

### Offer Contract

{% hint style="info" %}
An offer contract is deployed whenever one makes an offer.
{% endhint %}

```
// Approval Program (BASE 64)
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
```

```
// Clear State Program (BASE 64)
BYEB
```

### Auction Contract

{% hint style="info" %}
An auction contract is deployed whenever one makes an auction.
{% endhint %}

```
// Approval Program (BASE 64)
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
```

```
// Clear State Program (BASE 64)
BYEB
```

### Multi-mint Contract

{% hint style="info" %}
A multi-mint contract is deployed whenever one creates a multi-mint.
{% endhint %}

```
// Approval Program (BASE 64)
I3ByYWdtYSB2ZXJzaW9uIDgKaW50Y2Jsb2NrIDAgMSAyNTYgMgpieXRlY2Jsb2NrIDB4IDB4MTUxZjdjNzUgMHgwMCAweDcyNjU2ZDYxNjk2ZTY5NmU2NzVmNzE3NDc5IDB4NzQ2Zjc0NjE2YzVmNzE3NDc5IDB4NmM2OTczNzQ2OTZlNjc1ZjYxNzM3MzY1NzQ1ZjY5NjQgMHg3MDYxNzk2ZDY1NmU3NDVmNjE3MzczNjU3NDVmNjk2NCAweDY1Nzg2MzY4NjE2ZTY3NjU1ZjY2NjU2NTVmNjE2NDY0NzIgMHg2NTZlNjQ1Zjc0Njk2ZDY1IDB4NzA3MjY5NjM2NSAweDcyNjU3NjY1NmU3NTY1NWY3MjY1NjM2NTY5NzY2NTcyIDB4NzM3NDYxNzI3NDVmNzQ2OTZkNjUgMHg2ZDYxNzg1ZjYxNmM2YzZmNzc2NTY0NWY3MSAweDQzMzAxZTBlIDB4NmY3NzZlNjU3MiAweDY5NzM1ZjczNzQ2MTcyNzQ2NTY0IDB4NzZlZTVlNmQgMHgyZDA0NTk1OAp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweDdlZjkzNmQyIC8vICJvbl9jcmVhdGUoYWRkcmVzcyx1aW50NjQsYWRkcmVzcyl1aW50OCIKPT0KYm56IG1haW5fbDI2CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4YWMzOTRiNDQgLy8gIm9wdF9pbigpdWludDgiCj09CmJueiBtYWluX2wyNQp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDE2IC8vICJzdGFydChhc3NldCx1aW50NjQsdWludDY0LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDI0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4YzQyZDVmMGYgLy8gInJlYWRfdHMoKXVpbnQ2NCIKPT0KYm56IG1haW5fbDIzCnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTcgLy8gImJ1eSh1aW50NjQpdWludDgiCj09CmJueiBtYWluX2wyMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweDI0MWEyNTQ2IC8vICJ1cGRhdGVfc3RhcnRfdGltZSh1aW50NjQpdWludDgiCj09CmJueiBtYWluX2wyMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweGZjZWZlMTQzIC8vICJ1cGRhdGVfZW5kX3RpbWUodWludDY0KXVpbnQ4Igo9PQpibnogbWFpbl9sMjAKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApwdXNoYnl0ZXMgMHhmN2RlNzQ2NCAvLyAidXBkYXRlX3ByaWNlKHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDE5CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4NTc5ZWM3ODEgLy8gInVwZGF0ZV9wYXltZW50X2Fzc2V0KHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDE4CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4MDQwZjM1MTkgLy8gInVwZGF0ZV9leGNoYW5nZV9mZWVfYWRkcihhZGRyZXNzKXVpbnQ4Igo9PQpibnogbWFpbl9sMTcKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxMyAvLyAidXBkYXRlX3F1YW50aXR5KHVpbnQ2NCl1aW50OCIKPT0KYm56IG1haW5fbDE2CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKcHVzaGJ5dGVzIDB4YTRhZWNkM2IgLy8gImRlbGV0ZV9ib3hlcyhieXRlW10sYnl0ZVtdLGJ5dGVbXSxieXRlW10sYnl0ZVtdLGJ5dGVbXSxieXRlW10sYnl0ZVtdKXZvaWQiCj09CmJueiBtYWluX2wxNQp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCnB1c2hieXRlcyAweDExOWUzYzRiIC8vICJkZWxldGUoKXVpbnQ4Igo9PQpibnogbWFpbl9sMTQKZXJyCm1haW5fbDE0Ogp0eG4gT25Db21wbGV0aW9uCnB1c2hpbnQgNSAvLyBEZWxldGVBcHBsaWNhdGlvbgo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiBkZWxldGVjYXN0ZXJfMzQKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDE1Ogp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIGRlbGV0ZWJveGVzY2FzdGVyXzMzCmludGNfMSAvLyAxCnJldHVybgptYWluX2wxNjoKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiB1cGRhdGVxdWFudGl0eWNhc3Rlcl8zMgppbnRjXzEgLy8gMQpyZXR1cm4KbWFpbl9sMTc6CnR4biBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKIT0KJiYKYXNzZXJ0CmNhbGxzdWIgdXBkYXRlZXhjaGFuZ2VmZWVhZGRyY2FzdGVyXzMxCmludGNfMSAvLyAxCnJldHVybgptYWluX2wxODoKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiB1cGRhdGVwYXltZW50YXNzZXRjYXN0ZXJfMzAKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDE5Ogp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIHVwZGF0ZXByaWNlY2FzdGVyXzI5CmludGNfMSAvLyAxCnJldHVybgptYWluX2wyMDoKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiB1cGRhdGVlbmR0aW1lY2FzdGVyXzI4CmludGNfMSAvLyAxCnJldHVybgptYWluX2wyMToKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiB1cGRhdGVzdGFydHRpbWVjYXN0ZXJfMjcKaW50Y18xIC8vIDEKcmV0dXJuCm1haW5fbDIyOgp0eG4gT25Db21wbGV0aW9uCmludGNfMCAvLyBOb09wCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIGJ1eWNhc3Rlcl8yNgppbnRjXzEgLy8gMQpyZXR1cm4KbWFpbl9sMjM6CnR4biBPbkNvbXBsZXRpb24KaW50Y18wIC8vIE5vT3AKPT0KdHhuIEFwcGxpY2F0aW9uSUQKaW50Y18wIC8vIDAKIT0KJiYKYXNzZXJ0CmNhbGxzdWIgcmVhZHRzY2FzdGVyXzI1CmludGNfMSAvLyAxCnJldHVybgptYWluX2wyNDoKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAohPQomJgphc3NlcnQKY2FsbHN1YiBzdGFydGNhc3Rlcl8yNAppbnRjXzEgLy8gMQpyZXR1cm4KbWFpbl9sMjU6CnR4biBPbkNvbXBsZXRpb24KaW50Y18xIC8vIE9wdEluCj09CnR4biBBcHBsaWNhdGlvbklECmludGNfMCAvLyAwCiE9CiYmCmFzc2VydApjYWxsc3ViIG9wdGluY2FzdGVyXzIzCmludGNfMSAvLyAxCnJldHVybgptYWluX2wyNjoKdHhuIE9uQ29tcGxldGlvbgppbnRjXzAgLy8gTm9PcAo9PQp0eG4gQXBwbGljYXRpb25JRAppbnRjXzAgLy8gMAo9PQomJgphc3NlcnQKY2FsbHN1YiBvbmNyZWF0ZWNhc3Rlcl8yMgppbnRjXzEgLy8gMQpyZXR1cm4KCi8vIGRlbGV0ZV9zaW5nbGVfYm94CmRlbGV0ZXNpbmdsZWJveF8wOgpwcm90byAxIDAKZnJhbWVfZGlnIC0xCmJveF9kZWwKIQpieiBkZWxldGVzaW5nbGVib3hfMF9sMgpieXRlY18wIC8vICIiCnB1c2hieXRlcyAweDQ1NTI1MjIwNDI0ZjU4MjA0ZTRmNTQyMDQ2NGY1NTRlNDQgLy8gIkVSUiBCT1ggTk9UIEZPVU5EIgo9PQphc3NlcnQKZGVsZXRlc2luZ2xlYm94XzBfbDI6CnJldHN1YgoKLy8gY29yZV91cGRhdGVfYXNzZXJ0cwpjb3JldXBkYXRlYXNzZXJ0c18xOgpwcm90byAwIDAKYnl0ZWNfMyAvLyAicmVtYWluaW5nX3F0eSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAidG90YWxfcXR5IgphcHBfZ2xvYmFsX2dldAo9PQphc3NlcnQKZ2xvYmFsIExhdGVzdFRpbWVzdGFtcApieXRlYyA4IC8vICJlbmRfdGltZSIKYXBwX2dsb2JhbF9nZXQKPAphc3NlcnQKcmV0c3ViCgovLyBzYWZlX2JveF9yZWFkCnNhZmVib3hyZWFkXzI6CnByb3RvIDAgMQp0eG4gU2VuZGVyCmJveF9nZXQKc3RvcmUgNgpzdG9yZSA1CmxvYWQgNgpibnogc2FmZWJveHJlYWRfMl9sMgppbnRjXzAgLy8gMApiIHNhZmVib3hyZWFkXzJfbDMKc2FmZWJveHJlYWRfMl9sMjoKbG9hZCA1CmJ0b2kKc2FmZWJveHJlYWRfMl9sMzoKcmV0c3ViCgovLyBjb21wdXRlX2ZlZQpjb21wdXRlZmVlXzM6CnByb3RvIDEgMQpwdXNoaW50IDM1MDAgLy8gMzUwMApieXRlYyA5IC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKKgpmcmFtZV9kaWcgLTEKKgpwdXNoaW50IDEwMDAwMCAvLyAxMDAwMDAKLwpyZXRzdWIKCi8vIGlzX2NyZWF0b3IKaXNjcmVhdG9yXzQ6CnByb3RvIDIgMQpmcmFtZV9kaWcgLTIKYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKc3RvcmUgMQpzdG9yZSAwCmxvYWQgMQphc3NlcnQKbG9hZCAwCmZyYW1lX2RpZyAtMQo9PQpyZXRzdWIKCi8vIGlzX29wdGVkX2luCmlzb3B0ZWRpbl81Ogpwcm90byAyIDAKZnJhbWVfZGlnIC0xCmZyYW1lX2RpZyAtMgphc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKc3RvcmUgMwpzdG9yZSAyCmxvYWQgMwphc3NlcnQKcmV0c3ViCgovLyBzZW5kX2Fzc2V0CnNlbmRhc3NldF82Ogpwcm90byA0IDAKaXR4bl9iZWdpbgpwdXNoaW50IDQgLy8gYXhmZXIKaXR4bl9maWVsZCBUeXBlRW51bQpmcmFtZV9kaWcgLTQKaXR4bl9maWVsZCBTZW5kZXIKZnJhbWVfZGlnIC0zCml0eG5fZmllbGQgQXNzZXRBbW91bnQKZnJhbWVfZGlnIC0yCml0eG5fZmllbGQgWGZlckFzc2V0CmZyYW1lX2RpZyAtMQppdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKaW50Y18wIC8vIDAKaXR4bl9maWVsZCBGZWUKaXR4bl9zdWJtaXQKcmV0c3ViCgovLyBvbl9jcmVhdGUKb25jcmVhdGVfNzoKcHJvdG8gMyAxCmludGNfMCAvLyAwCmJ5dGVjIDE0IC8vICJvd25lciIKZnJhbWVfZGlnIC0zCmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDUgLy8gImxpc3RpbmdfYXNzZXRfaWQiCmZyYW1lX2RpZyAtMgphcHBfZ2xvYmFsX3B1dApieXRlYyA3IC8vICJleGNoYW5nZV9mZWVfYWRkciIKZnJhbWVfZGlnIC0xCmFwcF9nbG9iYWxfcHV0CnB1c2hieXRlcyAweDc2NjU3MjczNjk2ZjZlIC8vICJ2ZXJzaW9uIgppbnRjXzEgLy8gMQphcHBfZ2xvYmFsX3B1dApieXRlYyAxNSAvLyAiaXNfc3RhcnRlZCIKaW50Y18wIC8vIDAKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGNfMiAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyBvcHRfaW4Kb3B0aW5fODoKcHJvdG8gMCAxCmludGNfMCAvLyAwCmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjXzIgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gc3RhcnQKc3RhcnRfOToKcHJvdG8gNiAxCmludGNfMCAvLyAwCnR4biBTZW5kZXIKZ2xvYmFsIENyZWF0b3JBZGRyZXNzCj09Ci8vIHVuYXV0aG9yaXplZAphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBTZW5kZXIKdHhuIFNlbmRlcgo9PQphc3NlcnQKdHhuIFR5cGVFbnVtCnB1c2hpbnQgNiAvLyBhcHBsCj09CmFzc2VydAp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDE2IC8vICJzdGFydChhc3NldCx1aW50NjQsdWludDY0LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCl1aW50OCIKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgVHlwZUVudW0KcHVzaGludCA0IC8vIGF4ZmVyCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIEFzc2V0UmVjZWl2ZXIKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKPT0KYXNzZXJ0CmJ5dGVjIDUgLy8gImxpc3RpbmdfYXNzZXRfaWQiCmFwcF9nbG9iYWxfZ2V0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgWGZlckFzc2V0Cj09CmFzc2VydApmcmFtZV9kaWcgLTYKdHhuYXMgQXNzZXRzCmludGNfMCAvLyAwCj4KYm56IHN0YXJ0XzlfbDYKc3RhcnRfOV9sMToKZnJhbWVfZGlnIC01CmZyYW1lX2RpZyAtNAo8CmFzc2VydApnbG9iYWwgTGF0ZXN0VGltZXN0YW1wCmZyYW1lX2RpZyAtNQo8CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFhmZXJBc3NldAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFNlbmRlcgpjYWxsc3ViIGlzY3JlYXRvcl80CmFzc2VydApieXRlYyAxNCAvLyAib3duZXIiCmFwcF9nbG9iYWxfZ2V0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgU2VuZGVyCj09CmFzc2VydApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwppbnRjXzAgLy8gMApieXRlYyA1IC8vICJsaXN0aW5nX2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldApnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwpjYWxsc3ViIHNlbmRhc3NldF82CmJ5dGVjIDYgLy8gInBheW1lbnRfYXNzZXRfaWQiCmZyYW1lX2RpZyAtNgp0eG5hcyBBc3NldHMKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgNCAvLyAidG90YWxfcXR5Igp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIEFzc2V0QW1vdW50CmFwcF9nbG9iYWxfcHV0CmJ5dGVjXzMgLy8gInJlbWFpbmluZ19xdHkiCnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgQXNzZXRBbW91bnQKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgMTEgLy8gInN0YXJ0X3RpbWUiCmZyYW1lX2RpZyAtNQphcHBfZ2xvYmFsX3B1dApieXRlYyA4IC8vICJlbmRfdGltZSIKZnJhbWVfZGlnIC00CmFwcF9nbG9iYWxfcHV0CmJ5dGVjIDkgLy8gInByaWNlIgpmcmFtZV9kaWcgLTMKYXBwX2dsb2JhbF9wdXQKYnl0ZWMgMTIgLy8gIm1heF9hbGxvd2VkX3EiCmZyYW1lX2RpZyAtMQphcHBfZ2xvYmFsX3B1dApmcmFtZV9kaWcgLTIKdHhuIFNlbmRlcgohPQpibnogc3RhcnRfOV9sNQpieXRlYyAxMCAvLyAicmV2ZW51ZV9yZWNlaXZlciIKdHhuIFNlbmRlcgphcHBfZ2xvYmFsX3B1dApzdGFydF85X2wzOgpieXRlYyA2IC8vICJwYXltZW50X2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldAppbnRjXzAgLy8gMAo+CmJ6IHN0YXJ0XzlfbDcKYnl0ZWMgNiAvLyAicGF5bWVudF9hc3NldF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTAgLy8gInJldmVudWVfcmVjZWl2ZXIiCmFwcF9nbG9iYWxfZ2V0CmNhbGxzdWIgaXNvcHRlZGluXzUKYiBzdGFydF85X2w3CnN0YXJ0XzlfbDU6CmJ5dGVjIDEwIC8vICJyZXZlbnVlX3JlY2VpdmVyIgpmcmFtZV9kaWcgLTIKYXBwX2dsb2JhbF9wdXQKYiBzdGFydF85X2wzCnN0YXJ0XzlfbDY6CmJ5dGVjIDYgLy8gInBheW1lbnRfYXNzZXRfaWQiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDcgLy8gImV4Y2hhbmdlX2ZlZV9hZGRyIgphcHBfZ2xvYmFsX2dldApjYWxsc3ViIGlzb3B0ZWRpbl81CmIgc3RhcnRfOV9sMQpzdGFydF85X2w3OgpieXRlYyAxNSAvLyAiaXNfc3RhcnRlZCIKaW50Y18xIC8vIDEKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGNfMiAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyByZWFkX3RzCnJlYWR0c18xMDoKcHJvdG8gMCAxCmludGNfMCAvLyAwCmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKZnJhbWVfYnVyeSAwCnJldHN1YgoKLy8gYWxnb19wYXltZW50X2Fzc2VydHMKYWxnb3BheW1lbnRhc3NlcnRzXzExOgpwcm90byAxIDAKYnl0ZWMgNiAvLyAicGF5bWVudF9hc3NldF9pZCIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPT0KdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBUeXBlRW51bQppbnRjXzEgLy8gcGF5Cj09CiYmCnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgVHlwZUVudW0KaW50Y18xIC8vIHBheQo9PQomJgohCmJueiBhbGdvcGF5bWVudGFzc2VydHNfMTFfbDcKYWxnb3BheW1lbnRhc3NlcnRzXzExX2wxOgp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFJlY2VpdmVyCmJ5dGVjIDEwIC8vICJyZXZlbnVlX3JlY2VpdmVyIgphcHBfZ2xvYmFsX2dldAo9PQp0eG4gR3JvdXBJbmRleAppbnRjXzMgLy8gMgorCmd0eG5zIFJlY2VpdmVyCmJ5dGVjIDcgLy8gImV4Y2hhbmdlX2ZlZV9hZGRyIgphcHBfZ2xvYmFsX2dldAo9PQomJgohCmJueiBhbGdvcGF5bWVudGFzc2VydHNfMTFfbDYKYWxnb3BheW1lbnRhc3NlcnRzXzExX2wyOgp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIEFtb3VudApieXRlYyA5IC8vICJwcmljZSIKYXBwX2dsb2JhbF9nZXQKZnJhbWVfZGlnIC0xCioKZnJhbWVfZGlnIC0xCmNhbGxzdWIgY29tcHV0ZWZlZV8zCi0KPT0KIQpibnogYWxnb3BheW1lbnRhc3NlcnRzXzExX2w1CmFsZ29wYXltZW50YXNzZXJ0c18xMV9sMzoKdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBBbW91bnQKZnJhbWVfZGlnIC0xCmNhbGxzdWIgY29tcHV0ZWZlZV8zCj09CiEKYnogYWxnb3BheW1lbnRhc3NlcnRzXzExX2w4CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE2YzY3NmYyYzIwNjY2NTY1MjA2ZTZmNzQyMDYzNmY3MjcyNjU2Mzc0IC8vICJwYXlpbmcgd2l0aCBhbGdvLCBmZWUgbm90IGNvcnJlY3QiCj09CmFzc2VydApiIGFsZ29wYXltZW50YXNzZXJ0c18xMV9sOAphbGdvcGF5bWVudGFzc2VydHNfMTFfbDU6CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE2YzY3NmYyYzIwNjE2ZDZmNzU2ZTc0MjA2ZTZmNzQyMDYzNmY3MjcyNjU2Mzc0IC8vICJwYXlpbmcgd2l0aCBhbGdvLCBhbW91bnQgbm90IGNvcnJlY3QiCj09CmFzc2VydApiIGFsZ29wYXltZW50YXNzZXJ0c18xMV9sMwphbGdvcGF5bWVudGFzc2VydHNfMTFfbDY6CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE2YzY3NmYyYzIwNzA2MTc5NmQ2NTZlNzQyMDZmNzIyMDY2NjU2NTIwNzM2NTZlNzQyMDc0NmYyMDc3NzI2ZjZlNjcyMDYxNjQ2NDcyNjU3MzczIC8vICJwYXlpbmcgd2l0aCBhbGdvLCBwYXltZW50IG9yIGZlZSBzZW50IHRvIHdyb25nIGFkZHJlc3MiCj09CmFzc2VydApiIGFsZ29wYXltZW50YXNzZXJ0c18xMV9sMgphbGdvcGF5bWVudGFzc2VydHNfMTFfbDc6CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE2YzY3NmYyMDc3Njg2NTZlMjA3NDY4NjU3OTIwNzM2ODZmNzU2YzY0NmU3NDIwNjI2NSAvLyAicGF5aW5nIHdpdGggYWxnbyB3aGVuIHRoZXkgc2hvdWxkbnQgYmUiCj09CmFzc2VydApiIGFsZ29wYXltZW50YXNzZXJ0c18xMV9sMQphbGdvcGF5bWVudGFzc2VydHNfMTFfbDg6CnJldHN1YgoKLy8gYXNzZXRfcGF5bWVudF9hc3NlcnRzCmFzc2V0cGF5bWVudGFzc2VydHNfMTI6CnByb3RvIDEgMApieXRlYyA2IC8vICJwYXltZW50X2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFhmZXJBc3NldAo9PQpieXRlYyA2IC8vICJwYXltZW50X2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldAp0eG4gR3JvdXBJbmRleAppbnRjXzMgLy8gMgorCmd0eG5zIFhmZXJBc3NldAo9PQomJgohCmJueiBhc3NldHBheW1lbnRhc3NlcnRzXzEyX2w3CmFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDE6CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgQXNzZXRSZWNlaXZlcgpieXRlYyAxMCAvLyAicmV2ZW51ZV9yZWNlaXZlciIKYXBwX2dsb2JhbF9nZXQKPT0KdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBBc3NldFJlY2VpdmVyCmJ5dGVjIDcgLy8gImV4Y2hhbmdlX2ZlZV9hZGRyIgphcHBfZ2xvYmFsX2dldAo9PQomJgohCmJueiBhc3NldHBheW1lbnRhc3NlcnRzXzEyX2w2CmFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDI6CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgQXNzZXRBbW91bnQKYnl0ZWMgOSAvLyAicHJpY2UiCmFwcF9nbG9iYWxfZ2V0CmZyYW1lX2RpZyAtMQoqCmZyYW1lX2RpZyAtMQpjYWxsc3ViIGNvbXB1dGVmZWVfMwotCj09CiEKYm56IGFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDUKYXNzZXRwYXltZW50YXNzZXJ0c18xMl9sMzoKdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBBc3NldEFtb3VudApmcmFtZV9kaWcgLTEKY2FsbHN1YiBjb21wdXRlZmVlXzMKPT0KIQpieiBhc3NldHBheW1lbnRhc3NlcnRzXzEyX2w4CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE3ODY2NjU3MjJjMjA2NjY1NjUyMDZlNmY3NDIwNjM2ZjcyNzI2NTYzNzQgLy8gInBheWluZyB3aXRoIGF4ZmVyLCBmZWUgbm90IGNvcnJlY3QiCj09CmFzc2VydApiIGFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDgKYXNzZXRwYXltZW50YXNzZXJ0c18xMl9sNToKYnl0ZWNfMCAvLyAiIgpwdXNoYnl0ZXMgMHg3MDYxNzk2OTZlNjcyMDc3Njk3NDY4MjA2MTc4NjY2NTcyMmMyMDYxNmQ2Zjc1NmU3NDIwNmU2Zjc0MjA2MzZmNzI3MjY1NjM3NCAvLyAicGF5aW5nIHdpdGggYXhmZXIsIGFtb3VudCBub3QgY29ycmVjdCIKPT0KYXNzZXJ0CmIgYXNzZXRwYXltZW50YXNzZXJ0c18xMl9sMwphc3NldHBheW1lbnRhc3NlcnRzXzEyX2w2OgpieXRlY18wIC8vICIiCnB1c2hieXRlcyAweDcwNjE3OTY5NmU2NzIwNzc2OTc0NjgyMDYxNzg2NjY1NzIyYzIwNzA2MTc5NmQ2NTZlNzQyMDZmNzIyMDY2NjU2NTIwNzM2NTZlNzQyMDc0NmYyMDc3NzI2ZjZlNjcyMDYxNjQ2NDcyNjU3MzczIC8vICJwYXlpbmcgd2l0aCBheGZlciwgcGF5bWVudCBvciBmZWUgc2VudCB0byB3cm9uZyBhZGRyZXNzIgo9PQphc3NlcnQKYiBhc3NldHBheW1lbnRhc3NlcnRzXzEyX2wyCmFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDc6CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NzA2MTc5Njk2ZTY3MjA3NzY5NzQ2ODIwNjE3ODY2NjU3MjJjMjA2NjY1NjUyMDZlNmY3NDIwNzM2MTZkNjUyMDYxNzM3MzY1NzQyMDY5NjQyMDYxNzMyMDcwNjE3OTZkNjU2ZTc0IC8vICJwYXlpbmcgd2l0aCBheGZlciwgZmVlIG5vdCBzYW1lIGFzc2V0IGlkIGFzIHBheW1lbnQiCj09CmFzc2VydApiIGFzc2V0cGF5bWVudGFzc2VydHNfMTJfbDEKYXNzZXRwYXltZW50YXNzZXJ0c18xMl9sODoKcmV0c3ViCgovLyBidXkKYnV5XzEzOgpwcm90byAxIDEKaW50Y18wIC8vIDAKYnl0ZWMgMTIgLy8gIm1heF9hbGxvd2VkX3EiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj4KYm56IGJ1eV8xM19sMTEKaW50Y18wIC8vIDAKc3RvcmUgNApidXlfMTNfbDI6Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYnl0ZWMgMTEgLy8gInN0YXJ0X3RpbWUiCmFwcF9nbG9iYWxfZ2V0Cj4KZ2xvYmFsIExhdGVzdFRpbWVzdGFtcApieXRlYyA4IC8vICJlbmRfdGltZSIKYXBwX2dsb2JhbF9nZXQKPAomJgohCmJueiBidXlfMTNfbDEwCmJ1eV8xM19sMzoKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBTZW5kZXIKdHhuIFNlbmRlcgo9PQp0eG4gR3JvdXBJbmRleAppbnRjXzMgLy8gMgorCmd0eG5zIFNlbmRlcgp0eG4gU2VuZGVyCj09CiYmCnR4biBUeXBlRW51bQpwdXNoaW50IDYgLy8gYXBwbAo9PQomJgp0eG5hIEFwcGxpY2F0aW9uQXJncyAwCmJ5dGVjIDE3IC8vICJidXkodWludDY0KXVpbnQ4Igo9PQomJgp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFR5cGVFbnVtCmludGNfMSAvLyBwYXkKPT0KdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBUeXBlRW51bQppbnRjXzEgLy8gcGF5Cj09CiYmCnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgVHlwZUVudW0KcHVzaGludCA0IC8vIGF4ZmVyCj09CnR4biBHcm91cEluZGV4CmludGNfMyAvLyAyCisKZ3R4bnMgVHlwZUVudW0KcHVzaGludCA0IC8vIGF4ZmVyCj09CiYmCnx8CiYmCiEKYm56IGJ1eV8xM19sOQpidXlfMTNfbDQ6CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgVHlwZUVudW0KaW50Y18xIC8vIHBheQo9PQpibnogYnV5XzEzX2w4CmZyYW1lX2RpZyAtMQpjYWxsc3ViIGFzc2V0cGF5bWVudGFzc2VydHNfMTIKdHhuIEdyb3VwSW5kZXgKaW50Y18zIC8vIDIKKwpndHhucyBUeXBlRW51bQpwdXNoaW50IDQgLy8gYXhmZXIKPT0KYXNzZXJ0Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmZyYW1lX2RpZyAtMQpieXRlYyA1IC8vICJsaXN0aW5nX2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldAp0eG4gU2VuZGVyCmNhbGxzdWIgc2VuZGFzc2V0XzYKYnl0ZWNfMyAvLyAicmVtYWluaW5nX3F0eSIKYnl0ZWNfMyAvLyAicmVtYWluaW5nX3F0eSIKYXBwX2dsb2JhbF9nZXQKZnJhbWVfZGlnIC0xCi0KYXBwX2dsb2JhbF9wdXQKYnV5XzEzX2w2OgpieXRlYyAxMiAvLyAibWF4X2FsbG93ZWRfcSIKYXBwX2dsb2JhbF9nZXQKaW50Y18wIC8vIDAKPgpieiBidXlfMTNfbDE2CnR4biBTZW5kZXIKbG9hZCA0CmZyYW1lX2RpZyAtMQorCml0b2IKYm94X3B1dApiIGJ1eV8xM19sMTYKYnV5XzEzX2w4OgpmcmFtZV9kaWcgLTEKY2FsbHN1YiBhbGdvcGF5bWVudGFzc2VydHNfMTEKZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKZnJhbWVfZGlnIC0xCmJ5dGVjIDUgLy8gImxpc3RpbmdfYXNzZXRfaWQiCmFwcF9nbG9iYWxfZ2V0CnR4biBTZW5kZXIKY2FsbHN1YiBzZW5kYXNzZXRfNgpieXRlY18zIC8vICJyZW1haW5pbmdfcXR5IgpieXRlY18zIC8vICJyZW1haW5pbmdfcXR5IgphcHBfZ2xvYmFsX2dldApmcmFtZV9kaWcgLTEKLQphcHBfZ2xvYmFsX3B1dApiIGJ1eV8xM19sNgpidXlfMTNfbDk6CmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NjI3NTc5MjA2ZDc1NzM3NDIwNjI2NTIwNjM2MTZjNmM2NTY0MjA3NzY5NzQ2ODIwMzMyMDc0Nzg2ZTczMmMyMDMxMjA2MTcwNzAyMDYzNjE2YzZjMjAyYjIwMzI3MDYxNzk2ZDY1NmU3NDczN2M2MTc4NjY2NTcyMjAgLy8gImJ1eSBtdXN0IGJlIGNhbGxlZCB3aXRoIDMgdHhucywgMSBhcHAgY2FsbCArIDJwYXltZW50c3xheGZlciAiCj09CmFzc2VydApiIGJ1eV8xM19sNApidXlfMTNfbDEwOgpieXRlY18wIC8vICIiCnB1c2hieXRlcyAweDczNjE2YzY1MjA2OTczMjA2ZTZmNzQyMDYzNzU3MjcyNjU2ZTc0NmM3OTIwNzI3NTZlNmU2OTZlNjcgLy8gInNhbGUgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nIgo9PQphc3NlcnQKYiBidXlfMTNfbDMKYnV5XzEzX2wxMToKY2FsbHN1YiBzYWZlYm94cmVhZF8yCmludGNfMCAvLyAwCj4KYm56IGJ1eV8xM19sMTUKaW50Y18wIC8vIDAKc3RvcmUgNApidXlfMTNfbDEzOgpsb2FkIDQKZnJhbWVfZGlnIC0xCisKYnl0ZWMgMTIgLy8gIm1heF9hbGxvd2VkX3EiCmFwcF9nbG9iYWxfZ2V0Cjw9CiEKYnogYnV5XzEzX2wyCmJ5dGVjXzAgLy8gIiIKcHVzaGJ5dGVzIDB4NjI3NTc5MjA2NTc4NjM2NTY1NjQ3MzIwNmQ2MTc4Njk2ZDc1NmQyMDYxNmM2YzZmNzc2NTY0MjA3MTc1NjE2ZTc0Njk3NDc5IC8vICJidXkgZXhjZWVkcyBtYXhpbXVtIGFsbG93ZWQgcXVhbnRpdHkiCj09CmFzc2VydApiIGJ1eV8xM19sMgpidXlfMTNfbDE1OgpjYWxsc3ViIHNhZmVib3hyZWFkXzIKc3RvcmUgNApiIGJ1eV8xM19sMTMKYnV5XzEzX2wxNjoKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGNfMiAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyB1cGRhdGVfc3RhcnRfdGltZQp1cGRhdGVzdGFydHRpbWVfMTQ6CnByb3RvIDEgMQppbnRjXzAgLy8gMAp0eG4gU2VuZGVyCmdsb2JhbCBDcmVhdG9yQWRkcmVzcwo9PQovLyB1bmF1dGhvcml6ZWQKYXNzZXJ0CmJ5dGVjXzMgLy8gInJlbWFpbmluZ19xdHkiCmFwcF9nbG9iYWxfZ2V0CmJ5dGVjIDQgLy8gInRvdGFsX3F0eSIKYXBwX2dsb2JhbF9nZXQKPT0KYXNzZXJ0Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYnl0ZWMgMTEgLy8gInN0YXJ0X3RpbWUiCmFwcF9nbG9iYWxfZ2V0CjwKYXNzZXJ0Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKZnJhbWVfZGlnIC0xCjwKYXNzZXJ0CmJ5dGVjIDExIC8vICJzdGFydF90aW1lIgpmcmFtZV9kaWcgLTEKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGNfMiAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyB1cGRhdGVfZW5kX3RpbWUKdXBkYXRlZW5kdGltZV8xNToKcHJvdG8gMSAxCmludGNfMCAvLyAwCnR4biBTZW5kZXIKZ2xvYmFsIENyZWF0b3JBZGRyZXNzCj09Ci8vIHVuYXV0aG9yaXplZAphc3NlcnQKY2FsbHN1YiBjb3JldXBkYXRlYXNzZXJ0c18xCmJ5dGVjIDggLy8gImVuZF90aW1lIgpmcmFtZV9kaWcgLTEKYXBwX2dsb2JhbF9wdXQKaW50Y18xIC8vIDEKZnJhbWVfYnVyeSAwCmZyYW1lX2RpZyAwCmludGNfMiAvLyAyNTYKPAphc3NlcnQKcmV0c3ViCgovLyB1cGRhdGVfcHJpY2UKdXBkYXRlcHJpY2VfMTY6CnByb3RvIDEgMQppbnRjXzAgLy8gMAp0eG4gU2VuZGVyCmdsb2JhbCBDcmVhdG9yQWRkcmVzcwo9PQovLyB1bmF1dGhvcml6ZWQKYXNzZXJ0CmNhbGxzdWIgY29yZXVwZGF0ZWFzc2VydHNfMQpieXRlYyA5IC8vICJwcmljZSIKZnJhbWVfZGlnIC0xCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjXzIgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gdXBkYXRlX3BheW1lbnRfYXNzZXQKdXBkYXRlcGF5bWVudGFzc2V0XzE3Ogpwcm90byAxIDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpnbG9iYWwgQ3JlYXRvckFkZHJlc3MKPT0KLy8gdW5hdXRob3JpemVkCmFzc2VydApjYWxsc3ViIGNvcmV1cGRhdGVhc3NlcnRzXzEKYnl0ZWMgNiAvLyAicGF5bWVudF9hc3NldF9pZCIKZnJhbWVfZGlnIC0xCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjXzIgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gdXBkYXRlX2V4Y2hhbmdlX2ZlZV9hZGRyCnVwZGF0ZWV4Y2hhbmdlZmVlYWRkcl8xODoKcHJvdG8gMSAxCmludGNfMCAvLyAwCnR4biBTZW5kZXIKYnl0ZWMgNyAvLyAiZXhjaGFuZ2VfZmVlX2FkZHIiCmFwcF9nbG9iYWxfZ2V0Cj09CmFzc2VydApieXRlYyA3IC8vICJleGNoYW5nZV9mZWVfYWRkciIKZnJhbWVfZGlnIC0xCmFwcF9nbG9iYWxfcHV0CnJldHN1YgoKLy8gdXBkYXRlX3F1YW50aXR5CnVwZGF0ZXF1YW50aXR5XzE5Ogpwcm90byAxIDEKaW50Y18wIC8vIDAKdHhuIFNlbmRlcgpnbG9iYWwgQ3JlYXRvckFkZHJlc3MKPT0KLy8gdW5hdXRob3JpemVkCmFzc2VydApjYWxsc3ViIGNvcmV1cGRhdGVhc3NlcnRzXzEKZnJhbWVfZGlnIC0xCmJ5dGVjIDQgLy8gInRvdGFsX3F0eSIKYXBwX2dsb2JhbF9nZXQKIT0KYXNzZXJ0CmZyYW1lX2RpZyAtMQppbnRjXzAgLy8gMAo+CmFzc2VydApmcmFtZV9kaWcgLTEKYnl0ZWMgNCAvLyAidG90YWxfcXR5IgphcHBfZ2xvYmFsX2dldAo+CmJueiB1cGRhdGVxdWFudGl0eV8xOV9sMgp0eG4gU2VuZGVyCmdsb2JhbCBDcmVhdG9yQWRkcmVzcwo9PQphc3NlcnQKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMApieXRlYyAxMyAvLyAidXBkYXRlX3F1YW50aXR5KHVpbnQ2NCl1aW50OCIKPT0KYXNzZXJ0Cmdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCmJ5dGVjIDQgLy8gInRvdGFsX3F0eSIKYXBwX2dsb2JhbF9nZXQKZnJhbWVfZGlnIC0xCi0KYnl0ZWMgNSAvLyAibGlzdGluZ19hc3NldF9pZCIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgMTQgLy8gIm93bmVyIgphcHBfZ2xvYmFsX2dldApjYWxsc3ViIHNlbmRhc3NldF82CmIgdXBkYXRlcXVhbnRpdHlfMTlfbDMKdXBkYXRlcXVhbnRpdHlfMTlfbDI6CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgU2VuZGVyCnR4biBTZW5kZXIKPT0KYXNzZXJ0CnR4bmEgQXBwbGljYXRpb25BcmdzIDAKYnl0ZWMgMTMgLy8gInVwZGF0ZV9xdWFudGl0eSh1aW50NjQpdWludDgiCj09CmFzc2VydAp0eG4gR3JvdXBJbmRleAppbnRjXzEgLy8gMQorCmd0eG5zIFR5cGVFbnVtCnB1c2hpbnQgNCAvLyBheGZlcgo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBYZmVyQXNzZXQKYnl0ZWMgNSAvLyAibGlzdGluZ19hc3NldF9pZCIKYXBwX2dsb2JhbF9nZXQKPT0KYXNzZXJ0CnR4biBHcm91cEluZGV4CmludGNfMSAvLyAxCisKZ3R4bnMgQXNzZXRSZWNlaXZlcgpnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwo9PQphc3NlcnQKdHhuIEdyb3VwSW5kZXgKaW50Y18xIC8vIDEKKwpndHhucyBBc3NldEFtb3VudApmcmFtZV9kaWcgLTEKYnl0ZWMgNCAvLyAidG90YWxfcXR5IgphcHBfZ2xvYmFsX2dldAotCj09CmFzc2VydAp1cGRhdGVxdWFudGl0eV8xOV9sMzoKYnl0ZWMgNCAvLyAidG90YWxfcXR5IgpmcmFtZV9kaWcgLTEKYXBwX2dsb2JhbF9wdXQKYnl0ZWNfMyAvLyAicmVtYWluaW5nX3F0eSIKZnJhbWVfZGlnIC0xCmFwcF9nbG9iYWxfcHV0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjXzIgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gZGVsZXRlX2JveGVzCmRlbGV0ZWJveGVzXzIwOgpwcm90byA4IDAKdHhuIFNlbmRlcgpnbG9iYWwgQ3JlYXRvckFkZHJlc3MKPT0KLy8gdW5hdXRob3JpemVkCmFzc2VydApmcmFtZV9kaWcgLTgKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDE1CmRlbGV0ZWJveGVzXzIwX2wxOgpmcmFtZV9kaWcgLTcKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDE0CmRlbGV0ZWJveGVzXzIwX2wyOgpmcmFtZV9kaWcgLTYKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDEzCmRlbGV0ZWJveGVzXzIwX2wzOgpmcmFtZV9kaWcgLTUKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDEyCmRlbGV0ZWJveGVzXzIwX2w0OgpmcmFtZV9kaWcgLTQKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDExCmRlbGV0ZWJveGVzXzIwX2w1OgpmcmFtZV9kaWcgLTMKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDEwCmRlbGV0ZWJveGVzXzIwX2w2OgpmcmFtZV9kaWcgLTIKZXh0cmFjdCAyIDAKYnl0ZWNfMCAvLyAiIgohPQpibnogZGVsZXRlYm94ZXNfMjBfbDkKZGVsZXRlYm94ZXNfMjBfbDc6CmZyYW1lX2RpZyAtMQpleHRyYWN0IDIgMApieXRlY18wIC8vICIiCiE9CmJ6IGRlbGV0ZWJveGVzXzIwX2wxNgpmcmFtZV9kaWcgLTEKZXh0cmFjdCAyIDAKY2FsbHN1YiBkZWxldGVzaW5nbGVib3hfMApiIGRlbGV0ZWJveGVzXzIwX2wxNgpkZWxldGVib3hlc18yMF9sOToKZnJhbWVfZGlnIC0yCmV4dHJhY3QgMiAwCmNhbGxzdWIgZGVsZXRlc2luZ2xlYm94XzAKYiBkZWxldGVib3hlc18yMF9sNwpkZWxldGVib3hlc18yMF9sMTA6CmZyYW1lX2RpZyAtMwpleHRyYWN0IDIgMApjYWxsc3ViIGRlbGV0ZXNpbmdsZWJveF8wCmIgZGVsZXRlYm94ZXNfMjBfbDYKZGVsZXRlYm94ZXNfMjBfbDExOgpmcmFtZV9kaWcgLTQKZXh0cmFjdCAyIDAKY2FsbHN1YiBkZWxldGVzaW5nbGVib3hfMApiIGRlbGV0ZWJveGVzXzIwX2w1CmRlbGV0ZWJveGVzXzIwX2wxMjoKZnJhbWVfZGlnIC01CmV4dHJhY3QgMiAwCmNhbGxzdWIgZGVsZXRlc2luZ2xlYm94XzAKYiBkZWxldGVib3hlc18yMF9sNApkZWxldGVib3hlc18yMF9sMTM6CmZyYW1lX2RpZyAtNgpleHRyYWN0IDIgMApjYWxsc3ViIGRlbGV0ZXNpbmdsZWJveF8wCmIgZGVsZXRlYm94ZXNfMjBfbDMKZGVsZXRlYm94ZXNfMjBfbDE0OgpmcmFtZV9kaWcgLTcKZXh0cmFjdCAyIDAKY2FsbHN1YiBkZWxldGVzaW5nbGVib3hfMApiIGRlbGV0ZWJveGVzXzIwX2wyCmRlbGV0ZWJveGVzXzIwX2wxNToKZnJhbWVfZGlnIC04CmV4dHJhY3QgMiAwCmNhbGxzdWIgZGVsZXRlc2luZ2xlYm94XzAKYiBkZWxldGVib3hlc18yMF9sMQpkZWxldGVib3hlc18yMF9sMTY6CnJldHN1YgoKLy8gZGVsZXRlCmRlbGV0ZV8yMToKcHJvdG8gMCAxCmludGNfMCAvLyAwCnR4biBTZW5kZXIKZ2xvYmFsIENyZWF0b3JBZGRyZXNzCj09Ci8vIHVuYXV0aG9yaXplZAphc3NlcnQKYnl0ZWMgMTUgLy8gImlzX3N0YXJ0ZWQiCmFwcF9nbG9iYWxfZ2V0CmludGNfMCAvLyAwCj09Cmdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKYnl0ZWMgOCAvLyAiZW5kX3RpbWUiCmFwcF9nbG9iYWxfZ2V0Cj4KfHwKYnl0ZWNfMyAvLyAicmVtYWluaW5nX3F0eSIKYXBwX2dsb2JhbF9nZXQKYnl0ZWMgNCAvLyAidG90YWxfcXR5IgphcHBfZ2xvYmFsX2dldAo9PQp8fAphc3NlcnQKaXR4bl9iZWdpbgpwdXNoaW50IDQgLy8gYXhmZXIKaXR4bl9maWVsZCBUeXBlRW51bQpieXRlYyA1IC8vICJsaXN0aW5nX2Fzc2V0X2lkIgphcHBfZ2xvYmFsX2dldAppdHhuX2ZpZWxkIFhmZXJBc3NldAp0eG4gU2VuZGVyCml0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEZlZQppbnRjXzAgLy8gMAppdHhuX2ZpZWxkIEFzc2V0QW1vdW50CnR4biBTZW5kZXIKaXR4bl9maWVsZCBBc3NldENsb3NlVG8KaXR4bl9zdWJtaXQKaXR4bl9iZWdpbgppbnRjXzEgLy8gcGF5Cml0eG5fZmllbGQgVHlwZUVudW0KZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKaXR4bl9maWVsZCBTZW5kZXIKaW50Y18wIC8vIDAKaXR4bl9maWVsZCBBbW91bnQKdHhuIFNlbmRlcgppdHhuX2ZpZWxkIFJlY2VpdmVyCmludGNfMCAvLyAwCml0eG5fZmllbGQgRmVlCnR4biBTZW5kZXIKaXR4bl9maWVsZCBDbG9zZVJlbWFpbmRlclRvCml0eG5fc3VibWl0CmludGNfMSAvLyAxCmZyYW1lX2J1cnkgMApmcmFtZV9kaWcgMAppbnRjXzIgLy8gMjU2CjwKYXNzZXJ0CnJldHN1YgoKLy8gb25fY3JlYXRlX2Nhc3RlcgpvbmNyZWF0ZWNhc3Rlcl8yMjoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmJ5dGVjXzAgLy8gIiIKaW50Y18wIC8vIDAKYnl0ZWNfMCAvLyAiIgp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmZyYW1lX2J1cnkgMQp0eG5hIEFwcGxpY2F0aW9uQXJncyAyCmJ0b2kKZnJhbWVfYnVyeSAyCnR4bmEgQXBwbGljYXRpb25BcmdzIDMKZnJhbWVfYnVyeSAzCmZyYW1lX2RpZyAxCmZyYW1lX2RpZyAyCmZyYW1lX2RpZyAzCmNhbGxzdWIgb25jcmVhdGVfNwpmcmFtZV9idXJ5IDAKYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CmJ5dGVjXzIgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyBvcHRfaW5fY2FzdGVyCm9wdGluY2FzdGVyXzIzOgpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBvcHRpbl84CmZyYW1lX2J1cnkgMApieXRlY18xIC8vIDB4MTUxZjdjNzUKYnl0ZWNfMiAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIHN0YXJ0X2Nhc3RlcgpzdGFydGNhc3Rlcl8yNDoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmR1cG4gNApieXRlY18wIC8vICIiCmludGNfMCAvLyAwCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKaW50Y18wIC8vIDAKZ2V0Ynl0ZQpmcmFtZV9idXJ5IDEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgpidG9pCmZyYW1lX2J1cnkgMgp0eG5hIEFwcGxpY2F0aW9uQXJncyAzCmJ0b2kKZnJhbWVfYnVyeSAzCnR4bmEgQXBwbGljYXRpb25BcmdzIDQKYnRvaQpmcmFtZV9idXJ5IDQKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQpmcmFtZV9idXJ5IDUKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgpidG9pCmZyYW1lX2J1cnkgNgpmcmFtZV9kaWcgMQpmcmFtZV9kaWcgMgpmcmFtZV9kaWcgMwpmcmFtZV9kaWcgNApmcmFtZV9kaWcgNQpmcmFtZV9kaWcgNgpjYWxsc3ViIHN0YXJ0XzkKZnJhbWVfYnVyeSAwCmJ5dGVjXzEgLy8gMHgxNTFmN2M3NQpieXRlY18yIC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1YgoKLy8gcmVhZF90c19jYXN0ZXIKcmVhZHRzY2FzdGVyXzI1Ogpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiByZWFkdHNfMTAKZnJhbWVfYnVyeSAwCmJ5dGVjXzEgLy8gMHgxNTFmN2M3NQpmcmFtZV9kaWcgMAppdG9iCmNvbmNhdApsb2cKcmV0c3ViCgovLyBidXlfY2FzdGVyCmJ1eWNhc3Rlcl8yNjoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmR1cAp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmJ0b2kKZnJhbWVfYnVyeSAxCmZyYW1lX2RpZyAxCmNhbGxzdWIgYnV5XzEzCmZyYW1lX2J1cnkgMApieXRlY18xIC8vIDB4MTUxZjdjNzUKYnl0ZWNfMiAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIHVwZGF0ZV9zdGFydF90aW1lX2Nhc3Rlcgp1cGRhdGVzdGFydHRpbWVjYXN0ZXJfMjc6CnByb3RvIDAgMAppbnRjXzAgLy8gMApkdXAKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQpidG9pCmZyYW1lX2J1cnkgMQpmcmFtZV9kaWcgMQpjYWxsc3ViIHVwZGF0ZXN0YXJ0dGltZV8xNApmcmFtZV9idXJ5IDAKYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CmJ5dGVjXzIgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyB1cGRhdGVfZW5kX3RpbWVfY2FzdGVyCnVwZGF0ZWVuZHRpbWVjYXN0ZXJfMjg6CnByb3RvIDAgMAppbnRjXzAgLy8gMApkdXAKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQpidG9pCmZyYW1lX2J1cnkgMQpmcmFtZV9kaWcgMQpjYWxsc3ViIHVwZGF0ZWVuZHRpbWVfMTUKZnJhbWVfYnVyeSAwCmJ5dGVjXzEgLy8gMHgxNTFmN2M3NQpieXRlY18yIC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1YgoKLy8gdXBkYXRlX3ByaWNlX2Nhc3Rlcgp1cGRhdGVwcmljZWNhc3Rlcl8yOToKcHJvdG8gMCAwCmludGNfMCAvLyAwCmR1cAp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmJ0b2kKZnJhbWVfYnVyeSAxCmZyYW1lX2RpZyAxCmNhbGxzdWIgdXBkYXRlcHJpY2VfMTYKZnJhbWVfYnVyeSAwCmJ5dGVjXzEgLy8gMHgxNTFmN2M3NQpieXRlY18yIC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1YgoKLy8gdXBkYXRlX3BheW1lbnRfYXNzZXRfY2FzdGVyCnVwZGF0ZXBheW1lbnRhc3NldGNhc3Rlcl8zMDoKcHJvdG8gMCAwCmludGNfMCAvLyAwCmR1cAp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmJ0b2kKZnJhbWVfYnVyeSAxCmZyYW1lX2RpZyAxCmNhbGxzdWIgdXBkYXRlcGF5bWVudGFzc2V0XzE3CmZyYW1lX2J1cnkgMApieXRlY18xIC8vIDB4MTUxZjdjNzUKYnl0ZWNfMiAvLyAweDAwCmludGNfMCAvLyAwCmZyYW1lX2RpZyAwCnNldGJ5dGUKY29uY2F0CmxvZwpyZXRzdWIKCi8vIHVwZGF0ZV9leGNoYW5nZV9mZWVfYWRkcl9jYXN0ZXIKdXBkYXRlZXhjaGFuZ2VmZWVhZGRyY2FzdGVyXzMxOgpwcm90byAwIDAKaW50Y18wIC8vIDAKYnl0ZWNfMCAvLyAiIgp0eG5hIEFwcGxpY2F0aW9uQXJncyAxCmZyYW1lX2J1cnkgMQpmcmFtZV9kaWcgMQpjYWxsc3ViIHVwZGF0ZWV4Y2hhbmdlZmVlYWRkcl8xOApmcmFtZV9idXJ5IDAKYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CmJ5dGVjXzIgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyB1cGRhdGVfcXVhbnRpdHlfY2FzdGVyCnVwZGF0ZXF1YW50aXR5Y2FzdGVyXzMyOgpwcm90byAwIDAKaW50Y18wIC8vIDAKZHVwCnR4bmEgQXBwbGljYXRpb25BcmdzIDEKYnRvaQpmcmFtZV9idXJ5IDEKZnJhbWVfZGlnIDEKY2FsbHN1YiB1cGRhdGVxdWFudGl0eV8xOQpmcmFtZV9idXJ5IDAKYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CmJ5dGVjXzIgLy8gMHgwMAppbnRjXzAgLy8gMApmcmFtZV9kaWcgMApzZXRieXRlCmNvbmNhdApsb2cKcmV0c3ViCgovLyBkZWxldGVfYm94ZXNfY2FzdGVyCmRlbGV0ZWJveGVzY2FzdGVyXzMzOgpwcm90byAwIDAKYnl0ZWNfMCAvLyAiIgpkdXBuIDcKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQpmcmFtZV9idXJ5IDAKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgpmcmFtZV9idXJ5IDEKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwpmcmFtZV9idXJ5IDIKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNApmcmFtZV9idXJ5IDMKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQpmcmFtZV9idXJ5IDQKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgpmcmFtZV9idXJ5IDUKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNwpmcmFtZV9idXJ5IDYKdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOApmcmFtZV9idXJ5IDcKZnJhbWVfZGlnIDAKZnJhbWVfZGlnIDEKZnJhbWVfZGlnIDIKZnJhbWVfZGlnIDMKZnJhbWVfZGlnIDQKZnJhbWVfZGlnIDUKZnJhbWVfZGlnIDYKZnJhbWVfZGlnIDcKY2FsbHN1YiBkZWxldGVib3hlc18yMApyZXRzdWIKCi8vIGRlbGV0ZV9jYXN0ZXIKZGVsZXRlY2FzdGVyXzM0Ogpwcm90byAwIDAKaW50Y18wIC8vIDAKY2FsbHN1YiBkZWxldGVfMjEKZnJhbWVfYnVyeSAwCmJ5dGVjXzEgLy8gMHgxNTFmN2M3NQpieXRlY18yIC8vIDB4MDAKaW50Y18wIC8vIDAKZnJhbWVfZGlnIDAKc2V0Ynl0ZQpjb25jYXQKbG9nCnJldHN1Yg==
```

```
// Clear State Program (BASE 64)
BYEB
```

### Creator Fee Contract

| Creator Fee App ID | [829144306](https://algoexplorer.io/application/829144306) |
| ------------------ | ---------------------------------------------------------- |

```
// Approval Program (BASE 64)
BSACAAEmAw1hZG1pbl9hY2NvdW50EG9wdGVkaW5fYWNjb3VudHMQcm95YWx0aWVzX2Ftb3VudEIAIjEZIhKJMRkjEokxGYECEokxGYEFEokxAChkEokxADIIYYkxGyITRIAEgEyB3DYaABJAAESABE9+nnQ2GgASQABOgAQpMU2VNhoAEkAAVIAEnHie2TYaABJAAFmABGppH+I2GgASQABngAQNHsRWNhoAEkAAZ0IAcTEYIhJEiP+ARCg2GgEXwBxnKSJnQgBYiP9uiP+BEEQoNhoBF8AcZ0IARYj/YEQxACoiZilJZCMIZ0IAM4j/SYj/YhBENhoBF0mB3AsORDEAKk8CZkIAGIj/OEQpSWQjCWdCAAuI/zGI/zQQREIAACNDIkM=
```

```
// Clear State Program (BASE 64)
BYEB
```


# Audits

Security audits conducted.

## Runtime Verification

### March 2022

* Blog Post: <https://runtimeverification.com/blog/runtime-verification-audits-exa-finance-s-baskets-smart-contract>
* Audit Report: <https://github.com/runtimeverification/publications/blob/main/reports/smart-contracts/EXA_Finance.pdf>

## Soft Audits

### 2023-2024

We have also conducted soft audits on our new contracts developed during 2023–2024. We would like to extend our thanks to:

* The Vestige Team
* D13, Core Engineering Lead at Algorand Foundation
* Steve Ferrigno, Software Engineer at Algorand Foundation
* Mark Keane, CTO at Lofty AI


