@argonprotocol/mainchain 1.4.4 → 1.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/index.js.map +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/mainchain/mainchain/client/nodejs/lib/index.cjs","../src/index.ts","../metadata.json","../runtime_version.json","../genesis.json","../src/WageProtector.ts","../src/utils.ts","../src/TxResult.ts","../src/TxSubmitter.ts","../src/keyringUtils.ts","../src/header.ts","../src/Vault.ts","../src/convert.ts","../src/BitcoinLock.ts","../src/PriceIndex.ts","../src/EvmContracts.ts","../../../chains/ethereum/contracts/artifacts/contracts/ArgonToken.sol/ArgonToken.json","../../../chains/ethereum/contracts/artifacts/contracts/ArgonotToken.sol/ArgonotToken.json","../../../chains/ethereum/contracts/artifacts/contracts/MintingGateway.sol/MintingGateway.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json","../../../chains/ethereum/contracts/generated.ts","../../../chains/ethereum/contracts/hashing.ts","../../../chains/ethereum/contracts/index.ts","../src/EthereumProof.ts","../src/EthereumExecution.ts","../src/EthereumGatewayActivity.ts","../src/EthereumGatewayActivityProof.ts","../src/EthereumBeaconSync.ts"],"names":["result","BigNumber","SATS_PER_BTC","hashMintingGatewayTransferOutOfArgonRequest","hashMintingGatewayMintingAuthorization","receipts"],"mappings":"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A;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AhBo7CU;AACA;AiBnlEV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AjBqlEU;AACA;AkBpvFV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACgB,gBAAA;AACZ,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,gBAAA;AACA,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,gBAAA;AACA,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,cAAA;AACF,cAAA;AACgB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AlBsvFU;AACA;AmB94IV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AnBg5IU;AACA;AoBvhJV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IA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ACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACJ,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;A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AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAES;AACA,EAAA;AACT;AAEA;AAIM,EAAA;AAEC,EAAA;AACH,IAAA;AACE,MAAA;AACA,MAAA;AACA,IAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AAEF,EAAA;AACI,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAES;AAID,EAAA;AACA,EAAA;AAED,EAAA;AACG,IAAA;AACR,EAAA;AACK,EAAA;AACG,IAAA;AACR,EAAA;AAEM,EAAA;AAEF,EAAA;AACI,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAEA;AACM,EAAA;AAEC,EAAA;AACG,IAAA;AAUD,IAAA;AACH,MAAA;AACF,IAAA;AAEA,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACI,MAAA;AACF,QAAA;AACF,MAAA;AAEA,MAAA;AACD,IAAA;AACD,IAAA;AACF,EAAA;AAEI,EAAA;AACF,IAAA;AACF,EAAA;AACE,IAAA;AACM,IAAA;AACR,EAAA;AACF;AAES;AAEL,EAAA;AAEJ;AAES;AACD,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AAEJ,IAAA;AACE,MAAA;AACF,IAAA;AAEA,IAAA;AACE,EAAA;AAEG,EAAA;AACT;AAEA;AACQ,EAAA;AACA,IAAA;AACN,EAAA;AAEK,EAAA;AACG,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEQ,EAAA;AACV;AAES;AACD,EAAA;AAGJ,EAAA;AAGJ;A5BkzOU;AACA;ACxwPD;AAGA;AACT;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACK;AA+BP;AACQ,EAAA;AACR;AAQA;AACM,EAAA;AACA,EAAA;AACF,IAAA;AACK,EAAA;AACL,IAAA;AACF,EAAA;AAEA,EAAA;AACQ,EAAA;AAER,EAAA;AACE,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAEM;AACG;AACH,EAAA;AACJ,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAEgB;AACP,EAAA;AACT;AD+tPU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/mainchain/mainchain/client/nodejs/lib/index.cjs","sourcesContent":[null,"import './interfaces/augment-api';\nimport './interfaces/augment-types';\nimport './interfaces/types-lookup';\nimport type { KeyringPair, KeyringPair$Json } from '@polkadot/keyring/types';\nimport { ApiPromise, HttpProvider, Keyring, WsProvider } from '@polkadot/api';\nimport {\n cryptoWaitReady,\n decodeAddress,\n encodeAddress,\n isAddress,\n mnemonicGenerate,\n} from '@polkadot/util-crypto';\nimport type { InterfaceTypes } from '@polkadot/types/types/registry';\nimport type { KeypairType } from '@polkadot/util-crypto/types';\nimport type { ProviderInterface } from '@polkadot/rpc-provider/types';\nimport type { ApiDecoration, ApiOptions } from '@polkadot/api/types';\nimport { Metadata, TypeRegistry } from '@polkadot/types';\nimport { result as metadataBytes } from '../metadata.json';\nimport { specVersion } from '../runtime_version.json';\nimport Genesis from '../genesis.json';\nimport { HexString } from '@polkadot/util/types';\n\nexport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nexport { ApiDecoration };\nexport { WageProtector } from './WageProtector';\nexport { TxSubmitter, type ISubmittableOptions, type TxSigningAccount } from './TxSubmitter';\nexport { TxResult, type ITxProgressCallback } from './TxResult';\nexport * from './utils';\nexport * from './keyringUtils';\nexport * from './header';\nexport * from './Vault';\nexport * from './convert';\nexport * from './BitcoinLock';\nexport * from './PriceIndex';\nexport * as EvmContracts from './EvmContracts';\nexport * from './EthereumProof';\nexport type {\n EthereumBeaconBlockResponse,\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumVersionedLightClientUpdate,\n} from './EthereumBeaconTypes';\nexport {\n decodeEthereumGatewayActivityLog,\n decodeEthereumTransferToArgonStartedLog,\n findEthereumTransferToArgonStartedLogIndexes,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nexport {\n buildGatewayActivityProofPayload,\n type EthereumGatewayActivityProofPayload,\n} from './EthereumGatewayActivityProof';\nexport * from './EthereumBeaconSync';\nexport type {\n EthereumExecutionClient,\n EthereumExecutionSource,\n EthereumReceipt,\n} from './EthereumExecution';\nexport {\n Keyring,\n KeyringPair,\n KeyringPair$Json,\n KeypairType,\n mnemonicGenerate,\n decodeAddress,\n isAddress,\n encodeAddress,\n};\n\nexport { u8aToHex, hexToU8a, u8aEq } from '@polkadot/util';\n\nexport * from '@polkadot/types/lookup';\nexport { GenericEvent, GenericBlock, GenericAddress } from '@polkadot/types/generic';\nexport {\n BTreeMap,\n Bytes,\n Compact,\n Enum,\n Null,\n Option,\n Result,\n Bool,\n Tuple,\n Range,\n Struct,\n Text,\n U256,\n U8aFixed,\n Vec,\n bool,\n i128,\n u128,\n u16,\n u32,\n u64,\n u8,\n} from '@polkadot/types-codec';\nexport type {\n ISubmittableResult,\n IExtrinsic,\n SignerResult,\n Signer,\n ISignerPayload,\n} from '@polkadot/types/types/extrinsic';\nexport { type ITuple, type Codec } from '@polkadot/types-codec/types';\nexport {\n type AccountId32,\n type Call,\n type H160,\n type H256,\n type MultiAddress,\n type Permill,\n type AccountId,\n type Header,\n type Block,\n type SignedBlock,\n} from '@polkadot/types/interfaces/runtime';\nexport type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';\nexport { type BlockHash } from '@polkadot/types/interfaces/chain';\nexport { InterfaceTypes as interfaces };\n\nexport type ArgonClient = ApiPromise;\nexport type IArgonQueryable = ArgonClient | ApiDecoration<'promise'>;\n\n/**\n * Wait for the crypto library to be ready (requires wasm, which needs async loading in commonjs)\n */\nexport async function waitForLoad(): Promise<void> {\n await cryptoWaitReady();\n}\n\n/**\n * Get a client for the given host\n * @param host The host to connect to\n * @param options Additional options for the API\n * @returns The client\n */\nexport async function getClient(host: string, options?: ApiOptions): Promise<ArgonClient> {\n let provider: ProviderInterface;\n if (host.startsWith('http')) {\n provider = new HttpProvider(host);\n } else {\n provider = new WsProvider(host);\n }\n\n options ??= {};\n options.metadata ??= {};\n\n for (const genesisHash of Object.values(Genesis)) {\n options.metadata[`${genesisHash}-${specVersion}`] = metadataBytes as HexString;\n }\n return await ApiPromise.create({ provider, noInitWarn: true, ...options });\n}\n\nconst registry = new TypeRegistry();\nregistry.setMetadata(\n new Metadata(registry, metadataBytes as HexString),\n undefined,\n undefined,\n true,\n);\n\nexport function getOfflineRegistry() {\n return registry;\n}\n","{\n \"jsonrpc\": \"2.0\",\n \"id\": \"1\",\n \"result\": \"0x6d6574610e3909000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200000050000240c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540128000c01186e6f726d616c2801045400012c6f7065726174696f6e616c280104540001246d616e6461746f7279280104540000280c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d652c010c75363400012870726f6f665f73697a652c010c75363400002c000006300030000005060034083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00003800000208003c102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677340013c5665633c4469676573744974656d3e000040000002440044102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e00060024436f6e73656e7375730800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000400105365616c0800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000500144f74686572040038011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000480000030400000008004c00000250005008306672616d655f73797374656d2c4576656e745265636f7264080445015404540134000c011470686173652902011450686173650001146576656e7454010445000118746f706963732d0201185665633c543e00005408346172676f6e5f72756e74696d653052756e74696d654576656e740001701853797374656d04005801706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c44696765737473040080017870616c6c65745f646967657374733a3a4576656e743c52756e74696d653e000100204d756c7469736967040084017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e0003001450726f7879040094017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e000400284d696e696e67536c6f740400a4018870616c6c65745f6d696e696e675f736c6f743a3a4576656e743c52756e74696d653e00060030426974636f696e5574786f730400c8019070616c6c65745f626974636f696e5f7574786f733a3a4576656e743c52756e74696d653e000700185661756c74730400dc017470616c6c65745f7661756c74733a3a4576656e743c52756e74696d653e00080030426974636f696e4c6f636b730400e4019070616c6c65745f626974636f696e5f6c6f636b733a3a4576656e743c52756e74696d653e000900204e6f7461726965730400f0017c70616c6c65745f6e6f7461726965733a3a4576656e743c52756e74696d653e000a00204e6f7465626f6f6b04001501017c70616c6c65745f6e6f7465626f6f6b3a3a4576656e743c52756e74696d653e000b00484c6f63616c636861696e5472616e736665720400310101a870616c6c65745f6c6f63616c636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e000c0034426c6f636b5365616c5370656304003501019870616c6c65745f626c6f636b5f7365616c5f737065633a3a4576656e743c52756e74696d653e000d001c446f6d61696e7304003901017870616c6c65745f646f6d61696e733a3a4576656e743c52756e74696d653e000e00285072696365496e64657804006101018870616c6c65745f70726963655f696e6465783a3a4576656e743c52756e74696d653e000f001c4772616e64706104006501015470616c6c65745f6772616e6470613a3a4576656e7400110030426c6f636b5265776172647304007101019070616c6c65745f626c6f636b5f726577617264733a3a4576656e743c52756e74696d653e001300104d696e7404008901016c70616c6c65745f6d696e743a3a4576656e743c52756e74696d653e0014002042616c616e6365730400990101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365313e001500244f776e6572736869700400c10101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365323e0016001c547850617573650400c501017c70616c6c65745f74785f70617573653a3a4576656e743c52756e74696d653e001700485472616e73616374696f6e5061796d656e740400d10101a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0018001c5574696c6974790400d501015470616c6c65745f7574696c6974793a3a4576656e74001900105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e001a002054726561737572790400dd01017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e001f0028466565436f6e74726f6c0400e501018870616c6c65745f6665655f636f6e74726f6c3a3a4576656e743c52756e74696d653e0020004c4f7065726174696f6e616c4163636f756e74730400f10101ac70616c6c65745f6f7065726174696f6e616c5f6163636f756e74733a3a4576656e743c52756e74696d653e00220040457468657265756d56657269666965720400f90101a070616c6c65745f657468657265756d5f76657269666965723a3a4576656e743c52756e74696d653e0023004843726f7373636861696e5472616e736665720400010201a870616c6c65745f63726f7373636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e00240000580c306672616d655f73797374656d1870616c6c6574144576656e740404540001204045787472696e7369635375636365737304013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7268013444697370617463684572726f7200013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736834011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e8052656a6563746564496e76616c6964417574686f72697a656455706772616465080124636f64655f6861736834011c543a3a486173680001146572726f7268013444697370617463684572726f720007041101416e20696e76616c696420617574686f72697a65642075706772616465207761732072656a6563746564207768696c6520747279696e6720746f206170706c792069742e04704576656e7420666f72207468652053797374656d2070616c6c65742e5c08306672616d655f73797374656d4444697370617463684576656e74496e666f00000c0118776569676874280118576569676874000114636c6173736001344469737061746368436c617373000120706179735f666565640110506179730000600c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000640c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000068082873705f72756e74696d653444697370617463684572726f7200013c144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c6504006c012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400700128546f6b656e4572726f720007002841726974686d65746963040074013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007801485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d00105472696504007c0124547269654572726f72000e00006c082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7248018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000070082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000074083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000078082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007c0c2873705f72756e74696d653070726f76696e675f7472696524547269654572726f7200013840496e76616c69645374617465526f6f7400000048496e636f6d706c65746544617461626173650001005056616c75654174496e636f6d706c6574654b6579000200304465636f6465724572726f720003002c496e76616c696448617368000400304475706c69636174654b65790005003845787472616e656f75734e6f64650006003c45787472616e656f757356616c75650007005c45787472616e656f7573486173685265666572656e636500080054496e76616c69644368696c645265666572656e63650009003456616c75654d69736d61746368000a003c496e636f6d706c65746550726f6f66000b0030526f6f744d69736d61746368000c002c4465636f64654572726f72000d0000800c3870616c6c65745f646967657374731870616c6c6574144576656e74040454000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574840c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001142c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c748c01384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c4861736800012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000404f0546865206465706f73697420666f722061206d756c7469736967206f7065726174696f6e20686173206265656e20757064617465642f706f6b65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657488083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c75333200008c0418526573756c740804540190044501680108084f6b040090000000000c4572720400680000010000900000040000940c3070616c6c65745f70726f78791870616c6c6574144576656e7404045400011c3450726f78794578656375746564040118726573756c748c01384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656418011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360001086174100144426c6f636b4e756d626572466f723c543e00013c65787472696e7369635f696e64657810010c753332000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e28507572654b696c6c656410011070757265000130543a3a4163636f756e74496400011c737061776e6572000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360002049c4120707572652070726f787920776173206b696c6c65642062792069747320737061776e65722e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736834013443616c6c486173684f663c543e000304e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00050450412070726f7879207761732072656d6f7665642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e7449640001106b696e64a0012c4465706f7369744b696e6400012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000604090141206465706f7369742073746f72656420666f722070726f78696573206f7220616e6e6f756e63656d656e74732077617320706f6b6564202f20757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749808346172676f6e5f72756e74696d652450726f7879547970650001200c416e790000002c4e6f6e5472616e73666572000100285072696365496e646578000200244d696e696e67426964000300504d696e696e674269645265616c506179734665650004001c426974636f696e000500285661756c7441646d696e00060050426974636f696e496e697469616c697a65466f72000700009c0000050400a0083070616c6c65745f70726f78792c4465706f7369744b696e640001081c50726f7869657300000034416e6e6f756e63656d656e747300010000a40c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144576656e7404045400011c244e65774d696e6572730c01286e65775f6d696e657273a801b4426f756e6465645665633c526567697374726174696f6e3c543e2c20543a3a4d6178436f686f727453697a653e00013c72656c65617365645f6d696e65727310010c7533320001206672616d655f696430011c4672616d6549640000003c536c6f7442696464657241646465640c01286163636f756e745f6964000130543a3a4163636f756e7449640001286269645f616d6f756e74180128543a3a42616c616e6365000114696e64657810010c75333200010044536c6f7442696464657244726f707065640801286163636f756e745f6964000130543a3a4163636f756e7449640001587072657365727665645f6172676f6e6f745f686f6c64200110626f6f6c0002005452656c656173654d696e6572536561744572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000300684d696e696e67436f6e66696775726174696f6e557064617465640c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73653001105469636b00014c7469636b735f6265747765656e5f736c6f74733001105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b733001105469636b000400404d696e696e6742696473436c6f7365640401206672616d655f696430011c4672616d654964000504f4426964732061726520636c6f7365642064756520746f20746865205652462072616e646f6d697a65642066756e6374696f6e2074726967676572696e673c52656c656173654269644572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a80c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ac045300000400c401185665633c543e0000ac0c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c484d696e696e67526567697374726174696f6e0c244163636f756e74496401001c42616c616e63650118104b65797301b0001c01286163636f756e745f69640001244163636f756e74496400016065787465726e616c5f66756e64696e675f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e00010c626964c0011c42616c616e63650001206172676f6e6f7473c0011c42616c616e6365000138617574686f726974795f6b657973b001104b6579730001447374617274696e675f6672616d655f69642c011c4672616d65496400012c6269645f61745f7469636b2c01105469636b0000b008346172676f6e5f72756e74696d652c53657373696f6e4b657973000008011c6772616e647061b401d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000150626c6f636b5f7365616c5f617574686f72697479b801dc3c4d696e696e67536c6f74206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000b40c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c69630000040004013c656432353531393a3a5075626c69630000b810406172676f6e5f7072696d69746976657328626c6f636b5f7365616c0c617070185075626c69630000040004013c656432353531393a3a5075626c69630000bc04184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000c00000061800c4000002ac00c80c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144576656e7404045400011c305574786f566572696669656408011c7574786f5f69643001185574786f49640001447361746f736869735f72656365697665643001205361746f73686973000000305574786f52656a656374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600013c72656a65637465645f726561736f6ed80154426974636f696e52656a6563746564526561736f6e0001447361746f736869735f72656365697665643001205361746f73686973000100245574786f5370656e7408011c7574786f5f69643001185574786f4964000130626c6f636b5f686569676874300134426974636f696e486569676874000200345574786f556e7761746368656404011c7574786f5f69643001185574786f4964000300385574786f5370656e744572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000400445574786f56657269666965644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000500445574786f52656a65637465644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cc0c406172676f6e5f7072696d6974697665731c626974636f696e1c5574786f526566000008011074786964d00118483235364c650001306f75747075745f696e646578d4010c7533320000d00c406172676f6e5f7072696d6974697665731c626974636f696e18483235364c65000004000401205b75383b2033325d0000d40000061000d80c406172676f6e5f7072696d6974697665731c626974636f696e54426974636f696e52656a6563746564526561736f6e000110705361746f736869734f757473696465416363657074656452616e6765000000145370656e740001004c566572696669636174696f6e457870697265640002003c416c7265616479566572696669656400030000dc0c3470616c6c65745f7661756c74731870616c6c6574144576656e74040454000140305661756c74437265617465641401207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e74496400012c6f70656e65645f7469636b3001105469636b000000345661756c744d6f6469666965641001207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636504c0546865206e65772073656375726974697a6174696f6e20616d6f756e74206166746572206d6f64696669636174696f6e015473656375726974697a6174696f6e5f746172676574180128543a3a42616c616e63650449015468652073656375726974697a6174696f6e2074617267657420616d6f756e74206166746572206d6f64696669636174696f6e20287468697320697320746865206c6f6e67207465726d2074617267657429015073656375726974697a6174696f6e5f726174696fe00124466978656455313238000100645661756c745465726d734368616e67655363686564756c65640801207661756c745f696410011c5661756c74496400012c6368616e67655f7469636b3001105469636b000200445661756c745465726d734368616e6765640401207661756c745f696410011c5661756c7449640003002c5661756c74436c6f7365640c01207661756c745f696410011c5661756c74496400016073656375726974697a6174696f6e5f72656d61696e696e67180128543a3a42616c616e636500015c73656375726974697a6174696f6e5f72656c6561736564180128543a3a42616c616e6365000400585661756c74426974636f696e587075624368616e67650401207661756c745f696410011c5661756c7449640005005c5661756c74526576656e7565556e636f6c6c65637465640c01207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500060439015661756c7420726576656e756520776173206e6f7420636f6c6c65637465642077697468696e207468652072657175697265642077696e646f772c20736f20686173206265656e206275726e6564385661756c74436f6c6c65637465640801207661756c745f696410011c5661756c74496400011c726576656e7565180128543a3a42616c616e63650007040901546865207661756c7420636f6c6c656374656420726576656e756520616e6420636f7369676e656420616c6c2070656e64696e6720626974636f696e206c6f636b732c46756e64734c6f636b65641801207661756c745f696410011c5661756c7449640001186c6f636b6572000130543a3a4163636f756e7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500012869735f72617463686574200110626f6f6c00012c6665655f726576656e7565180128543a3a42616c616e63650001486469645f7573655f6665655f636f75706f6e200110626f6f6c0008004046756e644c6f636b43616e63656c65640801207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650009006046756e64735363686564756c6564466f7252656c656173650c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500013872656c656173655f686569676874300134426974636f696e486569676874000a00584c6f7374426974636f696e436f6d70656e73617465641001207661756c745f696410011c5661756c74496400012c62656e6566696369617279000130543a3a4163636f756e744964000138746f5f62656e6566696369617279180128543a3a42616c616e63650001186275726e6564180128543a3a42616c616e6365000b003446756e647352656c65617365640801207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e6365000c004846756e647352656c65617365644572726f720801207661756c745f696410011c5661756c7449640001146572726f7268013444697370617463684572726f72000d005854726561737572795265636f7264696e674572726f721001207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d6549640001387661756c745f6561726e696e6773180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f72000e0050436f6d6d69747465644172676f6e6f74735365740c01207661756c745f696410011c5661756c74496400014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e00c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e40c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144576656e7404045400013848426974636f696e4c6f636b437265617465641c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500013873656375726974697a6174696f6e180128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013073656375726974795f666565180128543a3a42616c616e636500000050426974636f696e4c6f636b52617463686574656420011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e63650001406f6c645f7461726765745f7072696365180128543a3a42616c616e636500013073656375726974795f666565180128543a3a42616c616e63650001406e65775f7461726765745f7072696365180128543a3a42616c616e6365000134616d6f756e745f6275726e6564180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400010044426974636f696e4c6f636b4275726e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001387761735f7574786f5f7370656e74200110626f6f6c00020068426974636f696e5574786f436f7369676e52657175657374656408011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640003004c426974636f696e5574786f436f7369676e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001247369676e6174757265e80140426974636f696e5369676e617475726500040060426974636f696e5370656e74416674657252656c6561736508011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400050050426974636f696e436f7369676e5061737444756510011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400014c636f6d70656e736174696f6e5f616d6f756e74180128543a3a42616c616e6365000158636f6d70656e73617465645f6163636f756e745f6964000130543a3a4163636f756e74496400060048436f7369676e4f7665726475654572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f720007040901416e206572726f72206f63637572726564207768696c6520726566756e64696e6720616e206f76657264756520636f7369676e656420626974636f696e206c6f636b4c4c6f636b45787069726174696f6e4572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000804a4416e206572726f72206f63637572726564207768696c6520636f6d706c6574696e672061206c6f636b504f727068616e65645574786f526563656976656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001207361746f736869733001205361746f73686973000900704f727068616e65645574786f52656c6561736552657175657374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000a00504f727068616e65645574786f436f7369676e656414011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e7449640001247369676e6174757265e80140426974636f696e5369676e6174757265000b005c5574786f46756e64656446726f6d43616e64696461746510011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000c005c53656375726974697a6174696f6e496e6372656173656410011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001306e65775f7361746f736869733001205361746f736869730001286163636f756e745f6964000130543a3a4163636f756e744964000d00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e80c406172676f6e5f7072696d6974697665731c626974636f696e40426974636f696e5369676e617475726500000400ec0170426f756e6465645665633c75382c20436f6e73745533323c37343e3e0000ec0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000f00c3c70616c6c65745f6e6f7461726965731870616c6c6574144576656e74040454000114384e6f7461727950726f706f7365640c01406f70657261746f725f6163636f756e74000130543a3a4163636f756e7449640001106d657461f4013c4e6f746172794d6574614f663c543e00011c65787069726573100144426c6f636b4e756d626572466f723c543e000004a4412075736572206861732070726f706f736564206f7065726174696e672061732061206e6f746172793c4e6f746172794163746976617465640401186e6f74617279110101444e6f746172795265636f72644f663c543e0001048c41206e6f746172792070726f706f73616c20686173206265656e206163636570746564584e6f746172794d6574615570646174655175657565640c01246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b3001105469636b000204844e6f74617279206d657461646174612071756575656420666f7220757064617465444e6f746172794d657461557064617465640801246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0003045c4e6f74617279206d657461646174612075706461746564544e6f746172794d6574615570646174654572726f720c01246e6f746172795f69641001204e6f7461727949640001146572726f7268013444697370617463684572726f720001106d657461f4013c4e6f746172794d6574614f663c543e000404844572726f72207570646174696e6720717565756564206e6f7461727920696e666f047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f40c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794d65746104204d6178486f73747300000c01106e616d65f801284e6f746172794e616d650001187075626c69630401304e6f746172795075626c6963000114686f73747301010168426f756e6465645665633c486f73742c204d6178486f7374733e0000f80c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794e616d6500000400fc0170426f756e6465645665633c75382c20436f6e73745533323c35353e3e0000fc0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000001010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540105010453000004000d0101185665633c543e000005010c406172676f6e5f7072696d69746976657310686f737410486f73740000040009010174426f756e6465645665633c75382c20436f6e73745533323c3235333e3e000009010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00000d0100000205010011010c406172676f6e5f7072696d697469766573186e6f74617279304e6f746172795265636f72640c244163636f756e74496401002c426c6f636b4e756d6265720110204d6178486f73747300001801246e6f746172795f6964d401204e6f74617279496400014c6f70657261746f725f6163636f756e745f69640001244163636f756e74496400013c6163746976617465645f626c6f636bd4012c426c6f636b4e756d6265720001486d6574615f757064617465645f626c6f636bd4012c426c6f636b4e756d6265720001446d6574615f757064617465645f7469636b2c01105469636b0001106d657461f401504e6f746172794d6574613c4d6178486f7374733e000015010c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144576656e7404045400010c444e6f7465626f6f6b5375626d69747465640801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000000504e6f7465626f6f6b41756469744661696c7572651001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001346e6f7465626f6f6b5f686173683401104832353600015066697273745f6661696c7572655f726561736f6e1901014c4e6f7465626f6f6b5665726966794572726f72000100644e6f7465626f6f6b5265616479466f72526570726f636573730801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657419010c486172676f6e5f6e6f746172795f6175646974146572726f722c5665726966794572726f720001ec504d697373696e674163636f756e744f726967696e0801286163636f756e745f696400012c4163636f756e74496433320001306163636f756e745f747970651d01012c4163636f756e745479706500000048486973746f72794c6f6f6b75704572726f72040118736f75726365210101644163636f756e74486973746f72794c6f6f6b75704572726f7200010060496e76616c69644163636f756e744368616e67656c69737400020064496e76616c6964436861696e5472616e73666572734c69737400030060496e76616c696442616c616e63654368616e6765526f6f7400040060496e76616c69644865616465725461785265636f7264656400050050496e76616c696450726576696f75734e6f6e636500060058496e76616c696450726576696f757342616c616e636500070070496e76616c696450726576696f75734163636f756e744f726967696e00080090496e76616c696450726576696f757342616c616e63654368616e67654e6f7465626f6f6b00090050496e76616c696442616c616e63654368616e6765000a0074496e76616c696442616c616e63654368616e67655369676e61747572650401306368616e67655f696e6465789c010c753136000b0054496e76616c69644e6f7465526563697069656e7473000c004842616c616e63654368616e67654572726f720c01306368616e67655f696e6465789c010c7531360001286e6f74655f696e6465789c010c75313600011c6d6573736167652501013c4d61784c656e677468537472696e67000d0068496e76616c69644e657442616c616e63654368616e6765736574000e004c496e73756666696369656e7442616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c753136000f004845786365656465644d617842616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c7531360010005442616c616e63654368616e67654d69736d617463680c01306368616e67655f696e6465789c010c75313600014070726f76696465645f62616c616e63651801107531323800014863616c63756c617465645f62616c616e63652d010110693132380011005c42616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d65641801107531323800120070496e76616c6964446f6d61696e4c65617365416c6c6f636174696f6e0013006854617842616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d6564180110753132380014004c4d697373696e6742616c616e636550726f6f660015006c496e76616c696450726576696f757342616c616e636550726f6f660016004c496e76616c69644e6f7465626f6f6b4861736800170064496e76616c69644e6f7465626f6f6b4865616465724861736800180058496e76616c69644e6f7465626f6f6b56657273696f6e001900584475706c6963617465436861696e5472616e73666572001a00684475706c6963617465644163636f756e744f726967696e556964001b0058496e76616c69644e6f746172795369676e6174757265001c0054496e76616c696453656372657450726f7669646564001d00384e6f7465626f6f6b546f6f4f6c64001e005c436174636875704e6f7465626f6f6b734d697373696e67001f002c4465636f64654572726f72002000744163636f756e744368616e6e656c486f6c64446f65736e744578697374002100704163636f756e74416c72656164794861734368616e6e656c486f6c640022006c4368616e6e656c486f6c644e6f745265616479466f72436c61696d08013063757272656e745f7469636b3001105469636b000128636c61696d5f7469636b3001105469636b002300344163636f756e744c6f636b6564002400584d697373696e674368616e6e656c486f6c644e6f746500250058496e76616c69644368616e6e656c486f6c644e6f746500260068496e76616c69644368616e6e656c486f6c64436c61696d6572730027006c4368616e6e656c486f6c644e6f746542656c6f774d696e696d756d00280054496e76616c69645461784e6f74654163636f756e740029004c496e76616c69645461784f7065726174696f6e002a005c496e73756666696369656e74546178496e636c756465640c01207461785f73656e74180110753132380001207461785f6f776564180110753132380001286163636f756e745f696400012c4163636f756e7449643332002b0060496e73756666696369656e74426c6f636b566f7465546178002c0048496e656c696769626c65546178566f746572002d0064426c6f636b566f7465496e76616c69645369676e6174757265002e0068496e76616c6964426c6f636b566f7465416c6c6f636174696f6e002f0050496e76616c6964426c6f636b566f7465526f6f7400300058496e76616c6964426c6f636b566f746573436f756e740031005c496e76616c6964426c6f636b566f74696e67506f77657200320050496e76616c6964426c6f636b566f74654c6973740033004c496e76616c6964436f6d7075746550726f6f6600340058496e76616c6964426c6f636b566f7465536f7572636500350070496e73756666696369656e74426c6f636b566f74654d696e696d756d00360050496e76616c6964426c6f636b566f74655469636b0801107469636b3001105469636b0001346e6f7465626f6f6b5f7469636b3001105469636b0037005c496e76616c696444656661756c74426c6f636b566f746500380074496e76616c696444656661756c74426c6f636b566f7465417574686f72080118617574686f7200012c4163636f756e7449643332000120657870656374656400012c4163636f756e7449643332003900484e6f44656661756c74426c6f636b566f7465003a00001d010c406172676f6e5f7072696d6974697665731c6163636f756e742c4163636f756e74547970650001080c5461780000001c4465706f73697400010000210108486172676f6e5f6e6f746172795f6175646974644163636f756e74486973746f72794c6f6f6b75704572726f7200011030526f6f744e6f74466f756e64000000484c6173744368616e67654e6f74466f756e640001006c496e76616c69645472616e73666572546f4c6f63616c636861696e00020068426c6f636b53706563696669636174696f6e4e6f74466f756e640003000025010c486172676f6e5f6e6f746172795f6175646974146572726f723c4d61784c656e677468537472696e670000040029010174426f756e6465645665633c75382c20436f6e73745533323c3130303e3e000029010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00002d010000050d0031010c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144576656e7404045400011c505472616e73666572546f4c6f63616c636861696e1401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e636500012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c65787069726174696f6e5f7469636b3001105469636b0000046846756e64732073656e7420746f2061206c6f63616c636861696e6c5472616e73666572546f4c6f63616c636861696e457870697265640c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f746172794964000104b85472616e7366657220746f206c6f63616c636861696e206578706972656420616e6420726f6c6c6564206261636b585472616e7366657246726f6d4c6f63616c636861696e0c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000204945472616e736665722066726f6d204c6f63616c636861696e20746f204d61696e636861696e6c5472616e7366657246726f6d4c6f63616c636861696e4572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f720003049041207472616e7366657220696e746f20746865206d61696e636861696e206661696c65647c5472616e73666572546f4c6f63616c636861696e526566756e644572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f72000404dc416e2065787069726564207472616e7366657220746f206c6f63616c636861696e206661696c656420746f20626520726566756e646564a0506f737369626c65496e76616c69644c6f63616c636861696e5472616e73666572416c6c6f7765640c012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000508450141206c6f63616c636861696e207472616e7366657220636f756c64206e6f7420626520636c65616e65642075702070726f7065726c792e20506f737369626c6520696e76616c6964207472616e73666572586e656564696e6720696e7665737469676174696f6e2e345461786174696f6e4572726f721001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d62657200010c7461781801583c5420617320436f6e6669673e3a3a42616c616e63650001146572726f7268013444697370617463684572726f720006043c5461786174696f6e206661696c6564047c54686520604576656e746020656e756d206f6620746869732070616c6c657435010c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144576656e740404540001084c566f74654d696e696d756d41646a757374656410015065787065637465645f626c6f636b5f766f7465731801107531323800014861637475616c5f626c6f636b5f766f7465731801107531323800014873746172745f766f74655f6d696e696d756d18012c566f74654d696e696d756d0001406e65775f766f74655f6d696e696d756d18012c566f74654d696e696d756d00000064436f6d70757465446966666963756c747941646a757374656410014c65787065637465645f626c6f636b5f74696d6530010c75363400014461637475616c5f626c6f636b5f74696d6530010c75363400014073746172745f646966666963756c7479180144436f6d70757465446966666963756c74790001386e65775f646966666963756c7479180144436f6d70757465446966666963756c7479000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657439010c3870616c6c65745f646f6d61696e731870616c6c6574144576656e74040454000118445a6f6e655265636f72645570646174656408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000004804120646f6d61696e207a6f6e65207265636f726420776173207570646174656440446f6d61696e5265676973746572656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e0001045c4120646f6d61696e20776173207265676973746572656434446f6d61696e52656e6577656404012c646f6d61696e5f68617368340128446f6d61696e486173680002045c4120646f6d61696e20776173207265676973746572656434446f6d61696e4578706972656404012c646f6d61696e5f68617368340128446f6d61696e48617368000304504120646f6d61696e20776173206578706972656468446f6d61696e526567697374726174696f6e43616e63656c656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e00040841014120646f6d61696e20726567697374726174696f6e207761732063616e63656c65642064756520746f206120636f6e666c696374696e6720726567697374726174696f6e20696e207468652073616d65107469636b5c446f6d61696e526567697374726174696f6e4572726f720c012c646f6d61696e5f68617368340128446f6d61696e486173680001286163636f756e745f696400012c4163636f756e74496433320001146572726f7268013444697370617463684572726f72000504b04120646f6d61696e20726567697374726174696f6e206661696c65642064756520746f20616e206572726f72047c54686520604576656e746020656e756d206f6620746869732070616c6c65743d010c406172676f6e5f7072696d69746976657318646f6d61696e285a6f6e655265636f726404244163636f756e7449640100000c013c7061796d656e745f6163636f756e740001244163636f756e7449640001246e6f746172795f69641001204e6f74617279496400012076657273696f6e73410101cc426f756e64656442547265654d61703c53656d7665722c2056657273696f6e486f73742c20436f6e73745533323c3530303e3e000041010c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01450104560149010453000004005101013842547265654d61703c4b2c20563e000045010c406172676f6e5f7072696d69746976657318646f6d61696e1853656d76657200000c01146d616a6f7210010c7533320001146d696e6f7210010c753332000114706174636810010c753332000049010c406172676f6e5f7072696d69746976657318646f6d61696e2c56657273696f6e486f737400000801306461746173746f72655f69644d010170426f756e6465645665633c75382c20436f6e73745533323c35303e3e000110686f737405010110486f737400004d010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00005101042042547265654d617008044b01450104560149010004005501000000550100000259010059010000040845014901005d01083870616c6c65745f646f6d61696e7348446f6d61696e526567697374726174696f6e04244163636f756e7449640100000801286163636f756e745f69640001244163636f756e744964000148726567697374657265645f61745f7469636b3001105469636b000061010c4870616c6c65745f70726963655f696e6465781870616c6c6574144576656e74040454000108204e6577496e646578000004c44576656e7420656d6974746564207768656e2061206e657720707269636520696e646578206973207375626d69747465643c4f70657261746f724368616e67656404012c6f70657261746f725f6964000130543a3a4163636f756e744964000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657465010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f73657469010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657469010000026d01006d0100000408b4300071010c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144576656e74040454000108345265776172644372656174656404011c72657761726473750101a85665633c426c6f636b5061796f75743c543a3a4163636f756e7449642c20543a3a42616c616e63653e3e000000445265776172644372656174654572726f721001286163636f756e745f6964000130543a3a4163636f756e7449640001186172676f6e73850101484f7074696f6e3c543a3a42616c616e63653e0001246f776e657273686970850101484f7074696f6e3c543a3a42616c616e63653e0001146572726f7268013444697370617463684572726f72000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574750100000279010079010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c2c426c6f636b5061796f757408244163636f756e74496401001c42616c616e63650118001401286163636f756e745f69640001244163636f756e7449640001246f776e657273686970c0011c42616c616e63650001186172676f6e73c0011c42616c616e636500012c7265776172645f747970657d01013c426c6f636b52657761726454797065000150626c6f636b5f7365616c5f617574686f72697479810101704f7074696f6e3c426c6f636b5365616c417574686f7269747949643e00007d010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c3c426c6f636b5265776172645479706500010c144d696e657200000014566f7465720001002c50726f666974536861726500020000810104184f7074696f6e04045401b80108104e6f6e6500000010536f6d650400b80000010000850104184f7074696f6e04045401180108104e6f6e6500000010536f6d65040018000001000089010c2c70616c6c65745f6d696e741870616c6c6574144576656e7404045400010c2c426974636f696e4d696e740c01286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650000044c416e7920626974636f696e73206d696e746564284d696e696e674d696e74100118616d6f756e74180128543a3a42616c616e63650001247065725f6d696e6572180128543a3a42616c616e63650001246172676f6e5f637069910101204172676f6e4350490001246c6971756964697479180128543a3a42616c616e63650001084d0154686520616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e672e204e4f54453a206163636f756e74732062656c6f77204578697374656e7469616c204465706f7369746077696c6c206e6f742062652061626c6520746f206d696e74244d696e744572726f721401246d696e745f74797065950101204d696e74547970650001286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f720002085d014572726f727320656e636f756e7465726564207768696c65206d696e74696e672e204d6f7374206f6674656e2064756520746f206d696e7420616d6f756e74207374696c6c2062656c6f77204578697374656e7469616c1c4465706f736974047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d0104184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000091010c3473705f61726974686d657469632c66697865645f706f696e7424466978656449313238000004002d01011069313238000095010c2c70616c6c65745f6d696e741870616c6c6574204d696e74547970650001081c426974636f696e000000184d696e696e670001000099010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d0114346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000a10108346172676f6e5f72756e74696d654452756e74696d65486f6c64526561736f6e000118284d696e696e67536c6f740400a501017870616c6c65745f6d696e696e675f736c6f743a3a486f6c64526561736f6e000600185661756c74730400a901016470616c6c65745f7661756c74733a3a486f6c64526561736f6e00080030426974636f696e4c6f636b730400ad01018070616c6c65745f626974636f696e5f6c6f636b733a3a486f6c64526561736f6e00090030426c6f636b526577617264730400b101018070616c6c65745f626c6f636b5f726577617264733a3a486f6c64526561736f6e0013002054726561737572790400b501016c70616c6c65745f74726561737572793a3a486f6c64526561736f6e001f004843726f7373636861696e5472616e736665720400b901019870616c6c65745f63726f7373636861696e5f7472616e736665723a3a486f6c64526561736f6e00240000a5010c4870616c6c65745f6d696e696e675f736c6f741870616c6c657428486f6c64526561736f6e0001043c526567697374657241734d696e657200000000a9010c3470616c6c65745f7661756c74731870616c6c657428486f6c64526561736f6e00010c28456e7465725661756c74000000344f626c69676174696f6e4665650001003850656e64696e67436f6c6c65637400020000ad010c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657428486f6c64526561736f6e0001044852656c65617365426974636f696e4c6f636b00000000b1010c5070616c6c65745f626c6f636b5f726577617264731870616c6c657428486f6c64526561736f6e000104404d617475726174696f6e506572696f6400000000b5010c3c70616c6c65745f74726561737572791870616c6c657428486f6c64526561736f6e00010454436f6e7472696275746564546f547265617375727900000000b9010c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657428486f6c64526561736f6e000108785472616e736665724f75744d696e74696e67417574686f726974795469700000008c4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7400010000bd010c3c70616c6c65745f62616c616e6365731870616c6c657438556e65787065637465644b696e640001083842616c616e636555706461746564000000544661696c6564546f4d75746174654163636f756e7400010000c1010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c5010c3c70616c6c65745f74785f70617573651870616c6c6574144576656e740404540001082843616c6c50617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000004b8546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f77207061757365642e3043616c6c556e70617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000104c0546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f7720756e7061757365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c90100000408cd01cd0100cd010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000d1010c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d5010c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000120404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7268013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7268013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c748c01384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e444966456c73654d61696e53756363657373000604644d61696e2063616c6c2077617320646973706174636865642e504966456c736546616c6c6261636b43616c6c65640401286d61696e5f6572726f7268013444697370617463684572726f72000704845468652066616c6c6261636b2063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d9010c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400011014537564696404012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e00047041207375646f2063616c6c206a75737420746f6f6b20706c6163652e284b65794368616e67656408010c6f6c64bc01504f7074696f6e3c543a3a4163636f756e7449643e04b4546865206f6c64207375646f206b657920286966206f6e65207761732070726576696f75736c7920736574292e010c6e6577000130543a3a4163636f756e7449640488546865206e6577207375646f206b657920286966206f6e652077617320736574292e010478546865207375646f206b657920686173206265656e20757064617465642e284b657952656d6f76656400020480546865206b657920776173207065726d616e656e746c792072656d6f7665642e285375646f4173446f6e6504012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e0304c841205b7375646f5f61735d2850616c6c65743a3a7375646f5f6173292063616c6c206a75737420746f6f6b20706c6163652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574dd010c3c70616c6c65745f74726561737572791870616c6c6574144576656e740404540001248c436f756c644e6f74446973747269627574654561726e696e6773546f426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f72000004f4416e206572726f72206f63637572726564207768696c6520706179696e67206672616d65206561726e696e677320666f72206120626f6e64206c6f742e88436f756c644e6f745472616e73666572546f547265617375727952657365727665730c01206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f720001041501416e206572726f72206f63637572726564207768696c65206d6f76696e67206269642d706f6f6c2066756e647320696e746f2074726561737572792072657365727665732e604672616d654561726e696e677344697374726962757465641001206672616d655f696430011c4672616d6549640001506269645f706f6f6c5f6469737472696275746564180128543a3a42616c616e636500014474726561737572795f7265736572766573180128543a3a42616c616e636500015070617274696369706174696e675f7661756c747310010c753332000204804672616d65206561726e696e677320776572652064697374726962757465642e5c4672616d655661756c744361706974616c4c6f636b65640c01206672616d655f696430011c4672616d654964000150746f74616c5f656c696769626c655f626f6e64731801107531323800015070617274696369706174696e675f7661756c747310010c753332000304c05468652063757272656e74206672616d652773207661756c74206361706974616c20776173206c6f636b656420696e2e58436f756c644e6f7452656c65617365426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f744964000118616d6f756e74180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013864697370617463685f6572726f7268013444697370617463684572726f72000404b4416e206572726f72206f63637572726564207768696c652072656c656173696e67206120626f6e64206c6f742e40426f6e644c6f745075726368617365641001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000504c04120626f6e6420707572636861736520656e74657265642061207661756c742773206163636570746564206c6973742e5c426f6e644c6f7452656c656173655363686564756c65641801207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e647300014072656c656173655f6672616d655f696430011c4672616d654964000118726561736f6ee1010144426f6e6452656c65617365526561736f6e00060411014120626f6e64206c6f74207761732072656d6f7665642066726f6d20667574757265206672616d657320616e64207363686564756c656420666f722072656c656173652e3c426f6e644c6f7452656c65617365641401206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000704604120626f6e64206c6f74207761732072656c65617365642e74456e63756d6265726564426f6e644d6963726f676f6e734275726e65640c01286163636f756e745f6964000130543a3a4163636f756e7449640001346275726e65645f616d6f756e74180128543a3a42616c616e636500013c72656c65617365645f616d6f756e74180128543a3a42616c616e63650008084d01456e63756d6265726564207472656173757279206261636b696e6720776173206275726e656420616e6420616e79206e6f2d6c6f6e6765722d6e6565646564206672616374696f6e616c20686f6c64207761732472657475726e65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e1010c3c70616c6c65745f74726561737572791870616c6c657444426f6e6452656c65617365526561736f6e00010c3c557365724c69717569646174696f6e0000001842756d7065640001002c5661756c74436c6f73656400020000e5010c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144576656e7404045400010828466565536b69707065640401186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e0000047841207472616e73616374696f6e206665652077617320736b69707065642e3046656544656c6567617465640c01186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e00011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e7449640001047c41207472616e73616374696f6e20666565207761732064656c656761746564047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e90108346172676f6e5f72756e74696d65304f726967696e43616c6c65720001041873797374656d0400ed0101746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000000ed010c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100011010526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020028417574686f72697a656400030000f1010c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144576656e7404045400011c704f7065726174696f6e616c4163636f756e745265676973746572656414014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e7449640001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e000004fc416e206f7065726174696f6e616c206163636f756e74207761732072656769737465726564207769746820697473206c696e6b6564206163636f756e74732e584163636f756e7457656e744f7065726174696f6e616c04011c6163636f756e74000130543a3a4163636f756e7449640001047c4163636f756e7420686173206265636f6d65206f7065726174696f6e616c2e5c4f7065726174696f6e616c5265776172644561726e65640c011c6163636f756e74000130543a3a4163636f756e74496400012c7265776172645f6b696e64f50101544f7065726174696f6e616c5265776172644b696e64000118616d6f756e74180128543a3a42616c616e63650002040d014120726577617264206973206561726e656420666f7220616e206f7065726174696f6e616c206163636f756e742c20627574206e6f742079657420636c61696d65642e644f7065726174696f6e616c52657761726473436c61696d656410014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000120636c61696d616e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014472656d61696e696e675f70656e64696e67180128543a3a42616c616e6365000304f4436c61696d61626c65206f7065726174696f6e616c20726577617264732077657265207061696420746f2061206d616e61676564206163636f756e742e5052657761726473436f6e6669675570646174656408016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e63650004048852657761726420636f6e6669672076616c756573207765726520757064617465642e644f7065726174696f6e616c50726f6772657373466f726365641c011c6163636f756e74000130543a3a4163636f756e74496400016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c0001586f627365727665645f626974636f696e5f746f74616c180128543a3a42616c616e63650001686f627365727665645f6d696e696e675f736561745f746f74616c10010c753332000504a04f7065726174696f6e616c2070726f67726573732077617320666f7263656420627920726f6f742e58456e637279707465645365727665725570646174656408011c73706f6e736f72000130543a3a4163636f756e74496400011c73706f6e736565000130543a3a4163636f756e744964000604f4412073706f6e736f7220757064617465642074686520656e6372797074656420736572766572207061796c6f616420666f7220612073706f6e7365652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f5010c406172676f6e5f7072696d6974697665732470726f766964657273544f7065726174696f6e616c5265776172644b696e640001082841637469766174696f6e00000034526566657272616c426f6e757300010000f9010c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144576656e7404045400011050426561636f6e486561646572496d706f72746564080128626c6f636b5f6861736834011048323536000110736c6f7430010c75363400000074457865637574696f6e486561646572416e63686f72496d706f72746564080128626c6f636b5f68617368340148457865637574696f6e426c6f636b48617368000130626c6f636b5f6e756d626572300150457865637574696f6e426c6f636b4e756d6265720001005053796e63436f6d6d697474656555706461746564040118706572696f6430010c753634000200504f7065726174696e674d6f64654368616e6765640401106d6f6465fd01014842617369634f7065726174696e674d6f646500030444536574204f7065726174696e674d6f6465047c54686520604576656e746020656e756d206f6620746869732070616c6c6574fd010c6070616c6c65745f657468657265756d5f76657269666965721474797065734842617369634f7065726174696e674d6f6465000108184e6f726d616c0000001848616c7465640001000001020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144576656e74040454000158585472616e73666572546f4172676f6e536574746c6564080130736f757263655f636861696e0502012c536f75726365436861696e0001207472616e73666572090201685472616e73666572546f4172676f6e41637469766974793c543e0000040d014120605472616e73666572546f4172676f6e5374617274656460206163746976697479207761732070726f76656e20616e6420736574746c6564206c6f63616c6c792e6c476c6f62616c49737375616e6365436f756e63696c466f7263656408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e000130636f756e63696c5f68617368340110483235360001042901526f6f7420666f7263652d736574207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20666f7220612064657374696e6174696f6e20636861696e2e5c436f756e63696c5369676e6572526567697374657265640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300002040d01416e206163636f756e7420726567697374657265642069747320636f756e63696c207369676e657220666f72206f6e652064657374696e6174696f6e20636861696e2e6c436f756e63696c5369676e6572526f746174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300003042d01416e206163636f756e74207175657565642061207265706c6163656d656e7420636f756e63696c207369676e657220666f7220746865206e65787420636f756e63696c207570646174652e684d696e74696e67417574686f726974795265676973746572656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001286163636f756e745f6964000130543a3a4163636f756e744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650004045901416e206f70657261746f72206163636f756e7420726567697374657265642061204d696e74696e6720417574686f7269747920616e642071756575656420697420666f7220636f756e63696c20617070726f76616c2e884d696e74696e67417574686f72697479446561637469766174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650005045d01416e206f70657261746f722071756575656420746865207369676e65722d617574686f72697a656420457468657265756d20646561637469766174696f6e20666f722061204d696e74696e6720417574686f726974792e7c4d696e696d756d4d696e74696e67417574686f7269747956616c756553657408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565180128543a3a42616c616e63650006084501526f6f74207570646174656420746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e678c417574686f72697479206f6e206f6e652064657374696e6174696f6e20636861696e2eb44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e6753657404014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0007085101526f6f742075706461746564207468652070726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f722061637469766174696f6e2062617463686573206f6e206f6e654864657374696e6174696f6e20636861696e2e685175657565456e747279417070726f76616c5265636f726465640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500080415014120636f756e63696c206d656d626572207265636f7264656420617070726f76616c20666f7220612071756575656420636f756e63696c2075706461746520656e7472792e5c5175657565456e747279417070726f76616c52656164790c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e6365000904d45468652071756575656420636f756e63696c2075706461746520656e7472792072656163686564206c6f63616c2071756f72756d2e8c4d696e74696e67417574686f7269747941637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000a042101412070726f76656e20457468657265756d2061637469766174696f6e2066696c6c6564207468652070656e64696e67206c6f63616c2061637469766174696f6e206669656c64732e8c4d696e74696e67417574686f7269747941637469766174696f6e436f6d706c6574656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000016072656c617965725f6172676f6e5f6163636f756e745f6964000130543a3a4163636f756e74496400014072657061796d656e745f616d6f756e74180128543a3a42616c616e6365000b084101412070726f76656e2061637469766174696f6e2070616964206f722072656c6561736564207468652068656c642072656c61796572207265696d62757273656d656e7420616e64206d6164652074686544617574686f7269747920757361626c652e944d696e74696e67417574686f72697479446561637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000c084901412070726f76656e20457468657265756d20646561637469766174696f6e2072656c656173656420636f6c6c61746572616c20616e642072656d6f76656420746865206c6f63616c20617574686f726974791c7265636f72642e444761746577617953796e63506175736564080130736f757263655f636861696e0502012c536f75726365436861696e00011470617573651d0201404761746577617953796e635061757365000d044d01476174657761792070726f6f66206170706c69636174696f6e20706175736564206f6e6520736f7572636520636861696e20617420612073706563696669632063616e6f6e6963616c2061637469766974792e3c47617465776179556e706175736564040130736f757263655f636861696e0502012c536f75726365436861696e000e04a0526f6f74206d616e75616c6c7920756e706175736564206f6e6520736f7572636520636861696e2e50476174657761795374617465416476616e636564080130736f757263655f636861696e0502012c536f75726365436861696e000134676174657761795f73746174652502013c4761746577617953746174653c543e000f042d015468652073746f72656420676174657761792d737461746520736e617073686f7420616476616e63656420616674657220612070726f76656e20636f6e746967756f75732062617463682e485472616e736665724f75745374617274656418014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7472616e736665725f6964340110483235360001286163636f756e745f6964000130543a3a4163636f756e74496400011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650010046841207472616e73666572206f757420776173206f70656e65642e585472616e73666572436f6c6c61746572616c697a656410012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365001104c041206d696e74696e6720617574686f726974792075706461746564207472616e7366657220636f6c6c61746572616c2e405472616e736665724f7574526561647904012c7472616e736665725f6964340110483235360012049441207472616e7366657220697320726561647920666f722066696e616c697a6174696f6e2e505472616e736665724f757446696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001304b441207472616e73666572207761732066696e616c697a6564206f6e2074686520736f7572636520636861696e2e4c5472616e736665724f757443616e63656c6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001404b041207472616e73666572207761732063616e63656c6564206f6e2074686520736f7572636520636861696e2e745472616e73666572436f6c6c61746572616c496e76616c69646174656408012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630001504c4412070656e64696e6720636f6c6c61746572616c207265736572766174696f6e2077617320696e76616c6964617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657405020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c536f75726365436861696e00010420457468657265756d0000000009020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c5472616e73666572546f4172676f6e41637469766974790404540000140158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500011066726f6d0d0201104831363000011461737365741502012441737365744b696e64000108746f000130543a3a4163636f756e744964000118616d6f756e74c00128543a3a42616c616e636500000d02083c7072696d69746976655f7479706573104831363000000400110201205b75383b2032305d0000110200000314000000080015020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742441737365744b696e64000108144172676f6e0000001c4172676f6e6f740001000019020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c436f756e63696c417070726f76616c546172676574496400010c684d696e74696e67417574686f7269747941637469766174696f6e04000d02011048313630000000704d696e74696e67417574686f72697479446561637469766174696f6e04000d0201104831363000010074476c6f62616c49737375616e6365436f756e63696c526f746174696f6e040034011048323536000200001d020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404761746577617953796e63506175736500000c01806c6173745f676f6f645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001746661696c65645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e6365000118726561736f6e210201584761746577617953796e635061757365526561736f6e000021020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574584761746577617953796e635061757365526561736f6e000128184d616e75616c000000604d616c666f726d656447617465776179416374697669747900010040556e737570706f72746564546f6b656e000200604d696e74696e67417574686f726974794e6f74466f756e640003007c556e65787065637465644d696e74696e67417574686f726974795374617465000400604d696e74696e67417574686f726974794d69736d61746368000500c44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67000600ac4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e744d69736d6174636800070074476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e640008004447617465776179537461746544726966740009000025020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574304761746577617953746174650404540000100158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001546172676f6e5f617070726f76616c735f6e6f6e63652c014c4172676f6e417070726f76616c734e6f6e63650001446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000290208306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200002d0200000234003102000002350200350200000408101000390208306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ed4014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d653d020144436f773c277374617469632c207374723e00003d02040c436f77040454014102000400410200000041020000050200450208306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c000049020c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b38011c5665633c75383e00000c684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e008843616e20626520657865637574656420627920657665727920606f726967696e602e387365745f686561705f7061676573040114706167657330010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646538011c5665633c75383e0002046453657420746865206e65772072756e74696d6520636f64652e5c7365745f636f64655f776974686f75745f636865636b73040110636f646538011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0051014e6f746520746861742072756e74696d652075706772616465732077696c6c206e6f742072756e20696620746869732069732063616c6c656420776974682061206e6f742d696e6372656173696e6720737065632076657273696f6e212c7365745f73746f726167650401146974656d734d0201345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973550201205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697838010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b38011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e44617574686f72697a655f75706772616465040124636f64655f6861736834011c543a3a486173680009106101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736834011c543a3a48617368000a206101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e005d015741524e494e473a205468697320617574686f72697a657320616e207570677261646520746861742077696c6c2074616b6520706c61636520776974686f757420616e792073616665747920636865636b732c20666f7259016578616d706c652074686174207468652073706563206e616d652072656d61696e73207468652073616d6520616e642074686174207468652076657273696f6e206e756d62657220696e637265617365732e204e6f74f07265636f6d6d656e64656420666f72206e6f726d616c207573652e205573652060617574686f72697a655f757067726164656020696e73746561642e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e606170706c795f617574686f72697a65645f75706772616465040110636f646538011c5665633c75383e000b24550150726f766964652074686520707265696d616765202872756e74696d652062696e617279292060636f64656020666f7220616e2075706772616465207468617420686173206265656e20617574686f72697a65642e00490149662074686520617574686f72697a6174696f6e20726571756972656420612076657273696f6e20636865636b2c20746869732063616c6c2077696c6c20656e73757265207468652073706563206e616d65e872656d61696e7320756e6368616e67656420616e6420746861742074686520737065632076657273696f6e2068617320696e637265617365642e005901446570656e64696e67206f6e207468652072756e74696d65277320604f6e536574436f64656020636f6e66696775726174696f6e2c20746869732066756e6374696f6e206d6179206469726563746c79206170706c791101746865206e65772060636f64656020696e207468652073616d6520626c6f636b206f7220617474656d707420746f207363686564756c652074686520757067726164652e0060416c6c206f726967696e732061726520616c6c6f7765642e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e4d020000025102005102000004083838005502000002380059020c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2801185765696768740001246d61785f626c6f636b2801185765696768740001247065725f636c6173735d0201845065724469737061746368436c6173733c57656967687473506572436c6173733e00005d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454016102000c01186e6f726d616c610201045400012c6f7065726174696f6e616c61020104540001246d616e6461746f72796102010454000061020c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632801185765696768740001346d61785f65787472696e736963650201384f7074696f6e3c5765696768743e0001246d61785f746f74616c650201384f7074696f6e3c5765696768743e0001207265736572766564650201384f7074696f6e3c5765696768743e0000650204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000069020c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000008010c6d61786d0201545065724469737061746368436c6173733c7533323e00013c6d61785f6865616465725f73697a657102012c4f7074696f6e3c7533323e00006d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000710204184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100007502082873705f776569676874733c52756e74696d65446257656967687400000801107265616430010c753634000114777269746530010c75363400007902082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d653d020144436f773c277374617469632c207374723e000124696d706c5f6e616d653d020144436f773c277374617469632c207374723e000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069737d02011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013873797374656d5f76657273696f6e080108753800007d02040c436f77040454018102000400810200000081020000028502008502000004088902100089020000030800000008008d020c306672616d655f73797374656d1870616c6c6574144572726f720404540001243c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e6c4d756c7469426c6f636b4d6967726174696f6e734f6e676f696e67000604550141206d756c74692d626c6f636b206d6967726174696f6e206973206f6e676f696e6720616e642070726576656e7473207468652063757272656e7420636f64652066726f6d206265696e67207265706c616365642e444e6f7468696e67417574686f72697a6564000704584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400080494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c657491020c406172676f6e5f7072696d6974697665731c6469676573747324446967657374736574084c4e6f7465626f6f6b5665726966794572726f72011901244163636f756e7449640100001c0118617574686f720001244163636f756e744964000128626c6f636b5f766f74659502013c426c6f636b566f7465446967657374000128766f74696e675f6b6579990201744f7074696f6e3c506172656e74566f74696e674b65794469676573743e000128666f726b5f706f776572a50201444f7074696f6e3c466f726b506f7765723e0001286672616d655f696e666fb90201444f7074696f6e3c4672616d65496e666f3e0001107469636bc10201285469636b4469676573740001246e6f7465626f6f6b73c502018c4e6f7465626f6f6b4469676573743c4e6f7465626f6f6b5665726966794572726f723e000095020c406172676f6e5f7072696d6974697665731c646967657374733c426c6f636b566f74654469676573740000080130766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c766f7465735f636f756e74d4010c7533320000990204184f7074696f6e040454019d020108104e6f6e6500000010536f6d6504009d0200000100009d020c406172676f6e5f7072696d6974697665731c6469676573747354506172656e74566f74696e674b65794469676573740000040144706172656e745f766f74696e675f6b6579a10201444f7074696f6e3c566f74696e674b65793e0000a10204184f7074696f6e04045401340108104e6f6e6500000010536f6d650400340000010000a50204184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000a9020c406172676f6e5f7072696d69746976657328666f726b5f706f77657224466f726b506f77657200001c013869735f6c61746573745f766f7465200110626f6f6c0001246e6f7465626f6f6b732c010c753634000130766f74696e675f706f776572ad020110553235360001347365616c5f737472656e677468ad02011055323536000160746f74616c5f636f6d707574655f646966666963756c7479ad0201105532353600014c766f74655f637265617465645f626c6f636b73c00110753132380001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000ad02083c7072696d69746976655f7479706573105532353600000400b10201205b7536343b20345d0000b102000003040000003000b50204184f7074696f6e04045401ad020108104e6f6e6500000010536f6d650400ad020000010000b90204184f7074696f6e04045401bd020108104e6f6e6500000010536f6d650400bd020000010000bd020c406172676f6e5f7072696d6974697665731c64696765737473244672616d65496e666f00000c01206672616d655f69642c011c4672616d6549640001706672616d655f7265776172645f7469636b735f72656d61696e696e67d4010c75333200013069735f6e65775f6672616d65200110626f6f6c0000c1020c406172676f6e5f7072696d697469766573107469636b285469636b446967657374000004003001105469636b0000c5020c406172676f6e5f7072696d6974697665731c64696765737473384e6f7465626f6f6b446967657374042c5665726966794572726f72011901000401246e6f7465626f6f6b73c90201ec426f756e6465645665633c4e6f7465626f6f6b4175646974526573756c743c5665726966794572726f723e2c20436f6e73745533323c3235363e3e0000c9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401cd02045300000400d50201185665633c543e0000cd020c406172676f6e5f7072696d697469766573206e6f7465626f6f6b4c4e6f7465626f6f6b4175646974526573756c74042c5665726966794572726f72011901001001246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00014c61756469745f66697273745f6661696c757265d102014c4f7074696f6e3c5665726966794572726f723e0000d10204184f7074696f6e0404540119010108104e6f6e6500000010536f6d65040019010000010000d502000002cd0200d9020c3870616c6c65745f646967657374731870616c6c6574144572726f72040454000134604475706c6963617465426c6f636b566f74654469676573740000047c4475706c696361746520426c6f636b566f746544696765737420666f756e64544475706c6963617465417574686f72446967657374000104704475706c696361746520417574686f7244696765737420666f756e644c4475706c69636174655469636b446967657374000204684475706c6963617465205469636b44696765737420666f756e64784475706c6963617465506172656e74566f74696e674b6579446967657374000304944475706c696361746520506172656e74566f74696e674b657944696765737420666f756e645c4475706c69636174654e6f7465626f6f6b446967657374000404784475706c6963617465204e6f7465626f6f6b44696765737420666f756e64604475706c6963617465466f726b506f7765724469676573740005047c4475706c696361746520466f726b506f77657244696765737420666f756e64584d697373696e67426c6f636b566f74654469676573740006045c4d697373696e6720426c6f636b566f74654469676573744c4d697373696e67417574686f72446967657374000704504d697373696e6720417574686f72446967657374444d697373696e675469636b446967657374000804484d697373696e67205469636b446967657374704d697373696e67506172656e74566f74696e674b6579446967657374000904744d697373696e6720506172656e74566f74696e674b6579446967657374544d697373696e674e6f7465626f6f6b446967657374000a04584d697373696e67204e6f7465626f6f6b44696765737450436f756c644e6f744465636f6465446967657374000b04604661696c656420746f206465636f64652064696765737473604475706c69636174654672616d65496e666f446967657374000c04644475706c6963617465204672616d65496e666f20666f756e64048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd020c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f772c0124543a3a4d6f6d656e7400004c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e7420737065636966696564206279685b60436f6e6669673a3a4d696e696d756d506572696f64605d2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e0051015468697320646973706174636820636c617373206973205f4d616e6461746f72795f20746f20656e73757265206974206765747320657865637574656420696e2074686520626c6f636b2e204265206177617265510174686174206368616e67696e672074686520636f6d706c6578697479206f6620746869732063616c6c20636f756c6420726573756c742065786861757374696e6720746865207265736f757263657320696e206184626c6f636b20746f206578656375746520616e79206f746865722063616c6c732e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602955012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f283129602062656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee10200000408000400e502083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656e88015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c73e902018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e0000e9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000ed020000020000f1020c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001145061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000305101496d6d6564696174656c792064697370617463682061206d756c74692d7369676e61747572652063616c6c207573696e6720612073696e676c6520617070726f76616c2066726f6d207468652063616c6c65722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e003d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f662074686501016d756c74692d7369676e61747572652c2062757420646f206e6f7420706172746963697061746520696e2074686520617070726f76616c2070726f636573732e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e00b8526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c742e0034232320436f6d706c657869747919014f285a202b204329207768657265205a20697320746865206c656e677468206f66207468652063616c6c20616e6420432069747320657865637574696f6e207765696768742e2061735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f7765696768742801185765696768740001a85501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e003d012a2a49662074686520617070726f76616c207468726573686f6c64206973206d65742028696e636c7564696e67207468652073656e646572277320617070726f76616c292c20746869732077696c6c4501696d6d6564696174656c792065786563757465207468652063616c6c2e2a2a205468697320697320746865206f6e6c792077617920746f20657865637574652061206d756c74697369672063616c6c202dc060617070726f76655f61735f6d756c7469602077696c6c206e65766572207472696767657220657865637574696f6e2e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e004d014e4f54453a20466f7220696e7465726d65646961746520617070726f76616c7320286e6f74207468652066696e616c20617070726f76616c292c20796f752073686f756c642067656e6572616c6c7920757365450160617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c20616e64206973206d6f726528656666696369656e742e005901526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f746865727769736555016f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642cdc6d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e0034232320436f6d706c6578697479502d20604f2853202b205a202b2043616c6c29602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e21012d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e6c2d2054686520776569676874206f6620746865206063616c6c602e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e40617070726f76655f61735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f7765696768742801185765696768740002985501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e0039012a2a546869732066756e6374696f6e2077696c6c204e455645522065786563757465207468652063616c6c2c206576656e2069662074686520617070726f76616c207468726573686f6c642069735101726561636865642e2a2a204974206f6e6c792072656769737465727320617070726f76616c2e20546f2061637475616c6c792065786563757465207468652063616c6c2c206061735f6d756c746960206d757374f062652063616c6c65642077697468207468652066756c6c2063616c6c206461746120627920616e79206f6620746865207369676e61746f726965732e004d01546869732066756e6374696f6e206973206d6f726520656666696369656e74207468616e206061735f6d756c74696020666f7220696e7465726d65646961746520617070726f76616c732073696e6365206974d06f6e6c79207265717569726573207468652063616c6c20686173682c206e6f74207468652066756c6c2063616c6c20646174612e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e003d014e4f54453a20546f2065786563757465207468652063616c6c20616674657220617070726f76616c73206172652067617468657265642c20616e79207369676e61746f7279206d7573742063616c6c29016061735f6d756c7469602077697468207468652066756c6c2063616c6c20646174612e20546869732066756e6374696f6e2063616e6e6f742065786563757465207468652063616c6c2e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e3c63616e63656c5f61735f6d756c74691001247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d000354550143616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c79c4666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e5d012d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c787472616e73616374696f6e20666f7220746869732064697370617463682ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e302d204f6e65206576656e742e842d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e702d2053746f726167653a2072656d6f766573206f6e65206974656d2e30706f6b655f6465706f7369740c01247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012463616c6c5f686173680401205b75383b2033325d000434f4506f6b6520746865206465706f73697420726573657276656420666f7220616e206578697374696e67206d756c7469736967206f7065726174696f6e2e006101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520746865206f726967696e616c206465706f7369746f72206f665c746865206d756c7469736967206f7065726174696f6e2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e0019012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c73206e656564656420666f722074686973206d756c74697369672e3d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f66207468652c20206d756c74697369672e05012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c2074686973206465706f73697420697320726573657276656420666f722e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef50208346172676f6e5f72756e74696d652c52756e74696d6543616c6c0001701853797374656d0400490201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400dd0201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e000200204d756c74697369670400f10201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e0003001450726f78790400f90201a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e000400145469636b730400090301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5469636b732c2052756e74696d653e000500284d696e696e67536c6f7404000d0301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e696e67536c6f742c2052756e74696d653e00060030426974636f696e5574786f730400110301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e5574786f732c2052756e74696d653e000700185661756c74730400310301ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5661756c74732c2052756e74696d653e00080030426974636f696e4c6f636b730400590301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e4c6f636b732c2052756e74696d653e000900204e6f7461726965730400750301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7461726965732c2052756e74696d653e000a00204e6f7465626f6f6b0400790301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7465626f6f6b2c2052756e74696d653e000b00484c6f63616c636861696e5472616e736665720400b90301dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4c6f63616c636861696e5472616e736665722c2052756e74696d653e000c0034426c6f636b5365616c537065630400bd0301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c537065632c2052756e74696d653e000d001c446f6d61696e730400c10301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c446f6d61696e732c2052756e74696d653e000e00285072696365496e6465780400c50301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5072696365496e6465782c2052756e74696d653e000f001c4772616e6470610400cd0301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00110024426c6f636b5365616c0400f90301b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c2c2052756e74696d653e00120030426c6f636b526577617264730400150401c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b526577617264732c2052756e74696d653e001300104d696e740400190401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e742c2052756e74696d653e0014002042616c616e63657304001d0401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e001500244f776e6572736869700400250401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f776e6572736869702c2052756e74696d653e0016001c547850617573650400290401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c547850617573652c2052756e74696d653e0017001c5574696c69747904002d0401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001900105375646f0400350401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e001a002054726561737572790400390401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e001f004c4f7065726174696f6e616c4163636f756e747304003d0401e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f7065726174696f6e616c4163636f756e74732c2052756e74696d653e00220040457468657265756d56657269666965720400610401d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c457468657265756d56657269666965722c2052756e74696d653e0023004843726f7373636861696e5472616e736665720400b90401dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c43726f7373636861696e5472616e736665722c2052756e74696d653e00240000f9020c3070616c6c65745f70726f78791870616c6c65741043616c6c04045400012c1470726f78790c01107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000244d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f75676830606164645f70726f7879602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e246164645f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e0001244501526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a11012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792efc2d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e3072656d6f76655f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00021ca8556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a25012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e41012d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e3872656d6f76655f70726f78696573000318b4556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005d015741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e7473206372656174656420627920606372656174655f70757265602c20686f776576657220696620646f6e652c207468656e590174686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a2c6372656174655f707572650c012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465789c010c7531360004483901537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e64fc696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e006c5265717569726573206120605369676e656460206f726967696e2e0051012d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f766572207468654d016e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f78616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e51012d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d655d017472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573744077616e7420746f20757365206030602e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e0051014661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468659873616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e00e44661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e246b696c6c5f7075726514011c737061776e6572fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f787954797065000114696e6465789c010c753136000118686569676874d40144426c6f636b4e756d626572466f723c543e0001246578745f696e646578d4010c753332000540a052656d6f76657320612070726576696f75736c7920737061776e656420707572652070726f78792e0049015741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626534696e61636365737369626c652e0059015265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746fb0606372656174655f7075726560207769746820636f72726573706f6e64696e6720706172616d65746572732e0055012d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c656420606372656174655f707572656020746f206372656174652074686973206163636f756e742e55012d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e2050726f6261626c79206030602e09012d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e45012d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e51012d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e0035014661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c7920637265617465642070757265f86163636f756e742077686f736520606372656174655f70757265602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e20616e6e6f756e63650801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e00063c05015075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e005d0154686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d7074656425016966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e0011014e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e000901546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c206173190160416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e002501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656d6f76655f616e6e6f756e63656d656e740801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e0007287052656d6f7665206120676976656e20616e6e6f756e63656d656e742e0059014d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e30746865206465706f7369742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e000828b052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e0061014d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c6567617465732501286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733af42d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2ebc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e3c70726f78795f616e6e6f756e63656410012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e0001107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00092c4d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676830606164645f70726f7879602e00a852656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e30706f6b655f6465706f736974000a204901506f6b65202f2041646a757374206465706f73697473206d61646520666f722070726f7869657320616e6420616e6e6f756e63656d656e7473206261736564206f6e2063757272656e742076616c7565732e0d01546869732063616e2062652075736564206279206163636f756e747320746f20706f737369626c79206c6f776572207468656972206c6f636b656420616d6f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd020c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780190011408496404000001244163636f756e74496400000014496e6465780400010301304163636f756e74496e6465780001000c526177040038011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400110201205b75383b2032305d0004000001030000069000050304184f7074696f6e04045401980108104e6f6e6500000010536f6d65040098000001000009030c3070616c6c65745f7469636b731870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0d030c4870616c6c65745f6d696e696e675f736c6f741870616c6c65741043616c6c0404540001080c6269640c010c626964180128543a3a42616c616e63650001106b657973b0011c543a3a4b6579730001446d696e696e675f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e00005861015375626d697420612062696420666f722061206d696e696e6720736c6f7420696e20746865206e65787420636f686f72742e204f6e636520616c6c2073706f7473206172652066696c6c656420696e20746865206e657874f4636f686f72742c2061206269646465722063616e20626520737570706c616e74656420627920737570706c79696e67206120686967686572206269642e00b84561636820736c6f742068617320604d6178436f686f727453697a65602073706f747320617661696c61626c652e005101546f20626520656c696769626c6520666f72206120736c6f742c20796f75206d757374206861766520746865207265717569726564206f776e65727368697020746f6b656e7320286172676f6e6f74732920696e590174686973206163636f756e742e2054686520726571756972656420616d6f756e742069732063616c63756c6174656420617320612070657263656e74616765206f662074686520746f74616c206f776e6572736869705501746f6b656e7320696e20746865206e6574776f726b2e20546869732070657263656e746167652069732061646a7573746564206265666f72652074686520626567696e6e696e67206f66206561636820736c6f742e004501496620796f757220626964206973206e6f206c6f6e6765722077696e6e696e672c20612060536c6f7442696464657244726f7070656460206576656e742077696c6c20626520656d69747465642e2042792d016d6f6e69746f72696e6720666f722074686973206576656e742c20796f752077696c6c2062652061626c6520746f20656e7375726520796f7572206269642069732061636365707465642e000d014e4f54453a2062696464696e6720666f72206561636820736c6f742077696c6c20626520636c6f73656420617420612072616e646f6d20626c6f636b2077697468696e3d01606d696e696e675f636f6e6669672e7469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73656020626c6f636b73206f662074686520736c6f7420656e642074696d652e00610154686520736c6f74206475726174696f6e2063616e2062652063616c63756c617465642061732060426c6f636b734265747765656e536c6f7473202a204d61784d696e657273202f204d6178436f686f727453697a65602e002c506172616d65746572733a902d2060626964603a2054686520616d6f756e74206f66206172676f6e7320746f206269644d012d20606b657973603a205468652073657373696f6e2022686f7422206b65797320666f722074686520736c6f742028426c6f636b5365616c417574686f72697479496420616e64204772616e6470614964292e59012d20606d696e696e675f6163636f756e745f6964603a2054686973206163636f756e745f696420616c6c6f777320796f7520746f206f7065726174652061732074686973206d696e6572206163636f756e742069642c01012020627574207573652066756e64696e6720286172676f6e6f747320616e6420626964292066726f6d20746865207375626d697474696e67206163636f756e746c636f6e6669677572655f6d696e696e675f736c6f745f64656c61790801446d696e696e675f736c6f745f64656c61798d0101304f7074696f6e3c5469636b3e0001887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73658d0101304f7074696f6e3c5469636b3e000104bc41646d696e2066756e6374696f6e20746f2075706461746520746865206d696e696e6720736c6f742064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e11030c5070616c6c65745f626974636f696e5f7574786f731870616c6c65741043616c6c0404540001141073796e630401247574786f5f73796e631503013c426974636f696e5574786f53796e63000004e85375626d6974746564207768656e206120626974636f696e205554584f20686173206265656e206d6f766564206f7220636f6e6669726d65642e4c7365745f636f6e6669726d65645f626c6f636b080138626974636f696e5f686569676874300134426974636f696e486569676874000148626974636f696e5f626c6f636b5f68617368d00140426974636f696e426c6f636b4861736800011449015365747320746865206d6f737420726563656e7420636f6e6669726d656420626974636f696e20626c6f636b2068656967687420286f6e6c792065786563757461626c6520627920746865204f7261636c65444f70657261746f72206163636f756e7429002c2320417267756d656e747311012a2060626974636f696e5f68656967687460202d20746865206c617465737420626974636f696e20626c6f636b2068656967687420746f20626520636f6e6669726d6564307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400021025015365747320746865206f7261636c65206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f726066756e645f776974685f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600030cec42696e6420612063616e646964617465205554584f20726566206173207468652066756e64696e67205554584f20666f7220697473206c6f636b2e3d01546865206c6f636b732070616c6c657420617574686f72697a6573207468652070726f6d6f74696f6e3b20746869732070616c6c65742062696e6473207468652072656620616e6420626567696e7324747261636b696e672e5472656a6563745f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f526566000408450152656a65637420612070656e64696e672063616e646964617465205554584f20616e64206d6174657269616c697a6520697420617320616e206f727068616e207468726f75676820746865206c6f636b731c70616c6c65742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e15030c406172676f6e5f7072696d69746976657324696e686572656e74733c426974636f696e5574786f53796e6300000c01147370656e74190301545665633c426974636f696e5574786f5370656e643e00011866756e6465642503015c5665633c426974636f696e5574786f46756e64696e673e00013473796e635f746f5f626c6f636b2d030130426974636f696e426c6f636b000019030000021d03001d030c406172676f6e5f7072696d69746976657324696e686572656e747340426974636f696e5574786f5370656e6400000c011c7574786f5f69642c01185574786f49640001207574786f5f7265662103013c4f7074696f6e3c5574786f5265663e000138626974636f696e5f6865696768742c0134426974636f696e4865696768740000210304184f7074696f6e04045401cc0108104e6f6e6500000010536f6d650400cc0000010000250300000229030029030c406172676f6e5f7072696d69746976657324696e686572656e747348426974636f696e5574786f46756e64696e67000014011c7574786f5f69642c01185574786f49640001207574786f5f726566cc011c5574786f5265660001207361746f736869732c01205361746f7368697300014465787065637465645f7361746f736869732c01205361746f73686973000138626974636f696e5f6865696768742c0134426974636f696e48656967687400002d030c406172676f6e5f7072696d6974697665731c626974636f696e30426974636f696e426c6f636b0000080130626c6f636b5f6865696768742c0134426974636f696e486569676874000128626c6f636b5f68617368d00140426974636f696e426c6f636b48617368000031030c3470616c6c65745f7661756c74731870616c6c65741043616c6c040454000124186372656174650401307661756c745f636f6e6669673503015c5661756c74436f6e6669673c543a3a42616c616e63653e000000386d6f646966795f66756e64696e670c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800012061014d6f646966792066756e647320616c6c6f636174656420627920746865207661756c742e20546869732077696c6c206e6f74206166666563742069737375656420626974636f696e206c6f636b732c206275742077696c6cc86166666563742074686520616d6f756e74206f662066756e647320617661696c61626c6520666f72206e6577206f6e65732e00ec5468652073656375726974697a6174696f6e2070657263656e74206d757374206265206d61696e7461696e6564206f7220696e637265617365642e00610154686520616d6f756e7420616c6c6f6361746564206d6179206e6f7420676f2062656c6f7720746865206578697374696e6720726573657276656420616d6f756e74732c2062757420796f752063616e2072656c656173654d0166756e647320696e2074686973207661756c7420617320626974636f696e206c6f636b73206172652072656c65617365642e20546f2073746f702069737375696e6720616e79206d6f726520626974636f696e6c6c6f636b732c20757365207468652060636c6f736560206170692e306d6f646966795f7465726d730801207661756c745f696410011c5661756c7449640001147465726d73390301585661756c745465726d733c543a3a42616c616e63653e0002084d014368616e676520746865207465726d73206f662074686973207661756c742e20546865206368616e67652077696c6c206265206170706c69656420617420746865206e657874206d696e696e67206672616d6515016368616e67652074686174206973206174206c6561737420604d696e5465726d734d6f64696669636174696f6e426c6f636b44656c61796020626c6f636b7320617761792e14636c6f73650401207661756c745f696410011c5661756c744964000308410153746f70206f66666572696e67206164646974696f6e616c20626974636f696e206c6f636b732066726f6d2074686973207661756c742e2057696c6c206e6f7420616666656374206578697374696e671d016c6f636b732e2041732066756e6473206172652072657475726e65642c20746865792077696c6c2062652072656c656173656420746f20746865207661756c74206f776e65722e507265706c6163655f626974636f696e5f787075620801207661756c745f696410011c5661756c744964000130626974636f696e5f78707562510301444f7061717565426974636f696e5870756200040c61015265706c6163652074686520626974636f696e20787075626b657920666f722074686973207661756c742e20546869732077696c6c206e6f7420616666656374206578697374696e6720626974636f696e206c6f636b732c31016275742077696c6c206265207573656420666f7220616e79206c6f636b73206166746572207468697320706f696e742e2057696c6c2062652072656a656374656420696620616c726561647914757365642e1c636f6c6c6563740401207661756c745f696410011c5661756c744964000500647365745f626974636f696e5f6c6f636b5f64656c656761746504014c64656c65676174655f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e000600207365745f6e616d650401106e616d65490301444f7074696f6e3c5661756c744e616d653e000700587365745f636f6d6d69747465645f6172676f6e6f7473040118616d6f756e74c00128543a3a42616c616e6365000800040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35030c3470616c6c65745f7661756c74731870616c6c65742c5661756c74436f6e666967041c42616c616e63650118001401147465726d733903014c5661756c745465726d733c42616c616e63653e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e00013873656375726974697a6174696f6ec0011c42616c616e636500013c626974636f696e5f787075626b6579510301444f7061717565426974636f696e5870756200015073656375726974697a6174696f6e5f726174696f3d030124466978656455313238000039030c406172676f6e5f7072696d697469766573147661756c74285661756c745465726d73041c42616c616e63650118000c016c626974636f696e5f616e6e75616c5f70657263656e745f726174653d030124466978656455313238000140626974636f696e5f626173655f666565c0011c42616c616e636500015c74726561737572795f70726f6669745f73686172696e674103011c5065726d696c6c00003d03000006e000410300000645030045030c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000490304184f7074696f6e040454014d030108104e6f6e6500000010536f6d6504004d0300000100004d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000051030c406172676f6e5f7072696d6974697665731c626974636f696e444f7061717565426974636f696e5870756200000400550301205b75383b2037385d000055030000034e000000080059030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65741043616c6c04045400012428696e697469616c697a651001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0000205901496e697469616c697a65206120626974636f696e206c6f636b2e20546869732077696c6c206372656174652061204c6f636b6564426974636f696e20666f7220746865207375626d697474696e67206163636f756e74a8616e64206c6f672074686520426974636f696e20536372697074206861736820746f204576656e74732e005d01546865207075626b6579207375626d697474656420686572652077696c6c206265207573656420746f20637265617465206120736372697074207075626b657920746861742077696c6c206265207573656420696e2061b474696d656c6f636b206d756c74697369672073637269707420746f206c6f636b2074686520626974636f696e2e0039014e4f54453a204120226c6f636b2d657222206d7573742073656e642062746320746f2074686520636f7369676e6572205554584f206164647265737320746f2022636f6d706c6574652220746865d04c6f636b6564426974636f696e20616e6420626520616464656420746f2074686520426974636f696e204d696e74206c696e652e3c726571756573745f72656c656173650c011c7574786f5f69643001185574786f4964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300011851015375626d6974746564206279206120426974636f696e20686f6c64657220746f2074726967676572207468652072656c65617365206f66207468656972205574786f206f7574206f662074686520636f7369676e45017363726970742e2041207472616e73616374696f6e207370656e64696e6720746865205554584f2073686f756c64206265207072652d6372656174656420736f20746861742074686520736967686173683d0163616e206265207375626d697474656420686572652e20546865207661756c74206f70657261746f722077696c6c2068617665203130206461797320746f20636f756e7465722d7369676e2074686555017472616e73616374696f6e2e2049742077696c6c206265207075626c6973686564207769746820746865207075626c6963206b6579206173206120426974636f696e5574786f436f7369676e6564204576656e742e003d014f776e6572206d757374207375626d6974206120736372697074207075626b657920616e6420616c736f20612066656520746f2070617920746f2074686520626974636f696e206e6574776f726b2e38636f7369676e5f72656c6561736508011c7574786f5f69643001185574786f49640001247369676e6174757265e80140426974636f696e5369676e617475726500021461015375626d69747465642062792061205661756c74206f70657261746f7220746f20636f7369676e207468652072656c65617365206f66206120626974636f696e207574786f2e2054686520426974636f696e206f776e6572550172656c65617365206665652077696c6c206265206275726e65642c20616e6420746865206c6f636b2077696c6c20626520616c6c6f77656420746f2065787069726520776974686f757420612070656e616c74792e004d0154686973206973207375626d69747465642061732061206e6f2d666565207472616e73616374696f6e206f666620636861696e20746f20616c6c6f77206b65797320746f2072656d61696e20696e20636f6c642077616c6c6574732e1c7261746368657408011c7574786f5f69643001185574786f496400011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e000338410152617463686574696e6720616c6c6f77732061207573657220746f206368616e676520746865206c6f636b207072696365206f6620746865697220626974636f696e206c6f636b2e2054686973206973510166756e6374696f6e616c6c79207468652073616d652061732072656c656173696e6720616e642072652d696e697469616c697a696e672c2062757420697420616c6c6f77732061207573657220746f20736b6970610173656e64696e67207472616e73616374696f6e73207468726f75676820626974636f696e20616e6420616e79206173736f63696174656420666565732e20497420616c736f20616c6c6f777320796f7520746f20737461794d016f6e20796f7572206f726967696e616c206c6f636b2065787069726174696f6e20776974686f757420686176696e6720746f20706179207468652066756c6c2079656172206f66206665657320616761696e2e00610152617463686574696e672022646f776e22202d207768656e20746865207072696365206f6620626974636f696e206973206c6f776572207468616e20796f7572206c6f636b2070726963652c20796f7520706179207468655d0166756c6c2072656c6561736520707269636520616e6420676574206164646564206261636b20746f20746865206d696e74207175657565206174207468652063757272656e74206d61726b657420726174652e20596f755901706f636b65742074686520646966666572656e6365206265747765656e2074686520616c7265616479206d696e74656420226c6f636b2070726963652220616e6420746865206e6577206d61726b65742076616c7565550128776869636820796f75206a75737420686164206275726e6564292e20596f7572206e6577206c6f636b2070726963652069732073657420746f20746865206d61726b6574206c6f772c20736f20796f752063616eb874616b6520616476616e74616765206f66207261746368657473202275702220696e20746865206675747572652e00550152617463686574696e672022757022202d207768656e20746865207072696365206f6620626974636f696e20697320686967686572207468616e20796f7572206c6f636b2070726963652c20796f75207061792061610170726f72617465642066656520666f72207468652072656d61696e646572206f6620796f7572206578697374696e67206c6f636b206475726174696f6e2e20596f752061726520616464656420746f20746865206d696e742d01717565756520666f722074686520646966666572656e636520696e20796f7572206e6577206c6f636b207072696365207673207468652070726576696f7573206c6f636b2070726963652e8061646d696e5f6d6f646966795f6d696e696d756d5f6c6f636b65645f736174730401207361746f736869733001205361746f7368697300040074726571756573745f6f727068616e65645f7574786f5f72656c656173650c01207574786f5f726566cc011c5574786f526566000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300050070636f7369676e5f6f727068616e65645f7574786f5f72656c656173650c01306f727068616e5f6f776e6572000130543a3a4163636f756e7449640001207574786f5f726566cc011c5574786f5265660001247369676e6174757265e80140426974636f696e5369676e617475726500061c41014e4f54453a2054686520607369676e61747572656020706172616d65746572206973204e4f54207665726966696564206f6e2d636861696e2e20546865206f727068616e207265636f726420646f657339016e6f742072657461696e2074686520636f7369676e207363726970742061726773206e656564656420666f7220766572696669636174696f6e2028746865792061726520636c65616e6564207570f4776974682074686520426974636f696e4c6f636b292e20546865207369676e617475726520697320706173736564207468726f75676820746f207468654101604f727068616e65645574786f436f7369676e656460206576656e7420736f20746865206c6f636b206f776e65722063616e20636f6e7374727563742074686520426974636f696e2072656c6561736535017472616e73616374696f6e206f66662d636861696e2e20412067617262616765207369676e6174757265206d65616e7320746865206f776e65722063616e2774207370656e6420e28094206e6f41016f6e2d636861696e2064616d6167652e20546f20616464206f6e2d636861696e20766572696669636174696f6e2c2074686520636f7369676e20736372697074206172677320776f756c64206e656564f0746f2062652073746f72656420696e20604f727068616e65645574786f60202873746f72616765206d6967726174696f6e207265717569726564292e38696e697469616c697a655f666f721401286163636f756e745f6964000130543a3a4163636f756e7449640001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0008005c696e6372656173655f73656375726974697a6174696f6e08011c7574786f5f69643001185574786f49640001306e65775f7361746f736869732c01205361746f73686973000900040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d030c406172676f6e5f7072696d6974697665731c626974636f696e5c436f6d70726573736564426974636f696e5075626b657900000400610301205b75383b2033335d00006103000003210000000800650304184f7074696f6e0404540169030108104e6f6e6500000010536f6d6504006903000001000069030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65742c4c6f636b4f7074696f6e7304045400010408563104016c6d6963726f676f6e735f61745f7461726765745f7065725f627463850101484f7074696f6e3c543a3a42616c616e63653e000000006d030c406172676f6e5f7072696d6974697665731c626974636f696e4c426974636f696e5363726970745075626b65790000040071030170426f756e6465645665633c75382c20436f6e73745533323c33343e3e000071030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000075030c3c70616c6c65745f6e6f7461726965731870616c6c65741043616c6c04045400010c1c70726f706f73650401106d657461f4013c4e6f746172794d6574614f663c543e0000002061637469766174650401406f70657261746f725f6163636f756e74000130543a3a4163636f756e744964000100187570646174650c01246e6f746172795f6964d401204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b2c01105469636b000208610155706461746520746865206d65746164617461206f662061206e6f746172792c20746f206265206566666563746976652061742074686520676976656e207469636b206865696768742c207768696368206d757374206265b03e3d204d6574614368616e6765735469636b44656c6179207469636b7320696e20746865206675747572652e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e79030c3c70616c6c65745f6e6f7465626f6f6b1870616c6c65741043616c6c040454000108187375626d69740401246e6f7465626f6f6b737d0301645665633c5369676e65644e6f7465626f6f6b4865616465723e00000018756e6c6f636b0401246e6f746172795f69641001204e6f746172794964000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7d0300000281030081030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b505369676e65644e6f7465626f6f6b4865616465720000080118686561646572850301384e6f7465626f6f6b4865616465720001247369676e6174757265b503013c4e6f746172795369676e6174757265000085030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b384e6f7465626f6f6b48656164657200003c011c76657273696f6e8903010c75313600013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00010c746178c00110753132380001246e6f746172795f6964d401204e6f74617279496400013c636861696e5f7472616e73666572738d0301bc426f756e6465645665633c436861696e5472616e736665722c204d61784e6f7465626f6f6b5472616e73666572733e0001546368616e6765645f6163636f756e74735f726f6f743401104832353600015c6368616e6765645f6163636f756e745f6f726967696e73990301c4426f756e6465645665633c4163636f756e744f726967696e2c20436f6e73745533323c7b207533323a3a4d4158207d3e3e000140626c6f636b5f766f7465735f726f6f7434011048323536000144626c6f636b5f766f7465735f636f756e74d4010c753332000144626c6f636b735f776974685f766f746573a5030180426f756e6465645665633c483235362c20436f6e73745533323c313030303e3e000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e00011c646f6d61696e73a90301e8426f756e6465645665633c28446f6d61696e486173682c204163636f756e744964292c204d6178446f6d61696e735065724e6f7465626f6f6b3e000089030000069c008d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019103045300000400950301185665633c543e000091030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b34436861696e5472616e736665720001082c546f4d61696e636861696e0801286163636f756e745f69640001244163636f756e744964000118616d6f756e74c001107531323800000030546f4c6f63616c636861696e04012c7472616e736665725f6964d401585472616e73666572546f4c6f63616c636861696e496400010000950300000291030099030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d03045300000400a10301185665633c543e00009d030c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e6765344163636f756e744f726967696e000008013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d62657200012c6163636f756e745f756964d401404163636f756e744f726967696e5569640000a1030000029d0300a5030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000a9030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad03045300000400b10301185665633c543e0000ad0300000408340000b103000002ad0300b503000003400000000800b9030c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c65741043616c6c0404540001044873656e645f746f5f6c6f63616c636861696e080118616d6f756e74c001583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd030c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c65741043616c6c04045400010424636f6e666967757265080130766f74655f6d696e696d756d8501014c4f7074696f6e3c566f74654d696e696d756d3e000148636f6d707574655f646966666963756c7479850101304f7074696f6e3c753132383e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec1030c3870616c6c65745f646f6d61696e731870616c6c65741043616c6c0404540001043c7365745f7a6f6e655f7265636f726408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec5030c4870616c6c65745f70726963655f696e6465781870616c6c65741043616c6c040454000108187375626d6974040114696e646578c90301285072696365496e64657800000435015375626d697420746865206c617465737420707269636520696e6465782e204f6e6c792076616c696420666f722074686520636f6e66696775726564206f70657261746f72206163636f756e74307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400011009015365747320746865206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f72040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec903084870616c6c65745f70726963655f696e646578285072696365496e64657800001801346274635f7573645f70726963653d0301244669786564553132380001446172676f6e6f745f7573645f7072696365e0012446697865645531323800013c6172676f6e5f7573645f70726963653d0301244669786564553132380001586172676f6e5f7573645f7461726765745f7072696365e001244669786564553132380001946172676f6e5f74696d655f77656967687465645f617665726167655f6c697175696469747918011c42616c616e63650001107469636b2c01105469636b0000cd030c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e0002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed103085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480134044e0110000801187365745f6964300114536574496400013065717569766f636174696f6ed503014845717569766f636174696f6e3c482c204e3e0000d503085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480134044e011001081c507265766f74650400d90301890166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265766f74653c0a482c204e3e2c20417574686f726974795369676e61747572652c3e00000024507265636f6d6d69740400e90301910166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265636f6d6d69740a3c482c204e3e2c20417574686f726974795369676e61747572652c3e00010000d903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601dd03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374e503011828562c2053290001187365636f6e64e503011828562c2053290000dd03084066696e616c6974795f6772616e6470611c507265766f74650804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000e1030c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e617475726500000400b5030148656432353531393a3a5369676e61747572650000e50300000408dd03e10300e903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601ed03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374f103011828562c2053290001187365636f6e64f103011828562c2053290000ed03084066696e616c6974795f6772616e64706124507265636f6d6d69740804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000f10300000408ed03e10300f503081c73705f636f726510566f696400010000f9030c4470616c6c65745f626c6f636b5f7365616c1870616c6c65741043616c6c040454000104146170706c790401107365616cfd030144426c6f636b5365616c496e686572656e74000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd030c406172676f6e5f7072696d69746976657324696e686572656e747344426c6f636b5365616c496e686572656e7400010810566f74651801347365616c5f737472656e677468ad020110553235360001246e6f746172795f6964d401204e6f746172794964000158736f757263655f6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d626572000154736f757263655f6e6f7465626f6f6b5f70726f6f660104012c4d65726b6c6550726f6f66000128626c6f636b5f766f746509040124426c6f636b566f74650001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000001c436f6d707574650001000001040c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e67652c4d65726b6c6550726f6f6600000c011470726f6f66050401a0426f756e6465645665633c483235362c20436f6e73745533323c7b207533323a3a4d4158207d3e3e0001406e756d6265725f6f665f6c6561766573d4010c7533320001286c6561665f696e646578d4010c753332000005040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000009040c406172676f6e5f7072696d69746976657328626c6f636b5f766f746528426c6f636b566f7465540410486173680134001c01286163636f756e745f69640001244163636f756e744964000128626c6f636b5f6861736834011048617368000114696e646578d4010c753332000114706f776572c00140426c6f636b566f74696e67506f7765720001247369676e61747572650d0401384d756c74695369676e6174757265000160626c6f636b5f726577617264735f6163636f756e745f69640001244163636f756e7449640001107469636b2c01105469636b00000d04082873705f72756e74696d65384d756c74695369676e61747572650001101c456432353531390400b5030148656432353531393a3a5369676e61747572650000001c537232353531390400b5030148737232353531393a3a5369676e617475726500010014456364736104001104014065636473613a3a5369676e61747572650002000c45746804001104015865636473613a3a4b656363616b5369676e617475726500030000110400000341000000080015040c5070616c6c65745f626c6f636b5f726577617264731870616c6c65741043616c6c040454000104607365745f626c6f636b5f726577617264735f706175736564040118706175736564200110626f6f6c000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e19040c2c70616c6c65745f6d696e741870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1d040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e21040c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e6372656173650000002044656372656173650001000025040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29040c3c70616c6c65745f74785f70617573651870616c6c65741043616c6c04045400010814706175736504012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e00001034506175736520612063616c6c2e00b843616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a50617573654f726967696e605d2ec0456d69747320616e205b604576656e743a3a43616c6c506175736564605d206576656e74206f6e20737563636573732e1c756e70617573650401146964656e74c901015052756e74696d6543616c6c4e616d654f663c543e00011040556e2d706175736520612063616c6c2e00c043616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a556e70617573654f726967696e605d2ec8456d69747320616e205b604576656e743a3a43616c6c556e706175736564605d206576656e74206f6e20737563636573732e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2d040c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012014626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465789c010c75313600011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e1c69665f656c73650801106d61696ef502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00012066616c6c6261636bf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00065c1501446973706174636820612066616c6c6261636b2063616c6c20696e20746865206576656e7420746865206d61696e2063616c6c206661696c7320746f20657865637574652eb04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e00e4546869732066756e6374696f6e20666972737420617474656d70747320746f2064697370617463682074686520606d61696e602063616c6c2ed449662074686520606d61696e602063616c6c206661696c732c20746865206066616c6c6261636b6020697320617474656d7465642e15016966207468652066616c6c6261636b206973207375636365737366756c6c7920646973706174636865642c207468652077656967687473206f6620626f74682063616c6c73250161726520616363756d756c6174656420616e6420616e206576656e7420636f6e7461696e696e6720746865206d61696e2063616c6c206572726f72206973206465706f73697465642e00dc496e20746865206576656e74206f6620612066616c6c6261636b206661696c757265207468652077686f6c652063616c6c206661696c7368776974682074686520776569676874732072657475726e65642e0041012d20606d61696e603a20546865206d61696e2063616c6c20746f20626520646973706174636865642e205468697320697320746865207072696d61727920616374696f6e20746f20657865637574652e3d012d206066616c6c6261636b603a205468652066616c6c6261636b2063616c6c20746f206265206469737061746368656420696e20636173652074686520606d61696e602063616c6c206661696c732e00442323204469737061746368204c6f67696341012d20496620746865206f726967696e2069732060726f6f74602c20626f746820746865206d61696e20616e642066616c6c6261636b2063616c6c732061726520657865637574656420776974686f75747820206170706c79696e6720616e79206f726967696e2066696c746572732e49012d20496620746865206f726967696e206973206e6f742060726f6f74602c20746865206f726967696e2066696c746572206973206170706c69656420746f20626f74682074686520606d61696e6020616e644c20206066616c6c6261636b602063616c6c732e002c232320557365204361736559012d20536f6d6520757365206361736573206d6967687420696e766f6c7665207375626d697474696e672061206062617463686020747970652063616c6c20696e20656974686572206d61696e2c2066616c6c6261636b2820206f7220626f74682e5064697370617463685f61735f66616c6c69626c6508012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000714c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e005101416c6d6f7374207468652073616d65206173205b6050616c6c65743a3a64697370617463685f6173605d2062757420666f72776172647320616e79206572726f72206f662074686520696e6e65722063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3104000002f5020035040c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000114107375646f04011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000004350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e547375646f5f756e636865636b65645f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000114350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e1c7365745f6b657904010c6e6577fd0201504163636f756e7449644c6f6f6b75704f663c543e0002085d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e1c7375646f5f617308010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0003104d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2872656d6f76655f6b657900040c845065726d616e656e746c792072656d6f76657320746865207375646f206b65792e006c2a2a546869732063616e6e6f7420626520756e2d646f6e652e2a2a040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e39040c3c70616c6c65745f74726561737572791870616c6c65741043616c6c040454000108246275795f626f6e64730801207661756c745f696410011c5661756c744964000114626f6e6473100114426f6e647300040c984275792077686f6c65206031204152474f4e6020626f6e647320666f722061207661756c742e00d85468652070757263686173652065697468657220656e7465727320746865206163636570746564206c697374206f72206661696c732e486c69717569646174655f626f6e645f6c6f7404012c626f6e645f6c6f745f6964300124426f6e644c6f74496400050c704c6971756964617465206f6e652066756c6c20626f6e64206c6f742e001d01546865206c6f742073746f70732070617274696369706174696e67207269676874206177617920616e642069732072656c6561736564206166746572207468652064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65741043616c6c040454000118207265676973746572040130726567697374726174696f6e4104013c526567697374726174696f6e3c543e00000c31015265676973746572207661756c742c206d696e696e672066756e64696e672c20616e6420626f74206163636f756e747320666f7220616e206f7065726174696f6e616c206163636f756e742eec416e79206163636f756e7420696e2074686520726567697374726174696f6e206d6179207375626d697420746865207472616e73616374696f6e2e4d014966206120726566657272616c2070726f6f662069732070726f76696465642c2074686520726567697374726174696f6e207265636f726473207468652073706f6e736f722072656c6174696f6e736869702e447365745f7265776172645f636f6e66696708016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e6365000204bc5570646174652072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e48666f7263655f7365745f70726f67726573730c01146f776e6572000130543a3a4163636f756e7449640001147061746368590401904f7065726174696f6e616c50726f677265737350617463683c543a3a42616c616e63653e00016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c000304e4466f7263652d757064617465206f7065726174696f6e616c2070726f6772657373206d61726b65727320666f7220616e206163636f756e742e807365745f656e637279707465645f7365727665725f666f725f73706f6e73656508011c73706f6e736565000130543a3a4163636f756e744964000140656e637279707465645f73657276657238011c5665633c75383e000404550153746f726520616e206f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f616420666f7220612073706f6e736f726564206f7065726174696f6e616c206163636f756e742e2061637469766174650005040901416374697661746520616e20656c696769626c65206f7065726174696f6e616c206163636f756e742066726f6d20616e79206d616e61676564206163636f756e742e34636c61696d5f72657761726473040118616d6f756e74180128543a3a42616c616e6365000604e4436c61696d2070656e64696e67206f7065726174696f6e616c207265776172647320746f20616e79206d616e61676564206163636f756e742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657430526567697374726174696f6e040454000104085631040045040144526567697374726174696f6e56313c543e0000000045040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657438526567697374726174696f6e5631040454000028014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b65790001646f7065726174696f6e616c5f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400014c7661756c745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001706d696e696e675f66756e64696e675f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001606d696e696e675f626f745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f66000138726566657272616c5f70726f6f665104018c4f7074696f6e3c526566657272616c50726f6f663c543a3a4163636f756e7449643e3e000049040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574584f7061717565456e6372797074696f6e5075626b6579000004000401205b75383b2033325d00004d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574544163636f756e744f776e65727368697050726f6f6600000401247369676e61747572650d0401245369676e61747572650000510404184f7074696f6e0404540155040108104e6f6e6500000010536f6d6504005504000001000055040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657434526566657272616c50726f6f6604244163636f756e744964010000140134726566657272616c5f636f646504013c737232353531393a3a5075626c6963000148726566657272616c5f7369676e6174757265b5030148737232353531393a3a5369676e617475726500011c73706f6e736f720001244163636f756e744964000140657870697265735f61745f6672616d652c011c4672616d65496400014473706f6e736f725f7369676e61747572650d0401245369676e6174757265000059040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574604f7065726174696f6e616c50726f67726573735061746368041c42616c616e63650118001401506861735f756e69737761705f7472616e736665725d0401304f7074696f6e3c626f6f6c3e0001347661756c745f637265617465645d0401304f7074696f6e3c626f6f6c3e00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e5d0401304f7074696f6e3c626f6f6c3e0001586f627365727665645f626974636f696e5f746f74616c8501013c4f7074696f6e3c42616c616e63653e0001686f627365727665645f6d696e696e675f736561745f746f74616c7102012c4f7074696f6e3c7533323e00005d0404184f7074696f6e04045401200108104e6f6e6500000010536f6d65040020000001000061040c6070616c6c65745f657468657265756d5f76657269666965721870616c6c65741043616c6c04045400010c40666f7263655f636865636b706f696e7408011875706461746565040154426f783c436865636b706f696e745570646174653e000134666f726b5f76657273696f6e7395040130466f726b56657273696f6e7300000841015573656420666f722070616c6c657420696e697469616c697a6174696f6e20616e64206c6967687420636c69656e7420726573657474696e672e204e6565647320746f2062652063616c6c65642062794074686520726f6f74206f726967696e2e187375626d69740401187570646174659d04012c426f783c5570646174653e00010c35015375626d6974732061206e65772066696e616c697a656420626561636f6e20686561646572207570646174652e2054686520757064617465206d617920636f6e7461696e20746865206e657874450173796e6320636f6d6d697474656520616e6420616e20657865637574696f6e20686561646572207769746e65737320666f72207468652066696e616c697a656420626561636f6e2068656164657220697424616476616e6365732e487365745f6f7065726174696e675f6d6f64650401106d6f6465fd01014842617369634f7065726174696e674d6f6465000304050148616c74206f7220726573756d6520616c6c2070616c6c6574206f7065726174696f6e732e204d6179206f6e6c792062652063616c6c656420627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e65040c6070616c6c65745f657468657265756d5f766572696669657214747970657340436865636b706f696e74557064617465000014011868656164657269040130426561636f6e48656164657200015863757272656e745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d697474656500017463757272656e745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f6600013c76616c696461746f72735f726f6f7434011048323536000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f66000069040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657330426561636f6e4865616465720000140110736c6f7430010c75363400013870726f706f7365725f696e64657830013856616c696461746f72496e64657800012c706172656e745f726f6f743401104832353600012873746174655f726f6f7434011048323536000124626f64795f726f6f743401104832353600006d040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63436f6d6d6974746565000008011c7075626b657973710401f8426f756e6465645665633c5075626c69634b65792c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579750401245075626c69634b6579000071040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540175040453000004007d0401185665633c543e000075040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245075626c69634b657900000400790401445b75383b205055424b45595f53495a455d000079040000033000000008007d0400000275040081040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000085040c6070616c6c65745f657468657265756d5f766572696669657214747970657350457865637574696f6e48656164657250726f6f660000080140657865637574696f6e5f6865616465728904017c56657273696f6e6564457865637574696f6e5061796c6f6164486561646572000140657865637574696f6e5f6272616e63688104012c4272616e636850726f6f66000089040c70736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065737c56657273696f6e6564457865637574696f6e5061796c6f61644865616465720001081c436170656c6c6104008d040158457865637574696f6e5061796c6f61644865616465720000001444656e656204009104017464656e65623a3a457865637574696f6e5061796c6f6164486561646572000100008d040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657358457865637574696f6e5061796c6f616448656164657200003c012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000091041070736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065731464656e656258457865637574696f6e5061796c6f6164486561646572000044012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000134626c6f625f6761735f7573656430010c75363400013c6578636573735f626c6f625f67617330010c753634000095040c6070616c6c65745f657468657265756d5f766572696669657214747970657330466f726b56657273696f6e7300001c011c67656e6573697399040110466f726b000118616c7461697299040110466f726b00012462656c6c617472697899040110466f726b00011c636170656c6c6199040110466f726b00011464656e656299040110466f726b00011c656c656374726199040110466f726b00011066756c7599040110466f726b000099040c6070616c6c65745f657468657265756d5f766572696669657214747970657310466f726b000008011c76657273696f6e48012c466f726b56657273696f6e00011465706f63682c010c75363400009d040c6070616c6c65745f657468657265756d5f76657269666965721474797065731855706461746500001c013c61747465737465645f68656164657269040130426561636f6e48656164657200013873796e635f616767726567617465a104013453796e634167677265676174650001387369676e61747572655f736c6f742c010c7536340001686e6578745f73796e635f636f6d6d69747465655f757064617465b104017c4f7074696f6e3c4e65787453796e63436f6d6d69747465655570646174653e00014066696e616c697a65645f68656164657269040130426561636f6e48656164657200013c66696e616c6974795f6272616e63688104012c4272616e636850726f6f66000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f660000a1040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63416767726567617465000008014c73796e635f636f6d6d69747465655f62697473a50401f0426f756e6465645665633c75382c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424954535f424f554e445f53495a45207d3e3e00016073796e635f636f6d6d69747465655f7369676e6174757265a90401245369676e61747572650000a5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000a9040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245369676e617475726500000400ad0401505b75383b205349474e41545552455f53495a455d0000ad04000003600000000800b10404184f7074696f6e04045401b5040108104e6f6e6500000010536f6d650400b5040000010000b5040c6070616c6c65745f657468657265756d5f76657269666965721474797065735c4e65787453796e63436f6d6d6974746565557064617465000008014c6e6578745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d69747465650001686e6578745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f660000b9040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65741043616c6c040454000134407365745f636861696e5f636f6e666967080130736f757263655f636861696e0502012c536f75726365436861696e000118636f6e666967bd04012c436861696e436f6e66696700000084666f7263655f7365745f676c6f62616c5f69737375616e63655f636f756e63696c0c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c61667465725f6e6f6e63652c0164436f756e63696c417070726f76616c51756575654e6f6e63650001486d656d6265725f6163636f756e745f696473c10401b8426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d6178436f756e63696c4d656d626572733e0001003470617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0002003c756e70617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0003008c7365745f6d696e696d756d5f6d696e74696e675f617574686f726974795f76616c756508014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565c00128543a3a42616c616e6365000400c87365745f6d696e74696e675f617574686f726974795f61637469766174696f6e5f72657061796d656e745f70726963696e6708014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011c70726963696e67c50401b44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e673c543e0005005c72656769737465725f636f756e63696c5f7369676e65720c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500060054617070726f76655f71756575655f656e747269657308014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001287369676e617475726573c90401e0426f756e6465645665633c4b656363616b5369676e61747572652c20543a3a4d61785175657565417070726f76616c7350657243616c6c3e0007005870726f76655f676174657761795f61637469766974790c0130736f757263655f636861696e0502012c536f75726365436861696e00017c70726576696f75735f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500012c70726f6f665f6261746368d104017047617465776179416374697669747950726f6f6642617463683c543e0008006872656769737465725f6d696e74696e675f617574686f7269747914014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e636500090070646561637469766174655f6d696e74696e675f617574686f7269747908015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e6174757265000a00307472616e736665725f6f757410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011461737365741502012441737365744b696e6400014c64657374696e6174696f6e5f6163636f756e740d02011048313630000118616d6f756e74c00128543a3a42616c616e6365000b0058636f6c6c61746572616c697a655f7472616e7366657210012c7472616e736665725f6964340110483235360001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e6365000c00040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c436861696e436f6e6669670001040c45766d100120636861696e5f69642c010c75363400011c676174657761790d0201104831363000012c6172676f6e5f746f6b656e0d020110483136300001346172676f6e6f745f746f6b656e0d0201104831363000000000c1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000c5040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574a84d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67040454000010014c61637469766174696f6e5f6761735f636f7374c00110753132380001487369676e61747572655f6761735f636f7374c0011075313238000154657374696d617465645f7765695f7065725f676173c001107531323800016c657374696d617465645f6d6963726f676f6e735f7065725f657468180128543a3a42616c616e63650000c9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011104045300000400cd0401185665633c543e0000cd04000002110400d1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426174636808384d617850726f6f66426c6f636b7300384d6178526563656970744c6f67730000080154657865637574696f6e5f626c6f636b5f70726f6f66d504016c457468657265756d457865637574696f6e426c6f636b50726f6f66000118626c6f636b73e904012501426f756e6465645665633c457468657265756d526563656970744c6f6750726f6f66426c6f636b3c4d6178526563656970744c6f67733e2c204d617850726f6f66426c6f636b730a3e0000d5040c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d457865637574696f6e426c6f636b50726f6f660000080144616e63686f725f626c6f636b5f68617368340110483235360001747461726765745f746f5f616e63686f725f6865616465725f636861696ed9040170457468657265756d457865637574696f6e486561646572436861696e0000d9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401dd04045300000400e50401185665633c543e0000dd040c406172676f6e5f7072696d69746976657320657468657265756d5c457468657265756d457865637574696f6e486561646572000004010c726c70e1040168457468657265756d457865637574696f6e486561646572526c700000e1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000e504000002dd0400e9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed04045300000400290501185665633c543e0000ed040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426c6f636b04384d6178526563656970744c6f677300000c014c7461726765745f626c6f636b5f6e756d6265722c014c457468657265756d426c6f636b4e756d626572000134726563656970745f70726f6f66f1040170457468657265756d436f6d62696e65645265636569707450726f6f66000130726563656970745f6c6f6773110501b8426f756e6465645665633c457468657265756d526563656970744c6f672c204d6178526563656970744c6f67733e0000f1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d436f6d62696e65645265636569707450726f6f6600000801146e6f646573f5040184457468657265756d436f6d62696e65645265636569707450726f6f664e6f6465730001207265636569707473fd040190457468657265756d436f6d62696e65645265636569707450726f6f6652656365697074730000f5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e104045300000400f90401185665633c543e0000f904000002e10400fd040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540101050453000004000d0501185665633c543e000001050c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d5265636569707450726f6f665265636569707400000801447472616e73616374696f6e5f696e6465782c010c7536340001306e6f64655f696e64657865730505017c457468657265756d5265636569707450726f6f664e6f6465496e6465786573000005050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019c045300000400090501185665633c543e000009050000029c000d0500000201050011050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011505045300000400250501185665633c543e000015050c406172676f6e5f7072696d69746976657320657468657265756d48457468657265756d526563656970744c6f6700000801447472616e73616374696f6e5f696e6465782c010c7536340001246576656e745f6c6f671905012c457468657265756d4c6f67000019050c406172676f6e5f7072696d69746976657320657468657265756d2c457468657265756d4c6f6700000c011c616464726573730d02011048313630000118746f706963731d050144457468657265756d4c6f67546f70696373000110646174612105013c457468657265756d4c6f674461746100001d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000021050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000025050000021505002905000002ed04002d0504184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000031050c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704a04d756c7469736967206f7065726174696f6e206e6f7420666f756e6420696e2073746f726167652e204e6f744f776e657200080851014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c206974206f722075706461746534697473206465706f736974732e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3505000004083905180039050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454013d05045300000400410501185665633c543e00003d05083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501982c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f7479706598012450726f78795479706500011464656c617910012c426c6f636b4e756d626572000041050000023d05004505000004084905180049050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d05045300000400510501185665633c543e00004d05083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801342c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683401104861736800011868656967687410012c426c6f636b4e756d626572000051050000024d050055050c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e59050c406172676f6e5f7072696d697469766573107469636b185469636b657200000801507469636b5f6475726174696f6e5f6d696c6c69732c010c7536340001746368616e6e656c5f686f6c645f65787069726174696f6e5f7469636b732c01105469636b00005d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000061050c3070616c6c65745f7469636b731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e65050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560169050453000004007905013842547265654d61703c4b2c20563e000069050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016d05045300000400750501185665633c543e00006d05084870616c6c65745f6d696e696e675f736c6f74444d696e65724e6f6e636553636f72696e6704045400001001146e6f6e6365ad020110553235360001386c6173745f77696e5f626c6f636b710201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00014c626c6f636b735f776f6e5f696e5f6672616d659c010c7531360001786672616d655f73746172745f626c6f636b735f776f6e5f737572706c75737105010c693136000071050000050a0075050000026d05007905042042547265654d617008044b013004560169050004007d050000007d050000028105008105000004083069050085050000040830100089050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0100045601ac0453000004008d05013842547265654d61703c4b2c20563e00008d05042042547265654d617008044b0100045601ac0004009105000000910500000295050095050000040800ac0099050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d05045300000400a10501185665633c543e00009d050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c384d696e696e6742696453746174730000100128626964735f636f756e7410010c7533320001386269645f616d6f756e745f6d696e18011c42616c616e63650001386269645f616d6f756e745f6d617818011c42616c616e63650001386269645f616d6f756e745f73756d18011c42616c616e63650000a1050000029d0500a5050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e0000a9050000021800ad050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c404d696e696e67536c6f74436f6e66696700000c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73652c01105469636b00014c7469636b735f6265747765656e5f736c6f74732c01105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b732c01105469636b0000b1050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560110045300000400b505013842547265654d61703c4b2c20563e0000b505042042547265654d617008044b013004560110000400b905000000b905000002850500bd050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000c1050000021000c5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560130045300000400c905013842547265654d61703c4b2c20563e0000c905042042547265654d617008044b013004560130000400cd05000000cd05000002d10500d10500000408303000d5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000d9050c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144572726f7204045400012844536c6f744e6f7454616b696e67426964730000049842696464696e6720666f7220746865206e65787420636f686f72742068617320636c6f7365645c546f6f4d616e79426c6f636b52656769737472616e74730001048854686520636f686f727420726567697374726174696f6e206f766572666c6f7765646c496e73756666696369656e744f776e657273686970546f6b656e73000204f8546869732066756e64696e67206163636f756e7420646f6573206e6f7420686f6c6420746865206d696e696d756d206172676f6e6f7473206e656564656424426964546f6f4c6f77000304cc54686520676976656e206269642069736e2774206869676820656e6f75676820746f20626520696e2074686520636f686f72748443616e6e6f7452656769737465724f7665726c617070696e6753657373696f6e73000404c0416e206163636f756e742063616e206f6e6c792068617665206f6e652061637469766520726567697374726174696f6e6843616e6e6f744368616e676546756e64696e674163636f756e74000504f843616e6e6f742072652d726567697374657220616e206163636f756e742077697468206120646966666572656e742066756e64696e67206163636f756e7444496e73756666696369656e7446756e6473000604fc5468652066756e64696e67206163636f756e7420646f6573206e6f74206861766520656e6f7567682066756e647320746f20636f76657220746865206269644842696443616e6e6f7442655265647563656400070480546865206d696e696e67206269642063616e6e6f74206265207265647563656440496e76616c6964426964416d6f756e740008048842696473206d75737420626520696e20616c6c6f77656420696e6372656d656e747344556e7265636f76657261626c65486f6c640009049c546865206172676f6e6f7473206f6e20686f6c642063616e6e6f742062652072656c6561736564048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd050c406172676f6e5f7072696d6974697665731c626974636f696e245574786f56616c7565000014011c7574786f5f69643001185574786f49640001347363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b65790001207361746f736869732c01205361746f7368697300014c7375626d69747465645f61745f6865696768742c0134426974636f696e48656967687400017077617463685f666f725f7370656e745f756e74696c5f6865696768742c0134426974636f696e4865696768740000e1050c406172676f6e5f7072696d6974697665731c626974636f696e64426974636f696e436f7369676e5363726970745075626b6579000104145032575348040130777363726970745f686173683401104832353600000000e5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601dd05045300000400e905013842547265654d61703c4b2c20563e0000e905042042547265654d617008044b0130045601dd05000400ed05000000ed05000002f10500f1050000040830dd0500f5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01cc04560130045300000400f905013842547265654d61703c4b2c20563e0000f905042042547265654d617008044b01cc04560130000400fd05000000fd05000002010600010600000408cc300005060c406172676f6e5f7072696d6974697665731c626974636f696e38426974636f696e4e6574776f726b0001101c426974636f696e0000001c546573746e6574000100185369676e65740002001c526567746573740003000009060c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144572726f7204045400013c344e6f5065726d697373696f6e73000004bc4f6e6c7920616e204f7261636c65204f70657261746f722063616e20706572666f726d207468697320616374696f6e5c4e6f426974636f696e436f6e6669726d6564426c6f636b00010405014e6f204f7261636c652d70726f766964656420626974636f696e20626c6f636b20686173206265656e2070726f766964656420746f20746865206e6574776f726b64496e73756666696369656e74426974636f696e416d6f756e740002046c496e73756666696369656e7420626974636f696e20616d6f756e74604e6f426974636f696e507269636573417661696c61626c65000304a04e6f207072696365732061726520617661696c61626c6520746f206d696e7420626974636f696e73505363726970745075626b6579436f6e666c696374000404a05363726970745075624b657920697320616c7265616479206265696e672077616974656420666f72345574786f4e6f744c6f636b6564000504544c6f636b6564205574786f204e6f7420466f756e6458526564656d7074696f6e73556e617661696c61626c650006048c526564656d7074696f6e73206e6f742063757272656e746c7920617661696c61626c6560496e76616c6964426974636f696e53796e6348656967687400070494496e76616c696420626974636f696e2073796e632068656967687420617474656d7074656464426974636f696e4865696768744e6f74436f6e6669726d656400080480426974636f696e20686569676874206e6f7420636f6e6669726d656420796574404d61785574786f73457863656564656400090480546f6f206d616e79205554584f7320617265206265696e67207761746368656450496e76616c6964426974636f696e536372697074000a04644c6f636b696e672073637269707420686173206572726f72733c4475706c69636174655574786f4964000b04844475706c696361746564205574786f49642e20416c726561647920696e20757365644d617843616e6469646174655574786f734578636565646564000c04dc546f6f206d616e792063616e646964617465205554584f7320617265206265696e672073746f72656420666f722074686973206c6f636b405574786f4e6f7443616e646964617465000d04d0546865205554584f207265666572656e636520646f6573206e6f74206d617020746f20612063616e64696461746520656e747279444c6f636b416c726561647946756e646564000e04b854686973204c6f636b20616c72656164792068617320616e2061747461636865642066756e64696e67205554584f048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d060c406172676f6e5f7072696d697469766573147661756c74145661756c7408244163636f756e74496401001c42616c616e636501180044014c6f70657261746f725f6163636f756e745f69640001244163636f756e744964000174626974636f696e5f6c6f636b5f64656c65676174655f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e0001546c6173745f6e616d655f6368616e67655f7469636b8d0101304f7074696f6e3c5469636b3e00013873656375726974697a6174696f6ec0011c42616c616e636500015473656375726974697a6174696f6e5f746172676574c0011c42616c616e636500015473656375726974697a6174696f6e5f6c6f636b6564c0011c42616c616e636500018473656375726974697a6174696f6e5f70656e64696e675f61637469766174696f6ec0011c42616c616e636500013c6c6f636b65645f7361746f736869732c01205361746f7368697300015073656375726974697a65645f7361746f736869732c01205361746f7368697300017c73656375726974697a6174696f6e5f72656c656173655f7363686564756c65110601d8426f756e64656442547265654d61703c426974636f696e4865696768742c2042616c616e63652c20436f6e73745533323c3336363e3e00015073656375726974697a6174696f6e5f726174696f3d03012446697865645531323800012469735f636c6f736564200110626f6f6c0001147465726d733903014c5661756c745465726d733c42616c616e63653e00013470656e64696e675f7465726d732106018c4f7074696f6e3c285469636b2c205661756c745465726d733c42616c616e63653e293e00012c6f70656e65645f7469636b2c01105469636b0001806f7065726174696f6e616c5f6d696e696d756d5f72656c656173655f7469636b8d0101304f7074696f6e3c5469636b3e000011060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00001506042042547265654d617008044b013004560118000400190600000019060000021d06001d0600000408301800210604184f7074696f6e0404540125060108104e6f6e6500000010536f6d650400250600000100002506000004083039030029060c406172676f6e5f7072696d697469766573147661756c74585661756c744172676f6e6f74436f6d6d69746d656e74041c42616c616e636501180008014c636f6d6d69747465645f6d6963726f6e6f7473c0011c42616c616e6365000150656e63756d62657265645f6d6963726f6e6f7473c0011c42616c616e636500002d06000004083106100031060c406172676f6e5f7072696d6974697665731c626974636f696e2c426974636f696e5850756200001801287075626c69635f6b65795d03015c436f6d70726573736564426974636f696e5075626b65790001146465707468350601087538000148706172656e745f66696e6765727072696e7448013c5850756246696e6765727072696e740001306368696c645f6e756d626572d4013c585075624368696c644e756d626572000128636861696e5f636f64650401205b75383b2033325d00011c6e6574776f726b3906012c4e6574776f726b4b696e6400003506000006080039060c406172676f6e5f7072696d6974697665731c626974636f696e2c4e6574776f726b4b696e64000108104d61696e0000001054657374000100003d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e000041060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000045060420425472656553657404045401300004004906000000490600000230004d060000040810000051060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401100453000004005506012c42547265655365743c543e00005506042042547265655365740404540110000400c10500000059060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d06045300000400610601185665633c543e00005d060c3470616c6c65745f7661756c74731870616c6c6574445661756c744672616d65526576656e756504045400004001206672616d655f69642c011c4672616d654964000160626974636f696e5f6c6f636b5f6665655f726576656e7565c00128543a3a42616c616e6365000188626974636f696e5f6c6f636b5f6665655f636f75706f6e5f76616c75655f75736564c00128543a3a42616c616e6365000154626974636f696e5f6c6f636b735f63726561746564d4010c753332000190626974636f696e5f6c6f636b735f6e65775f6c69717569646974795f70726f6d69736564c00128543a3a42616c616e6365000180626974636f696e5f6c6f636b735f72656c65617365645f6c6971756964697479c00128543a3a42616c616e6365000170626974636f696e5f6c6f636b735f61646465645f7361746f736869732c01205361746f7368697300017c626974636f696e5f6c6f636b735f72656c65617365645f7361746f736869732c01205361746f7368697300016073656375726974697a6174696f6e5f616374697661746564c00128543a3a42616c616e636500016473656375726974697a6174696f6e5f72656c6f636b61626c65c00128543a3a42616c616e636500013873656375726974697a6174696f6ec00128543a3a42616c616e636500015c74726561737572795f7661756c745f6561726e696e6773c00128543a3a42616c616e636500015c74726561737572795f746f74616c5f6561726e696e6773c00128543a3a42616c616e636500015874726561737572795f7661756c745f6361706974616cc00128543a3a42616c616e636500016474726561737572795f65787465726e616c5f6361706974616cc00128543a3a42616c616e636500014c756e636f6c6c65637465645f726576656e7565c00128543a3a42616c616e6365000061060000025d060065060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540169060453000004006d0601185665633c543e000069060c3470616c6c65745f7661756c74731870616c6c657448526563656e74436170616369747944726f70081c42616c616e636501182c426c6f636b4e756d626572011000100130626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000154617661696c61626c655f6265666f72655f64726f70c0011c42616c616e6365000150617661696c61626c655f61667465725f64726f70c0011c42616c616e63650001506e6f5f6665655f6661696c757265735f75736564d4010c75333200006d0600000269060071060c3470616c6c65745f7661756c74731870616c6c6574144572726f72040454000180384e6f4d6f72655661756c744964730000049c496e7465726e616c6c792c20746865207661756c742069647320617265206d61786564206f757444496e73756666696369656e7446756e6473000104ec546865207573657220646f65736e2774206861766520656e6f7567682066756e647320746f20636f6d706c6574652074686973207265717565737458496e73756666696369656e745661756c7446756e647300020429015468657265206172656e277420656e6f7567682066756e647320696e20746865207661756c7420746f20636f766572207468652072657175657374656420626974636f696e206c6f636b684163636f756e7442656c6f774d696e696d756d42616c616e63650003045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640004045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000504dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e63652074797065845661756c74526564756374696f6e42656c6f7753656375726974697a6174696f6e00060439015468697320726564756374696f6e20696e207661756c742073656375726974697a6174696f6e20676f65732062656c6f772074686520616d6f756e7420616c726561647920636f6d6d697474656454496e76616c696453656375726974697a6174696f6e0007084101416e20696e76616c69642073656375726974697a6174696f6e2070657263656e74207761732070726f766964656420666f7220746865207661756c742e204e4f54453a2069742063616e6e6f742062655c64656372656173656420286f72206e6567617469766529585265757365645661756c74426974636f696e58707562000804bc546865207661756c7420626974636f696e20787075626b65792068617320616c7265616479206265656e207573656450496e76616c6964426974636f696e536372697074000904c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f727338496e76616c6964587075626b6579000a0460556e61626c6520746f206465636f646520787075626b65794057726f6e67587075624e6574776f726b000b044857726f6e672058707562204e6574776f726b34556e73616665587075626b6579000c040901546865205850756220697320756e7361666520746f2075736520696e2061207075626c696320626c6f636b636861696e2028616b612c20756e68617264656e65642970556e61626c65546f4465726976655661756c74587075624368696c64000d0478556e61626c6520746f2064657269766520787075626b6579206368696c645c426974636f696e436f6e76657273696f6e4661696c6564000e04b8426974636f696e20636f6e76657273696f6e20746f20636f6d70726573736564207075626b6579206661696c6564344e6f5065726d697373696f6e73000f0060486f6c64556e65787065637465646c794d6f64696669656400100044556e7265636f76657261626c65486f6c64001100345661756c744e6f74466f756e64001200445661756c744e6f745965744163746976650013046c546865207661756c74206973206e6f742079657420616374697665784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001404884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c65645465726d734d6f64696669636174696f6e4f766572666c6f77001504ec546865207465726d73206d6f64696669636174696f6e206c69737420636f756c64206e6f742068616e646c6520616e79206d6f7265206974656d736c5465726d734368616e6765416c72656164795363686564756c6564001604a45465726d732061726520616c7265616479207363686564756c656420746f206265206368616e67656434496e7465726e616c4572726f7200170494416e20696e7465726e616c2070726f63657373696e67206572726f72206f6363757272656488556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001804b4556e61626c6520746f2067656e65726174652061206e6577207661756c7420626974636f696e207075626b65797446756e64696e674368616e6765416c72656164795363686564756c656400190494412066756e64696e67206368616e676520697320616c7265616479207363686564756c656440496e76616c69645661756c744e616d65001a0831015661756c74206e616d6573206d757374207374617274207769746820616e20757070657263617365204153434949206c657474657220616e64206f746865727769736520626520415343494934616c7068616e756d657269632e6c50656e64696e67436f7369676e734265666f7265436f6c6c656374001b04010141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e6720636f7369676e73206265666f72652069742063616e20636f6c6c6563749c50656e64696e674f727068616e65645574786f436f7369676e734265666f7265436f6c6c656374001c041d0141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e67206f727068616e20636f7369676e73206265666f72652069742063616e20636f6c6c6563748c4f766572647565436f6c6c656374426c6f636b6572734265666f7265436f6c6c656374001d044d0141207661756c74206d75737420636c656172206f757420616c6c206f7665726475652065787465726e616c20636f6c6c65637420626c6f636b657273206265666f72652069742063616e20636f6c6c6563742e584163636f756e74416c72656164794861735661756c74001e04d4416e206163636f756e74206d6179206f6e6c79206265206173736f636961746564207769746820612073696e676c65207661756c749c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67001f045101436f6d6d6974746564204172676f6e6f74732063616e6e6f7420626520726564756365642062656c6f772074686520616d6f756e7420616c72656164792063726f7373636861696e2d656e63756d62657265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e75060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574344c6f636b6564426974636f696e04045400005001207661756c745f6964d4011c5661756c7449640001486c69717569646974795f70726f6d69736564c00128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365c00128543a3a42616c616e63650001346f776e65725f6163636f756e74000130543a3a4163636f756e74496400015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800013473656375726974795f66656573c00128543a3a42616c616e6365000140636f75706f6e5f706169645f66656573c00128543a3a42616c616e63650001207361746f736869732c01205361746f736869730001347574786f5f7361746f736869738d0101404f7074696f6e3c5361746f736869733e0001307661756c745f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f787075625f736f7572636573790601cc285850756246696e6765727072696e742c20585075624368696c644e756d6265722c20585075624368696c644e756d626572290001306f776e65725f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f6865696768742c0134426974636f696e4865696768740001446f70656e5f636c61696d5f6865696768742c0134426974636f696e486569676874000144637265617465645f61745f6865696768742c0134426974636f696e4865696768740001487574786f5f7363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b657900012469735f66756e646564200110626f6f6c00015066756e645f686f6c645f657874656e73696f6e73110601e4426f756e64656442547265654d61703c426974636f696e4865696768742c20543a3a42616c616e63652c20436f6e73745533323c3336363e3e000158637265617465645f61745f6172676f6e5f626c6f636bd40144426c6f636b4e756d626572466f723c543e000079060000040c481010007d060000040810300081060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574484c6f636b52656c6561736552657175657374041c42616c616e636501180018011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c74496400014c626974636f696e5f6e6574776f726b5f6665652c01205361746f73686973000140636f7369676e5f6475655f6672616d652c011c4672616d654964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000144726564656d7074696f6e5f616d6f756e74c0011c42616c616e6365000085060000040800cc0089060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574304f727068616e65645574786f042c426c6f636b4e756d62657201100014011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c7449640001207361746f736869732c01205361746f7368697300016c7265636f726465645f6172676f6e5f626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000138636f7369676e5f726571756573748d0601b84f7074696f6e3c4f727068616e65645574786f436f7369676e526571756573743c426c6f636b4e756d6265723e3e00008d0604184f7074696f6e0404540191060108104e6f6e6500000010536f6d6504009106000001000091060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574644f727068616e65645574786f436f7369676e52657175657374042c426c6f636b4e756d6265720110000c014c626974636f696e5f6e6574776f726b5f6665653001205361746f73686973000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000174637265617465645f61745f6172676f6e5f626c6f636b5f6e756d62657210012c426c6f636b4e756d626572000095060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000099060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e00009d060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454018506045300000400a106012c42547265655365743c543e0000a10604204254726565536574040454018506000400a506000000a506000002850600a9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e0000ad060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144572726f7204045400018c44496e73756666696369656e7446756e647300000058496e73756666696369656e745661756c7446756e6473000100844163636f756e74576f756c64476f42656c6f774d696e696d756d42616c616e63650002045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640003045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000404dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e636520747970654c526564656d7074696f6e4e6f744c6f636b6564000504b85468697320626974636f696e20726564656d7074696f6e20686173206e6f74206265656e206c6f636b656420696e98426974636f696e52656c65617365496e6974696174696f6e446561646c696e65506173736564000604c454686520626974636f696e20686173207061737365642074686520646561646c696e6520746f2072656c6561736520697444426974636f696e466565546f6f48696768000704b05468652066656520666f72207468697320626974636f696e2072656c6561736520697320746f6f20686967684c426974636f696e5574786f4e6f74466f756e64000804ec54686520426974636f696e20556e7370656374205472616e73616374696f6e204f757470757420285554584f2920776173206e6f7420666f756e6488426974636f696e556e61626c65546f42654465636f646564466f7252656c65617365000904e85468697320626974636f696e20636f7369676e2073637269707420636f756c646e2774206265206465636f64656420666f722072656c6561736584426974636f696e5369676e6174757265556e61626c65546f42654465636f646564000a04d85468697320626974636f696e207369676e617475726520636f756c646e2774206265206465636f64656420666f722072656c6561736578426974636f696e5075626b6579556e61626c65546f42654465636f646564000b04cc5468697320626974636f696e207075626b657920636f756c646e2774206265206465636f64656420666f722072656c6561736564426974636f696e496e76616c6964436f7369676e6174757265000c04e454686520636f7369676e207369676e6174757265206973206e6f742076616c696420666f722074686520626974636f696e2072656c6561736568496e73756666696369656e745361746f736869734c6f636b6564000d04a8546865206d696e696d756d206e756d626572206f66207361746f7368697320776173206e6f74206d6574604e6f426974636f696e507269636573417661696c61626c65000e0435015468652070726963652070726f766964657220686173206e6f20626974636f696e2070726963657320617661696c61626c652e205468697320697320612074656d706f72617279206572726f7250496e76616c6964426974636f696e536372697074000f04c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f7273344e6f5065726d697373696f6e73001004e4546865207573657220646f6573206e6f742068617665207065726d697373696f6e7320746f20706572666f726d207468697320616374696f6e60486f6c64556e65787065637465646c794d6f646966696564001104090154686520657870656374656420616d6f756e74206f662066756e647320746f2072657475726e2066726f6d20686f6c6420776173206e6f7420617661696c61626c6544556e7265636f76657261626c65486f6c64001204a054686520686f6c64206f6e2066756e647320636f756c64206e6f74206265207265636f7665726564345661756c744e6f74466f756e640013045c546865207661756c7420776173206e6f7420666f756e644447656e657269635661756c744572726f720400b10601285661756c744572726f7200140494416e206572726f72206f6363757272656420696e20746865207661756c74206d6f64756c65304c6f636b4e6f74466f756e640015049454686520426974636f696e204c6f636b207265636f726420776173206e6f7420666f756e64784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001604884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c6588556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001704a4556e61626c6520746f2067656e65726174652061206e6577207661756c74207075626c6963206b6579445661756c744e6f745965744163746976650018047054686973207661756c74206973206e6f7420796574206163746976656445787069726174696f6e4174426c6f636b4f766572666c6f77001904c0416e206f766572666c6f77206f63637572726564207265636f7264696e672061206c6f636b2065787069726174696f6e544e6f52617463686574696e67417661696c61626c65001a04484e6f7468696e6720746f2072617463686574584c6f636b496e50726f636573734f6652656c65617365001b04c041206c6f636b20696e2070726f63657373206f662072656c656173652063616e6e6f7420626520726174636865746564484c6f636b50656e64696e6746756e64696e67001c04c8546865206c6f636b2066756e64696e6720686173206e6f74206265656e20636f6e6669726d6564206f6e20626974636f696e344f766572666c6f774572726f72001d042101416e206f766572666c6f77206f7220756e646572666c6f77206f63637572726564207768696c652063616c63756c6174696e672074686520726564656d7074696f6e2070726963657c496e656c696769626c654d6963726f676f6e52617465526571756573746564001e04c4416e20696e656c696769626c65206d6963726f676f6e2072617465207065722062746320776173207265717565737465646c4f727068616e65645574786f46756e64696e67436f6e666c696374001f04050143616e6e6f742066756e64207769746820616e206f727068616e6564207574786f206166746572206c6f636b2066756e64696e6720697320636f6e6669726d6564704f727068616e65645574786f52656c65617365526571756573746564002004ec43616e6e6f74206c6f636b20616e206f727068616e6564207574786f207769746820612070656e64696e672072656c6561736520726571756573746c46756e64696e675574786f43616e6e6f74426552656c6561736564002104dc43616e6e6f74207265717565737420616e206f727068616e65642072656c6561736520666f72207468652066756e64696e67205554584f984d61784f727068616e65645574786f52656c6561736552657175657374734578636565646564002204c8546f6f206d616e79206f727068616e6564207574786f2072656c6561736520726571756573747320666f722061206c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb1060c406172676f6e5f7072696d697469766573147661756c74285661756c744572726f720001342c5661756c74436c6f736564000000684163636f756e74576f756c64426542656c6f774d696e696d756d00010044496e73756666696369656e7446756e647300020058496e73756666696369656e745661756c7446756e647300030060486f6c64556e65787065637465646c794d6f64696669656400040044556e7265636f76657261626c65486f6c64000500345661756c744e6f74466f756e64000600784e6f5661756c74426974636f696e5075626b657973417661696c61626c6500070088556e61626c65546f47656e65726174655661756c74426974636f696e5075626b657900080050496e76616c6964426974636f696e53637269707400090034496e7465726e616c4572726f72000a00445661756c744e6f74596574416374697665000b009c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67000c0000b50600000408f41000b9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000bd060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011101045300000400c10601185665633c543e0000c106000002110100c5060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c906045300000400cd0601185665633c543e0000c90600000408300400cd06000002c90600d1060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601f4045300000400d506013842547265654d61703c4b2c20563e0000d506042042547265654d617008044b0110045601f4000400d906000000d906000002dd0600dd060000040810f400e1060c3c70616c6c65745f6e6f7461726965731870616c6c6574144572726f720404540001244050726f706f73616c4e6f74466f756e64000004985468652070726f706f73616c20746f20616374697661746520776173206e6f7420666f756e644c4d61784e6f74617269657345786365656465640001048c4d6178696d756d206e756d626572206f66206e6f746172696573206578636565646564704d617850726f706f73616c73506572426c6f636b4578636565646564000204b84d6178696d756d206e756d626572206f662070726f706f73616c732070657220626c6f636b206578636565646564444e6f74416e4163746976654e6f74617279000304f054686973206e6f74617279206973206e6f74206163746976652c20736f2074686973206368616e67652063616e6e6f74206265206d6164652079657454496e76616c69644e6f746172794f70657261746f72000404a8496e76616c6964206e6f74617279206f70657261746f7220666f722074686973206f7065726174696f6e3c4e6f4d6f72654e6f74617279496473000504f4416e20696e7465726e616c206572726f7220686173206f636375727265642e20546865206e6f746172792069647320617265206578686175737465642e504566666563746976655469636b546f6f536f6f6e0006049c5468652070726f706f73656420656666656374697665207469636b20697320746f6f20736f6f6e2c546f6f4d616e794b65797300070458546f6f206d616e7920696e7465726e616c206b65797334496e76616c69644e6f7461727900080454546865206e6f7461727920697320696e76616c6964048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee50600000408109d0300e9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed06045300000400f50601185665633c543e0000ed0600000408f1062000f1060c406172676f6e5f7072696d697469766573186e6f74617279604e6f746172794e6f7465626f6f6b4b657944657461696c73000014013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000140626c6f636b5f766f7465735f726f6f743401104832353600012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e0000f506000002ed0600f9060000040c1030190100fd060c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144572726f7204045400013c5c4475706c69636174654e6f7465626f6f6b4e756d626572000004a054686973206e6f7465626f6f6b2068617320616c7265616479206265656e207375626d6974746564544d697373696e674e6f7465626f6f6b4e756d6265720001047c4e6f7465626f6f6b73207265636569766564206f7574206f66206f726465725c4e6f7465626f6f6b5469636b416c726561647955736564000204b041206e6f7465626f6f6b2077617320616c72656164792070726f76696465642061742074686973207469636b60496e76616c69644e6f7465626f6f6b5369676e6174757265000304a0546865207369676e6174757265206f6620746865206e6f7465626f6f6b20697320696e76616c696454496e76616c696453656372657450726f7669646564000404f454686520736563726574206f72207365637265742068617368206f662074686520706172656e74206e6f7465626f6f6b20646f206e6f74206d6174636858436f756c644e6f744465636f64654e6f7465626f6f6b000504c0436f756c64206e6f74206465636f646520746865207363616c65206279746573206f6620746865206e6f7465626f6f6b5c4475706c69636174654e6f7465626f6f6b446967657374000604bc546865206e6f7465626f6f6b206469676573742077617320696e636c75646564206d6f7265207468616e206f6e6365544d697373696e674e6f7465626f6f6b44696765737400070490546865206e6f7465626f6f6b2064696765737420776173206e6f7420696e636c7564656454496e76616c69644e6f7465626f6f6b446967657374000804e0546865206e6f7465626f6f6b2064696765737420646964206e6f74206d617463682074686520696e636c75646564206e6f7465626f6f6b73844d756c7469706c654e6f7465626f6f6b496e686572656e747350726f76696465640009046c4d756c7469706c6520696e686572656e74732070726f766964656434496e7465726e616c4572726f72000a04a0556e61626c6520746f20747261636b20746865206e6f7465626f6f6b206368616e6765206c697374804e6f7465626f6f6b5375626d6974746564466f724c6f636b65644e6f74617279000b04350141206e6f7465626f6f6b20776173207375626d697474656420666f722061206e6f746172792074686174206661696c65642061756469742c207768696368206973206e6f7420616c6c6f77656460496e76616c6964526570726f636573734e6f7465626f6f6b000c0468496e76616c696420726570726f63657373206e6f7465626f6f6b54496e76616c69644e6f746172794f70657261746f72000d045c496e76616c6964206e6f74617279206f70657261746f7274496e76616c69644e6f7465626f6f6b5375626d697373696f6e5469636b000e0480496e76616c6964206e6f7465626f6f6b207375626d697373696f6e207469636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0107086870616c6c65745f6c6f63616c636861696e5f7472616e73666572445175657565645472616e736665724f757408244163636f756e74496401001c42616c616e63650118001001286163636f756e745f69640001244163636f756e744964000118616d6f756e7418011c42616c616e636500013c65787069726174696f6e5f7469636b3001105469636b0001246e6f746172795f69641001204e6f746172794964000005070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000090708346672616d655f737570706f72742050616c6c65744964000004008902011c5b75383b20385d00000d070c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144572726f72040454000120644d6178426c6f636b5472616e7366657273457863656564656400000044496e73756666696369656e7446756e6473000104b0496e73756666696369656e742062616c616e636520746f206372656174652074686973207472616e7366657268496e73756666696369656e744e6f746172697a656446756e6473000204d0496e73756666696369656e742062616c616e636520746f2066756c66696c6c2061206d61696e636861696e207472616e7366657294496e76616c69644f724475706c6963617465644c6f63616c636861696e5472616e73666572000304d8546865207472616e736665722077617320616c7265616479207375626d697474656420696e20612070726576696f757320626c6f636ba44e6f7465626f6f6b496e636c75646573457870697265644c6f63616c636861696e5472616e73666572000404410141207472616e7366657220776173207375626d697474656420696e20612070726576696f757320626c6f636b20627574207468652065787069726174696f6e20626c6f636b206861732070617373656470496e76616c69644e6f7461727955736564466f725472616e736665720005047c546865206e6f74617279206964206973206e6f7420726567697374657265645c4e6f746172794c6f636b6564466f725472616e73666572000604ec546865206e6f746172792069732063757272656e746c79206c6f636b656420616e642063616e6e6f742070726f63657373207472616e7366657273544e6f417661696c61626c655472616e7366657249640007049c4e6f207472616e7366657220494473206172652063757272656e746c7920617661696c61626c65048054686520604572726f726020656e756d206f6620746869732070616c6c65742e11070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000015070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e000019070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d07045300000400210701185665633c543e00001d070c406172676f6e5f7072696d697469766573186e6f746172797c4e6f746172794e6f7465626f6f6b566f746544696765737444657461696c7300001401246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000144626c6f636b5f766f7465735f636f756e74d4010c753332000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f776572000021070000021d070025070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540129070453000004002d0701185665633c543e000029070000040c301018002d0700000229070031070c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144572726f72040454000104684d61784e6f7465626f6f6b7341745469636b45786365656465640000041501546865206d6178696d756d206e756d626572206f66206e6f7465626f6f6b73206174207468652063757272656e74207469636b20686173206265656e206578636565646564048054686520604572726f726020656e756d206f6620746869732070616c6c65742e35070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000039070c3870616c6c65745f646f6d61696e731870616c6c6574144572726f720404540001144c446f6d61696e4e6f74526567697374657265640000047454686520646f6d61696e206973206e6f7420726567697374657265642e384e6f74446f6d61696e4f776e6572000104a85468652073656e646572206973206e6f7420746865206f776e6572206f662074686520646f6d61696e2e6c4661696c6564546f416464546f41646472657373486973746f7279000204944661696c656420746f2061646420746f20746865206164647265737320686973746f72792e644661696c6564546f4164644578706972696e67446f6d61696e000304a44661696c656420746f2061646420746f20746865206578706972696e6720646f6d61696e206c697374504163636f756e744465636f64696e674572726f72000404884572726f72206465636f64696e67206163636f756e742066726f6d206e6f74617279048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014107045300000400450701185665633c543e00004107084870616c6c65745f70726963655f696e646578504370694d6561737572656d656e744275636b657400000c01287469636b5f72616e6765d1050130285469636b2c205469636b29000124746f74616c5f637069910101204172676f6e4350490001486d6561737572656d656e74735f636f756e7410010c7533320000450700000241070049070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00004d070c4870616c6c65745f70726963655f696e6465781870616c6c6574144572726f72040454000110544e6f74417574686f72697a65644f70657261746f72000004904e6f7420617574686f72697a656420617320616e206f7261636c65206f70657261746f72304d697373696e6756616c7565000104344d697373696e672076616c756530507269636573546f6f4f6c6400020480546865207375626d6974746564207072696365732061726520746f6f206f6c64744d617850726963654368616e67655065725469636b4578636565646564000304884368616e676520696e206172676f6e20707269636520697320746f6f206c61726765048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5107083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300005507083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965735907016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564710201244f7074696f6e3c4e3e000059070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454016d01045300000400690101185665633c543e00005d070c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e61070c406172676f6e5f7072696d6974697665732470726f7669646572733c426c6f636b5365616c6572496e666f08244163636f756e74496401002c417574686f72697479496401b8000c015c626c6f636b5f617574686f725f6163636f756e745f69640001244163636f756e744964000168626c6f636b5f766f74655f726577617264735f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e000150626c6f636b5f7365616c5f617574686f726974798101014c4f7074696f6e3c417574686f7269747949643e000065070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018505045300000400b90501185665633c543e000069070c4470616c6c65745f626c6f636b5f7365616c1870616c6c6574144572726f720404540001545c496e76616c6964566f74655365616c537472656e677468000004e454686520737472656e677468206f662074686520676976656e207365616c20646964206e6f74206d617463682063616c63756c6174696f6e7340496e76616c69645375626d697474657200010494566f7465206e6f74207375626d697474656420627920746865207269676874206d696e657264556e61626c65546f4465636f6465566f74654163636f756e740002047c436f756c64206e6f74206465636f64652074686520766f74652062797465735c556e72656769737465726564426c6f636b417574686f72000304a854686520626c6f636b20617574686f72206973206e6f7420612072656769737465726564206d696e657254496e76616c6964426c6f636b566f746550726f6f66000404f4546865206d65726b6c652070726f6f66206f6620766f746520696e636c7573696f6e20696e20746865206e6f7465626f6f6b20697320696e76616c6964604e6f4772616e64706172656e74566f74654d696e696d756d000504ac4e6f20766f7465206d696e696d756d20666f756e64206174206772616e64706172656e7420686569676874684475706c6963617465426c6f636b5365616c50726f766964656400060478546f6f206d616e7920626c6f636b207365616c73207375626d69747465645c496e73756666696369656e74566f74696e67506f776572000704590154686520626c6f636b20766f746520646964206e6f7420726561636820746865206d696e696d756d20766f74696e6720706f7765722061742074696d65206f6620746865206772616e64706172656e7420626c6f636b5c506172656e74566f74696e674b65794e6f74466f756e64000804cc4e6f207265676973746572656420766f74696e67206b657920666f756e6420666f722074686520706172656e7420626c6f636b68496e76616c6964566f74654772616e64706172656e7448617368000904a054686520626c6f636b20766f746520776173206e6f7420666f7220612076616c696420626c6f636b58496e656c696769626c654e6f7465626f6f6b55736564000a04cc546865206e6f7465626f6f6b20666f72207468697320766f746520776173206e6f7420656c696769626c6520746f20766f7465504e6f456c696769626c65566f74696e67526f6f74000b043d01546865206c6f6f6b757020746f20766572696679206120766f746527732061757468656e746963697479206973206e6f7420617661696c61626c6520666f722074686520676976656e20626c6f636b48436f756c644e6f744465636f6465566f7465000c04b4436f756c64206e6f74206465636f646520746865207363616c65206279746573206f662074686520766f746573684d61784e6f7465626f6f6b7341745469636b4578636565646564000d043901546f6f206d616e79206e6f7465626f6f6b732077657265207375626d697474656420666f72207468652063757272656e74207469636b2e2053686f756c64206e6f7420626520706f737369626c65684e6f436c6f736573744d696e6572466f756e64466f72566f7465000e047c4e6f20636c6f73657374206d696e657220666f756e6420666f7220766f746564426c6f636b566f7465496e76616c69645369676e6174757265000f047854686520766f7465207369676e61747572652077617320696e76616c696458496e76616c6964466f726b506f776572506172656e7400100464496e76616c696420666f726b20706f77657220706172656e7450426c6f636b5365616c4465636f64654572726f72001104d04120626c6f636b207365616c20617574686f7269747920636f756c64206e6f742062652070726f7065726c79206465636f6465645c496e76616c6964436f6d70757465426c6f636b5469636b001204dc436f6d7075746520626c6f636b732063616e7420626520616464656420696e207468652073616d65207469636b206173206120766f746558496e76616c69644d696e65724e6f6e636553636f7265001304b0546865206e6f6e63652073636f72652064697374616e636520737570706c69656420697320696e76616c6964604475706c6963617465566f7465426c6f636b41745469636b001404504475706c696361746520766f746520626c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017901045300000400750101185665633c543e000071070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e000075070000040c1830180079070c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018107045300000400850701185665633c543e000081070000040c30001800850700000281070089070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00008d07000004081091070091070c2c70616c6c65745f6d696e741870616c6c6574284d696e74416374696f6e0404420118000c01306172676f6e5f6275726e6564180104420001306172676f6e5f6d696e74656418010442000138626974636f696e5f6d696e74656418010442000095070c2c70616c6c65745f6d696e741870616c6c6574144572726f720404540001044c546f6f4d616e7950656e64696e674d696e7473000000048054686520604572726f726020656e756d206f6620746869732070616c6c65742e99070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454019d07045300000400a50701185665633c543e00009d070c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964890201384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73a107011c526561736f6e730000a1070c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000a5070000029d0700a9070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad07045300000400b10701185665633c543e0000ad070c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e7469666965720189021c42616c616e6365011800080108696489020144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000b107000002ad0700b5070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b907045300000400bd0701185665633c543e0000b90714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401a1011c42616c616e63650118000801086964a10101084964000118616d6f756e7418011c42616c616e63650000bd07000002b90700c1070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c507045300000400d10701185665633c543e0000c50714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401c9071c42616c616e63650118000801086964c90701084964000118616d6f756e7418011c42616c616e63650000c90708346172676f6e5f72756e74696d654c52756e74696d65467265657a65526561736f6e00010430426c6f636b526577617264730400cd07018870616c6c65745f626c6f636b5f726577617264733a3a467265657a65526561736f6e00130000cd070c5070616c6c65745f626c6f636b5f726577617264731870616c6c657430467265657a65526561736f6e000104404d617475726174696f6e506572696f6400000000d107000002c50700d5070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed9070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd070c3c70616c6c65745f74785f70617573651870616c6c6574144572726f720404540001102049735061757365640000044c5468652063616c6c206973207061757365642e284973556e706175736564000104545468652063616c6c20697320756e7061757365642e28556e7061757361626c65000204b45468652063616c6c2069732077686974656c697374656420616e642063616e6e6f74206265207061757365642e204e6f74466f756e64000300048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee107086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e50710346672616d655f737570706f7274187472616974731c73746f72616765184e6f44726f7004045401e907000400e9070104540000e90718346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6524696d62616c616e636524496d62616c616e63650c04420118184f6e44726f7000384f70706f736974654f6e44726f700000040118616d6f756e74180104420000ed070c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef1070c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000048053656e646572206d75737420626520746865205375646f206163636f756e742e04684572726f7220666f7220746865205375646f2070616c6c65742ef5070c3c70616c6c65745f74726561737572791870616c6c6574444672616d655661756c744361706974616c04045400000801206672616d655f69642c011c4672616d6549640001187661756c7473f90701f8426f756e64656442547265654d61703c5661756c7449642c205661756c744361706974616c3c543e2c20543a3a4d61785661756c7473506572506f6f6c3e0000f9070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601fd070453000004000d08013842547265654d61703c4b2c20563e0000fd070c3c70616c6c65745f74726561737572791870616c6c6574305661756c744361706974616c04045400000c0150626f6e645f6c6f745f616c6c6f636174696f6e73010801e4426f756e6465645665633c426f6e644c6f74416c6c6f636174696f6e2c20543a3a4d61785472656173757279436f6e7472696275746f72733e000138656c696769626c655f626f6e6473d40114426f6e64730001547661756c745f73686172696e675f70657263656e744103011c5065726d696c6c000001080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010508045300000400090801185665633c543e000005080c3c70616c6c65745f74726561737572791870616c6c657444426f6e644c6f74416c6c6f636174696f6e000008012c626f6e645f6c6f745f69642c0124426f6e644c6f74496400011c70726f72617461e00124466978656455313238000009080000020508000d08042042547265654d617008044b0110045601fd070004001108000000110800000215080015080000040810fd070019080c3c70616c6c65745f74726561737572791870616c6c65741c426f6e644c6f7404045400002801146f776e6572000130543a3a4163636f756e7449640001207661756c745f6964d4011c5661756c744964000114626f6e6473d40114426f6e6473000140637265617465645f6672616d655f69642c011c4672616d65496400014c7061727469636970617465645f6672616d6573d4010c7533320001706c6173745f6672616d655f6561726e696e67735f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00014c6c6173745f6672616d655f6561726e696e6773850101484f7074696f6e3c543a3a42616c616e63653e00014c63756d756c61746976655f6561726e696e6773c00128543a3a42616c616e636500014072656c656173655f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00013872656c656173655f726561736f6e1d0801644f7074696f6e3c426f6e6452656c65617365526561736f6e3e00001d0804184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e101000001000021080000040800300025080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000029080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012d08045300000400310801185665633c543e00002d080c3c70616c6c65745f74726561737572791870616c6c657438426f6e644c6f7453756d6d617279000008012c626f6e645f6c6f745f69642c0124426f6e644c6f744964000114626f6e6473d40114426f6e6473000031080000022d080035080c3c70616c6c65745f74726561737572791870616c6c6574144572726f7204045400012c50426f6e64507572636861736552656a6563746564000004dc54686520707572636861736520776f756c64206e6f7420656e74657220746865207661756c742773206163636570746564206c6973742e785661756c744e6f74416363657074696e67426f6e64507572636861736573000104a8546865207661756c74206973206e6f7420616363657074696e6720626f6e64207075726368617365732e60426f6e64507572636861736542656c6f774d696e696d756d000204a45468652070757263686173652069732062656c6f7720746865206d696e696d756d20616d6f756e742e34496e7465726e616c4572726f720003046c416e20696e7465726e616c206572726f72206f636375727265642e6c4d61784163636570746564426f6e644c6f74734578636565646564000404fc546865207661756c7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f74732e784d617850656e64696e67426f6e6452656c65617365734578636565646564000504f0546f6f206d616e7920626f6e64206c6f742072656c656173657320617265207363686564756c656420666f72207468652073616d65206672616d652e3c426f6e644c6f744e6f74466f756e640006048054686520626f6e64206c6f7420636f756c64206e6f7420626520666f756e642e3c4e6f74426f6e644c6f744f776e6572000704945468652063616c6c657220646f6573206e6f74206f776e2074686520626f6e64206c6f742e5c426f6e644c6f74416c726561647952656c656173696e67000804b854686520626f6e64206c6f7420697320616c7265616479207363686564756c656420666f722072656c656173652e64426f6e64507572636861736541626f766553656375726974790009043101546865207661756c7420646f65736e2774206861766520656e6f75676820626974636f696e20736563757269747920746f20737570706f7274207468697320626f6e6420707572636861736598416374697665426f6e64416d6f756e7442656c6f77456e63756d62657265644261636b696e67000a0841014c69717569646174696e67207468697320626f6e64206c6f7420776f756c642074616b6520746865206163636f756e742062656c6f77206974732063726f7373636861696e2d656e63756d6265726564447472656173757279206261636b696e672e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e39080c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144572726f720404540001044c53706f6e736f726564466565546f6f4869676800000425015468652072657175657374656420746970202b2066656520697320686967686572207468616e20746865206d6178696d756d20616c6c6f776564206279207468652073706f6e736f72048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574484f7065726174696f6e616c4163636f756e7404045400004c01347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b657900011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00013c626974636f696e5f6163637275616c180128543a3a42616c616e6365000154626974636f696e5f6170706c6965645f746f74616c180128543a3a42616c616e636500017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c00014c6d696e696e675f736561745f6163637275616cd4010c7533320001646d696e696e675f736561745f6170706c6965645f746f74616cd4010c75333200016c6f7065726174696f6e616c5f726566657272616c735f636f756e74d4010c753332000140726566657272616c5f70656e64696e67200110626f6f6c00014c617661696c61626c655f726566657272616c73d4010c753332000150726577617264735f6561726e65645f636f756e74d4010c753332000154726577617264735f6561726e65645f616d6f756e74180128543a3a42616c616e6365000160726577617264735f636f6c6c65637465645f616d6f756e74180128543a3a42616c616e636500013869735f6f7065726174696f6e616c200110626f6f6c000041080000040830040045080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65743452657761726473436f6e666967041c42616c616e636501180008016c6f7065726174696f6e616c5f726566657272616c5f726577617264c0011c42616c616e6365000154726566657272616c5f626f6e75735f726577617264c0011c42616c616e6365000049080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00004d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144572726f7204045400014444416c726561647952656769737465726564000004d45468652063616c6c657220616c7265616479207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e70496e76616c6964526567697374726174696f6e5375626d69747465720001040d015468652063616c6c6572206973206e6f74206f6e65206f6620746865206163636f756e747320696e636c7564656420696e2074686520726567697374726174696f6e2e504163636f756e74416c72656164794c696e6b656400020425014f6e65206f66207468652070726f7669646564206163636f756e747320697320616c7265616479206c696e6b656420746f20616e206f7065726174696f6e616c206163636f756e742e4c496e76616c69644163636f756e7450726f6f66000304d84f6e65206f6620746865206c696e6b6564206163636f756e74206f776e6572736869702070726f6f667320697320696e76616c69642e544e6f744f7065726174696f6e616c4163636f756e74000404d45468652063616c6c657220686173206e6f74207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e50496e76616c6964526566657272616c50726f6f66000504bc54686520726566657272616c2070726f6f66206f722073706f6e736f722070726f6f6620697320696e76616c69642e50526566657272616c50726f6f66457870697265640006047c54686520726566657272616c2070726f6f662068617320657870697265642e604e6f50726f677265737355706461746550726f7669646564000704e8546865207265717565737465642070726f677265737320706174636820646f6573206e6f7420636f6e7461696e20616e7920757064617465732e58456e63727970746564536572766572546f6f4c6f6e67000804fc54686520656e6372797074656420736572766572207061796c6f616420657863656564732074686520636f6e66696775726564206d6178206c656e6774682e4c4e6f7453706f6e736f724f6653706f6e736565000904dc5468652063616c6c6572206973206e6f74207468652073706f6e736f72206f6620746865207265717565737465642073706f6e7365652e404e6f50656e64696e6752657761726473000a04e0546865206f7065726174696f6e616c206163636f756e7420686173206e6f2070656e64696e67207265776172647320746f20636c61696d2e5c526577617264436c61696d42656c6f774d696e696d756d000b04a452657761726420636c61696d73206d757374206265206174206c65617374206f6e65204172676f6e2e60526577617264436c61696d4e6f7457686f6c654172676f6e000c04b452657761726420636c61696d73206d7573742062652077686f6c65204172676f6e20696e6372656d656e74732e64526577617264436c61696d4578636565647350656e64696e67000d04cc546865207265717565737465642072657761726420636c61696d20657863656564732070656e64696e6720726577617264732e645472656173757279496e73756666696369656e7446756e6473000e04350154686520747265617375727920646f6573206e6f742063757272656e746c79206861766520656e6f75676820617661696c61626c6520726573657276657320666f722074686520636c61696d2e48416c72656164794f7065726174696f6e616c000f048c546865206163636f756e7420697320616c7265616479206f7065726174696f6e616c2e604e6f74456c696769626c65466f7241637469766174696f6e001004ec546865206163636f756e7420686173206e6f7420736174697366696564206f7065726174696f6e616c20726571756972656d656e7473207965742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e51080c6070616c6c65745f657468657265756d5f76657269666965721474797065736846696e616c697a6564426561636f6e48656164657253746174650000040110736c6f742c010c753634000055080c6070616c6c65745f657468657265756d5f766572696669657214747970657354457865637574696f6e486561646572416e63686f720000140130626c6f636b5f6e756d6265722c0150457865637574696f6e426c6f636b4e756d62657200014074696d657374616d705f6d696c6c69732c010c753634000128626c6f636b5f68617368340148457865637574696f6e426c6f636b4861736800012c706172656e745f68617368340148457865637574696f6e426c6f636b4861736800013472656365697074735f726f6f743401305265636569707473526f6f74000059080c6070616c6c65745f657468657265756d5f76657269666965721474797065735453796e63436f6d6d6974746565507265706172656400000c0110726f6f743401104832353600011c7075626b6579735d08011901426f756e6465645665633c5075626c69634b657950726570617265642c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579610801445075626c69634b6579507265706172656400005d080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016108045300000400790801185665633c543e000061080c58736e6f776272696467655f6d696c6167726f5f626c73106b657973245075626c69634b65790000040114706f696e746508011c47726f7570473100006508103c736e6f776272696467655f616d636c18626c733338310c6563700c45435000000c010478690801084650000104796908010846500001047a69080108465000006908103c736e6f776272696467655f616d636c18626c733338310866700846500000080104786d08010c42696700010c7865737508010c69333200006d08103c736e6f776272696467655f616d636c18626c733338310c6269670c426967000004010477710801345b4368756e6b3b204e4c454e5d000071080000030e00000075080075080000050b0079080000026108007d080c406172676f6e5f7072696d69746976657320657468657265756d50457468657265756d426561636f6e5072657365740001081c4d61696e6e65740000001c4d696e696d616c0001000081080c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144572726f7204045400015468536b697070656453796e63436f6d6d6974746565506572696f640000006c53796e63436f6d6d6974746565557064617465526571756972656400010040497272656c6576616e74557064617465000204d8417474657374656420686561646572206973206f6c646572207468616e206c61746573742066696e616c697a6564206865616465722e3c4e6f74426f6f747374726170706564000300a453796e63436f6d6d69747465655061727469636970616e74734e6f7453757065726d616a6f7269747900040060496e76616c69644865616465724d65726b6c6550726f6f660005007c496e76616c696453796e63436f6d6d69747465654d65726b6c6550726f6f660006006c496e76616c6964457865637574696f6e48656164657250726f6f6600070064496e76616c696446696e616c697a6564486561646572476170000804410154686520676170206265747765656e2066696e616c697a65642068656164657273206973206c6172676572207468616e207468652072657461696e656420686973746f726963616c2077696e646f772e604865616465724861736854726565526f6f744661696c65640009006c426c6f636b426f64794861736854726565526f6f744661696c6564000a007c53796e63436f6d6d69747465654861736854726565526f6f744661696c6564000b00745369676e696e67526f6f744861736854726565526f6f744661696c6564000c0068466f726b446174614861736854726565526f6f744661696c6564000d0080457870656374656446696e616c697a65644865616465724e6f7453746f726564000e0068424c53507265706172655075626c69634b6579734661696c6564000f0054424c53566572696669636174696f6e4661696c656400100058556e6578706563746564426561636f6e50726573657400110044496e76616c6964557064617465536c6f7400120068496e76616c696453796e63436f6d6d6974746565557064617465001308550154686520676976656e20757064617465206973206e6f7420696e2074686520657870656374656420706572696f642c206f722074686520676976656e206e6578742073796e6320636f6d6d697474656520646f6573b46e6f74206d6174636820746865206e6578742073796e6320636f6d6d697474656520696e2073746f726167652e1848616c746564001400048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8508000004080502000089080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657454476c6f62616c49737375616e6365436f756e63696c04045400000c016c65706f63685f6d6963726f676f6e735f7065725f6172676f6e6f74180128543a3a42616c616e636500011c6d656d626572738d08013101426f756e64656442547265654d61703c483136302c20476c6f62616c49737375616e6365436f756e63696c4d656d6265723c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e000130746f74616c5f776569676874180128543a3a42616c616e636500008d080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d0204560191080453000004009508013842547265654d61703c4b2c20563e000091080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65746c476c6f62616c49737375616e6365436f756e63696c4d656d62657204045400000c01286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d02011048313630000118776569676874180128543a3a42616c616e636500009508042042547265654d617008044b010d020456019108000400990800000099080000029d08009d08000004080d02910800a1080000040805023000a5080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657464436f756e63696c417070726f76616c5175657565456e7472790404540000200158617070726f76696e675f636f756e63696c5f68617368340110483235360001187461726765741902015c436f756e63696c417070726f76616c546172676574496400014c7461726765745f7061796c6f61645f68617368340110483235360001306475655f6672616d655f69642c011c4672616d65496400015870726576696f75735f617070726f76616c5f6861736834011048323536000134617070726f76616c5f6861736834011048323536000154617070726f7665645f746f74616c5f776569676874180128543a3a42616c616e63650001287369676e617475726573a90801f0426f756e64656442547265654d61703c483136302c204b656363616b5369676e61747572652c20543a3a4d6178436f756e63696c4d656d626572733e0000a9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d020456011104045300000400ad08013842547265654d61703c4b2c20563e0000ad08042042547265654d617008044b010d020456011104000400b108000000b108000002b50800b508000004080d02110400b9080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404d696e74696e67417574686f7269747904045400003401286163636f756e745f6964000130543a3a4163636f756e74496400014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001147374617465bd0801544d696e74696e67417574686f726974795374617465000194676174657761795f72656d61696e696e675f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e6365000194676174657761795f72656d61696e696e675f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500016c6163746976655f70656e64696e675f7472616e736665725f696473c108012901426f756e6465645665633c483235362c3c5420617320436f6e6669673e3a3a0a4d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e3e00017c61637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500017c61637469766174696f6e5f626173655f72657061796d656e745f71756f7465c00128543a3a42616c616e636500019061637469766174696f6e5f7369676e61747572655f72657061796d656e745f71756f7465c00128543a3a42616c616e6365000184646561637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e63658d0101844f7074696f6e3c436f756e63696c417070726f76616c51756575654e6f6e63653e0000bd080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574544d696e74696e67417574686f72697479537461746500010c4450656e64696e6741637469766174696f6e0000001841637469766500010030446561637469766174696e6700020000c1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000c5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574485472616e736665724f75744f664172676f6e04045400003001406172676f6e5f6163636f756e745f6964000130543a3a4163636f756e7449640001506172676f6e5f7472616e736665725f6e6f6e63652c015c5472616e736665724f7574526571756573744e6f6e636500014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001546d6963726f676f6e735f7065725f6172676f6e6f74c00128543a3a42616c616e636500014c64657374696e6174696f6e5f6163636f756e740d0201104831363000016876616c69645f756e74696c5f657468657265756d5f626c6f636b2c014c457468657265756d426c6f636b4e756d62657200011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e6365000164746f74616c5f61747461636865645f636f6c6c61746572616c180128543a3a42616c616e63650001986d696e74696e675f617574686f726974795f636f6c6c61746572616c5f62795f7369676e6572c908015101426f756e64656442547265654d61703c483136302c204d696e74696e67417574686f726974795472616e736665725265736572766174696f6e3c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e0001147374617465dd0801405472616e736665724f757453746174650000c9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d02045601cd08045300000400d108013842547265654d61703c4b2c20563e0000cd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75748c4d696e74696e67417574686f726974795472616e736665725265736572766174696f6e040454000010014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365000140636f6c6c61746572616c5f7368617265180128543a3a42616c616e63650001247369676e61747572651104013c4b656363616b5369676e61747572650000d108042042547265654d617008044b010d02045601cd08000400d508000000d508000002d90800d908000004080d02cd0800dd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574405472616e736665724f757453746174650001081c5374617274656400000014526561647900010000e1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e508045300000400e90801185665633c543e0000e5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75747c50656e64696e67436f6c6c61746572616c697a6174696f6e5265717565737404045400000c012c7472616e736665725f69643401104832353600015072656d61696e696e675f636f6c6c61746572616c180128543a3a42616c616e636500017c72656d61696e696e675f6d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650000e908000002e50800ed080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657458536f75726365436861696e43697263756c6174696f6e04045400000801446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000f1080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144572726f720404540001d878496e76616c69645472616e73666572546f4172676f6e41637469766974790000042d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d6174636820605472616e73666572546f4172676f6e53746172746564602e704e6f4761746577617950726f6f66426c6f636b7350726f7669646564000104f04174206c65617374206f6e652070726f76656e20676174657761792d616374697669747920626c6f636b206d75737420626520737570706c6965642e6c4e6f476174657761794163746976697469657350726f766964656400020429014174206c65617374206f6e652067617465776179206163746976697479206c6f67206d75737420626520737570706c69656420776974682074686520726563656970742070726f6f662e30496e76616c696450726f6f66000304c854686520457468657265756d2076657269666965722072656a65637465642074686520737570706c6965642070726f6f662e44556e737570706f72746564536f75726365000404d854686520736f7572636520636861696e206973206e6f7420636f6e6669677572656420666f7220696e626f756e6420636c61696d732e48556e737570706f7274656447617465776179000504e8546865206761746577617920646f6573206e6f74206d617463682074686520636f6e66696775726564206761746577617920616464726573732e40556e737570706f72746564546f6b656e000604e054686520746f6b656e206973206e6f7420737570706f7274656420756e6465722074686520636f6e6669677572656420676174657761792e98556e657870656374656450726576696f75734761746577617941637469766974794e6f6e636500070449015468652063616c6c6572277320657870656374656420616c72656164792d70726f76656e2067617465776179206163746976697479206e6f6e6365206973207374616c65206f7220696e636f72726563742e78556e65787065637465644761746577617941637469766974794e6f6e63650008040d015468652070726f76656e2067617465776179206163746976697479206e6f6e6365206973206e6f7420746865206e65787420636f6e746967756f7573206e6f6e63652e48496e76616c6964436861696e436f6e666967000904f454686520636f6e6669677572656420736f757263652d636861696e20736861706520697320696e636f6d706c657465206f72206d616c666f726d65642e54496e73756666696369656e744c6971756964697479000a04d4546865206275726e206163636f756e74206c61636b7320656e6f7567682062616c616e636520666f7220746865207061796f75742e604d696e74696e67417574686f726974794e6f74466f756e64000b04090154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920646f6573206e6f74206578697374206c6f63616c6c792e604d696e74696e67417574686f726974794d69736d61746368000c041d01546865206c6f63616c204d696e74696e6720417574686f7269747920646964206e6f74206d61746368207468652070726f76656e20457468657265756d2061637469766974792e7c556e65787065637465644d696e74696e67417574686f726974795374617465000d041101546865206c6f63616c204d696e74696e6720417574686f7269747920776173206e6f7420696e20746865206578706563746564206c6966656379636c652073746174652e44556e6b6e6f776e4f776e65725661756c74000e04b0546865206c6f63616c206f776e6572207661756c7420636f756c64206e6f74206265207265736f6c7665642e84496e76616c69644d696e74696e67417574686f726974795369676e696e674b6579000f04d854686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920697320696e76616c69642e844d696e74696e67417574686f72697479416c726561647952656769737465726564001004550154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920616c7265616479206861732061206c697665206c6f63616c20617574686f72697479207265636f72642e98496e76616c69644d696e74696e67417574686f726974795369676e696e674b657950726f6f6600110841015468652070726f7669646564204d696e74696e6720417574686f72697479207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d1c7369676e65722e84496e76616c69644d696e74696e67417574686f72697479436f6c6c61746572616c001204d454686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c20697320696e76616c69642e74476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e6400130449015468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20686173206e6f74206265656e2073656564656420666f7220746869732064657374696e6174696f6e20636861696e2e70496e76616c6964476c6f62616c49737375616e6365436f756e63696c001404250154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20697320656d707479206f7220696e7465726e616c6c7920696e636f6e73697374656e742e904475706c6963617465476c6f62616c49737375616e6365436f756e63696c5369676e6572001504350154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65207369676e6572206d6f7265207468616e206f6e63652e944475706c6963617465476c6f62616c49737375616e6365436f756e63696c4163636f756e74001604390154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65206163636f756e74206d6f7265207468616e206f6e63652e64496e76616c6964436f756e63696c5369676e657250726f6f6600170439015468652070726f766964656420636f756e63696c207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d207369676e65722e8c476c6f62616c49737375616e6365436f756e63696c4d656d6265724e6f74466f756e640018045501546865206f726967696e206973206e6f7420616e2061637469766520476c6f62616c2049737375616e636520436f756e63696c206d656d62657220666f72207468652064657374696e6174696f6e20636861696e2e68436f756e63696c5369676e65724e6f74526567697374657265640019042d01546865206163636f756e7420686173206e6f742072656769737465726564206120636f756e63696c207369676e657220666f7220746869732064657374696e6174696f6e20636861696e2e84436f756e63696c417070726f76616c5175657565456e7472794e6f74466f756e64001a04e8546865204d696e74696e6720417574686f7269747920617070726f76616c20717565756520656e74727920646f6573206e6f742065786973742e78436f756e63696c417070726f76616c416c72656164795265636f72646564001b0409015468697320636f756e63696c206d656d62657220616c726561647920617070726f7665642074686520717565756564204d696e74696e6720417574686f726974792e64496e76616c6964466f72636553657441667465724e6f6e6365001c04110154686520666f7263652d7365742063757420706f696e742077617320626568696e6420616c726561647920636f6e6669726d65642071756575652070726f67726573732e9843616e6e6f74466f72636553657451756f72756d417070726f7665645175657565456e747279001d04310154686520666f7263652d7365742063757420776f756c642064697363617264206120717565756520656e747279207468617420616c726561647920686173206c6f63616c2071756f72756d2e7c496e76616c6964436f756e63696c417070726f76616c5369676e6174757265001e044d015468652070726f766964656420636f756e63696c20617070726f76616c207369676e617475726520646964206e6f74206d617463682074686520657870656374656420457468657265756d207369676e65722e8c4e6f436f756e63696c417070726f76616c5369676e61747572657350726f7669646564001f04e44174206c65617374206f6e6520636f756e63696c20617070726f76616c207369676e6174757265206d75737420626520737570706c6965642e9c496e73756666696369656e74436f6d6d69747465644d6963726f676f6e436f6c6c61746572616c0020084901546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564206d6963726f676f6e20636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792e98496e73756666696369656e74436f6d6d69747465644172676f6e6f74436f6c6c61746572616c0021084501546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564204172676f6e6f7420636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792eb0496e76616c69644d696e74696e67417574686f72697479446561637469766174696f6e5369676e617475726500220841015468652070726f7669646564207369676e65722d617574686f72697a656420646561637469766174696f6e207369676e617475726520646964206e6f74206d6174636820746865206578706563746564784d696e74696e6720417574686f72697479207369676e696e67206b65792e68496e76616c69644d6963726f676f6e735065724172676f6e6f740023043d0154686520636f756e63696c2d6d616e61676564204172676f6e6f7420666c6f6f7220636f756c64206e6f742062652064657465726d696e65642066726f6d2063757272656e742070726963696e672e984d696e74696e67417574686f72697479436f6c6c61746572616c42656c6f774d696e696d756d0024084d0154686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c2069732062656c6f772074686520636f6e66696775726564207065722d636861696e206d696e696d756d686e6f726d616c697a6564206d6963726f676f6e2076616c75652ec4496e76616c69644d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002504090154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e6720697320696e7465726e616c6c7920696e76616c69642ec44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002604350154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e67206973206d697373696e6720666f72207468697320736f7572636520636861696e2e58496e76616c69644761746577617941637469766974790027043d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d61746368206120737570706f7274656420676174657761792061637469766974792e444761746577617953796e635061757365640028083d015468697320736f7572636520636861696e206973207061757365642064756520746f20676174657761792073796e63206d6973616c69676e6d656e7420616e64206e65656473206f70657261746f72247265636f766572792e60496e76616c69645472616e736665724f7574416d6f756e74002904a0546865207472616e736665722d6f757420616d6f756e74206d757374206265206e6f6e7a65726f2e6c496e76616c69645472616e736665724f7574526563697069656e74002a041501546865207472616e736665722d6f757420726563697069656e74206d757374206265206e6f6e7a65726f20666f72207468652064657374696e6174696f6e20636861696e2e744d697373696e675665726966696564457865637574696f6e426c6f636b002b0845014e6f2076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320617661696c61626c6520746f20616e63686f722061207472616e736665722d6f7574386578706972792077696e646f772e6c5374616c655665726966696564457865637574696f6e426c6f636b002c084d01546865206c61746573742076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320746f6f206f6c6420746f20736166656c79206f70656e2061206e6577347472616e73666572206f75742e4c5472616e736665724f75744e6f74466f756e64002d04b0546865206f7574626f756e64207472616e73666572207265636f726420646f6573206e6f742065786973742e5c5472616e736665724f7574416c72656164795265616479002e083d01546865206f7574626f756e64207472616e736665722063616e6e6f7420616363657074206d6f726520636f6c6c61746572616c206265636175736520697420697320616c72656164792066756c6c7920636f76657265642e485472616e736665724f757445787069726564002f045d01546865206f7574626f756e64207472616e73666572207265717565737420697320616c72656164792065787069726564206f6e20746865206c617465737420766572696669656420457468657265756d20626c6f636b2e64496e76616c69645472616e73666572436f6c6c61746572616c00300421015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720697320696e76616c696420666f722074686973207472616e736665722061737365742e7c496e76616c69645472616e73666572436f6c6c61746572616c55706461746500310451015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720646964206e6f7420616476616e636520746865207369676e65722773206c6f63616c207265736572766174696f6e2e88496e76616c69645472616e73666572436f6c6c61746572616c5369676e61747572650032042901546865207472616e7366657220636f6c6c61746572616c207369676e617475726520646964206e6f74206d617463682074686520617574686f72697479207369676e696e67206b65792e98496e73756666696369656e744d696e74696e67417574686f72697479436f6c6c61746572616c003304590154686520617574686f7269747920646f6573206e6f74206861766520656e6f7567682072656d61696e696e67206761746577617920636f6c6c61746572616c20666f722074686973207472616e7366657220726f772e8c5472616e73666572436f6c6c61746572616c496e6372656d656e74546f6f536d616c6c003408490154686520636f6c6c61746572616c20696e6372656d656e742069732062656c6f772074686520636f6e66696775726564206d696e696d756d20616e6420646f6573206e6f7420636f6d706c65746520746865247472616e736665722e68546f6f4d616e7950656e64696e675472616e736665724f75747300350851015468652064657374696e6174696f6e20636861696e20616c726561647920747261636b7320746865206d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f75742472657175657374732e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef508102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301fd021043616c6c01f502245369676e6174757265010d0414457874726101f90800040038000000f9080000042cfd080109050909090d09110919091d09210925092d0900fd0810306672616d655f73797374656d28657874656e73696f6e7338617574686f72697a655f63616c6c34417574686f72697a6543616c6c04045400000000010910306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000050910306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000090910306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e040454000000000d0910306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000110910306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004001509010c45726100001509102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000190910306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400d40120543a3a4e6f6e636500001d0910306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000002109086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400c0013042616c616e63654f663c543e0000250908746672616d655f6d657461646174615f686173685f657874656e73696f6e44436865636b4d657461646174614861736804045400000401106d6f6465290901104d6f64650000290908746672616d655f6d657461646174615f686173685f657874656e73696f6e104d6f64650001082044697361626c65640000001c456e61626c6564000100002d0910306672616d655f73797374656d28657874656e73696f6e73387765696768745f7265636c61696d345765696768745265636c61696d04045400000000310904184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000350908346172676f6e5f72756e74696d651c52756e74696d6500000000801853797374656d011853797374656d501c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e40496e686572656e74734170706c696564010020040004a4205768657468657220616c6c20696e686572656e74732068617665206265656e206170706c6965642e2c426c6f636b576569676874010024180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e24426c6f636b53697a6500001004000cb020546f74616c2073697a652028696e20627974657329206f66207468652063757272656e7420626c6f636b2e00c820547261636b73207468652073697a65206f66207468652068656164657220616e6420616c6c2065787472696e736963732e24426c6f636b486173680101040510348000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510380400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401003c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004c04001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104023431020400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000390204000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e44426c6f636b7354696c6c55706772616465000008040004ec204e756d626572206f6620626c6f636b732074696c6c207468652070656e64696e6720636f64652075706772616465206973206170706c6965642e545570677261646564546f553332526566436f756e740100200400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100200400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500002902040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a65645570677261646500004502040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e6045787472696e7369635765696768745265636c61696d65640100280800001ca02054686520776569676874207265636c61696d656420666f72207468652065787472696e7369632e002101205468697320696e666f726d6174696f6e20697320617661696c61626c6520756e74696c2074686520656e64206f66207468652065787472696e73696320657865637574696f6e2e2101204d6f726520707265636973656c79207468697320696e666f726d6174696f6e2069732072656d6f76656420696e20606e6f74655f6170706c6965645f65787472696e736963602e007101204c6f67696320646f696e6720736f6d6520706f73742064697370617463682077656967687420726564756374696f6e206d7573742075706461746520746869732073746f7261676520746f2061766f6964206475706c69636174652c20726564756374696f6e2e01490201581830426c6f636b576569676874735902fd01c2a0e766000b00a0724e180913ffffffffffffffff2261c91900010bb81711ca5d061332333333333333b3010b00f8d53ad20613ffffffffffffffbf0100002261c91900010bb8bfaddda3081332333333333333f3010b00a0724e180913ffffffffffffffff010b00a89c1346021300000000000000402261c9190000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746869023400003c0000005000000050000004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687475024040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e79026904146172676f6e146172676f6e01000000970000000a00000054df6acb689907609b0500000037e397fc7c91f5e402000000ccd9de6396c899ca0100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000bc9d89904f5b923f01000000ab3c0572291feb8b0200000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000061571683e6d7a7c8010000005e4dc2ce83c23f0901000000e6683faaa563317a0200000011de59f9923f03d80100000051c97e4020145cb001000000bab599c4f0d362c601000000fff0fb031985f8a1020000000090f9d890bb0bb20100000005dd9be92cc17d2803000000ed99c5acb25eedf503000000fbc577b9d747efd60100000005000000010484204765742074686520636861696e277320696e2d636f64652076657273696f6e2e28535335385072656669789c082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e018d02001c44696765737473011c44696765737473042c54656d7044696765737473000091020400000001800001d902012454696d657374616d70012454696d657374616d70080c4e6f7701003020000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010020040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e01dd020004344d696e696d756d506572696f6430200100000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e0002204d756c746973696701204d756c746973696704244d756c7469736967730001080502e102e502040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01f10201840c2c4465706f736974426173651840a005000000000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f721840a00000000000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e013105031450726f7879011450726f7879081c50726f78696573010104050035054400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500450544000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e01f9020194184050726f78794465706f736974426173651840b004000000000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f721840a500000000000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f736974426173651840d804000000000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f7218404a01000000000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01550504145469636b7301145469636b73143050726576696f75735469636b010030200000000000000000002c43757272656e745469636b010030200000000000000000002c47656e657369735469636b010030200000000000000000003447656e657369735469636b657201005905080000004c526563656e74426c6f636b7341745469636b7301010405305d05040008e820426c6f636b732066726f6d20746865206c61737420313030207469636b732e205472696d6d656420696e206f6e5f696e697469616c697a652ef4204e4f54453a2063616e6e6f7420696e636c756465207468652063757272656e7420626c6f636b206861736820756e74696c206e65787420626c6f636b010903000001610505284d696e696e67536c6f7401284d696e696e67536c6f74505c48617341646465644772616e647061526f746174696f6e010020040000384d696e6572734279436f686f72740101040230a80400045901204d696e6572732074686174206172652061637469766520696e207468652063757272656e7420626c6f636b2028706f737420696e697469616c697a6529206279207468656972207374617274696e67206672616d65444163746976654d696e657273436f756e7401009c08000000644d696e65724e6f6e636553636f72696e674279436f686f72740100650504000c610120546869732069732061206c6f6f6b7570206f662065616368206d696e65722773206e6f6e636520746f20757365207768656e207069636b696e672061206265737420617574686f7269747920746f207375626d69742061510120626c6f636b2e2049742773206120626c616b6532203235362068617368206f6620746865206d696e6572206163636f756e7420696420616e642074686520626c6f636b20686173682061742074696d65206f66302061637469766174696f6e2e544172676f6e6f74735065724d696e696e6753656174010018400000000000000000000000000000000004c8204172676f6e6f74732074686174206d757374206265206c6f636b656420746f2074616b652061204d696e657220726f6c65484163636f756e74496e6465784c6f6f6b7570000104020085050400046901204c6f6f6b7570206279206163636f756e7420696420746f2074686520636f72726573706f6e64696e6720696e64657820696e204d696e6572734279436f686f727420616e64204d696e65724e6f6e6365734279436f686f72745442696473466f724e657874536c6f74436f686f72740100a80400080d012054686520636f686f72742073657420746f20676f20696e746f2065666665637420696e20746865206e65787420736c6f742e20546865205665632068617320616c6c882072656769737472616e747320776974682074686569722062696420616d6f756e746452656c65617365644d696e65727342794163636f756e74496401008905040004150120546865206d696e6572732072656c656173656420696e20746865206c61737420626c6f636b20286f6e6c79206b65707420666f7220612073696e676c6520626c6f636b295449734e657874536c6f7442696464696e674f70656e0100200400049420497320746865206e65787420736c6f74207374696c6c206f70656e20666f72206269647354486973746f726963616c42696473506572536c6f7401009905040004050120546865206e756d626572206f6620626964732070657220736c6f7420666f7220746865206c61737420313020736c6f747320286e6577657374206669727374294c417665726167655072696365506572536561740100a505040004050120546865206176657261676520707269636520706572207365617420666f7220746865206c617374203130206672616d657320286e657765737420666972737429304d696e696e67436f6e6669670100ad050c00000004b420546865206d696e696e6720736c6f7420636f6e66696775726174696f6e2073657420696e2067656e657369732c4e6578744672616d65496401003020000000000000000008750120546865206e657874206672616d6549642e2041206672616d6520696e206172676f6e2069732074686520323420686f757273206265747765656e20746865207374617274206f662074776f20646966666572656e74206d696e696e672420636f686f7274732e4c4e65776c79537461727465644672616d654964000030040004942049732061206e6577206672616d65207374617274656420696e207468697320626c6f636b384e657874436f686f727453697a65010010100000000004f420546865206e756d626572206f6620616c6c6f77206d696e65727320746f2062696420666f7220746865206e657874206d696e696e6720636f686f7274805363686564756c6564436f686f727453697a654368616e676542794672616d650100b10504000ce420546865207570636f6d696e67206368616e676573207363686564756c656420666f7220636f686f72742073697a65206279206672616d652e5501204361706163697479206f6620313120616c6c6f777320666f72203130206672616d657320776f727468206f66207363686564756c6564206368616e67657320706c7573206f6e6520776f726b696e6720736c6f74d020746f207363686564756c652061206e6577206368616e676520647572696e67206672616d652066696e616c697a6174696f6e2e644672616d655265776172645469636b7352656d61696e696e6701003020000000000000000004c820546865206e756d626572206f6620726577617264207469636b732072656d61696e696e6720696e20746865206672616d65584672616d655374617274426c6f636b4e756d626572730100bd05040004a8205468652070726576696f7573203130206672616d6520737461727420626c6f636b206e756d626572733c4672616d6553746172745469636b730100c50504000488205468652070726576696f7573203130206672616d65207374617274207469636b734c54656d704672616d65496e666f4469676573740000bd02040004982054656d706f726172792073746f726520746865206672616d6520696e666f20646967657374010d0301a42c4c4672616d65735065724d696e696e675465726d10100a00000004a820546865206e756d626572206f66206672616d65732061206d696e6572206f7065726174657320666f72344d696e436f686f727453697a6510100a00000004a020546865206d696e696d756d206e756d626572206f66206d696e6572732070657220636f686f7274344d6178436f686f727453697a65101090000000085d0120486f77206d616e79206e6577206d696e6572732063616e20626520696e2074686520636f686f727420666f72206561636820736c6f742e205468652061637475616c206d6178696d756d2077696c6c2061646a757374302064796e616d6963616c6c797c4172676f6e6f747350657263656e7441646a7573746d656e7444616d706572e040000014bbf08ac602000000000000000004210120546865206d61782070657263656e74207377696e6720666f7220746865206172676f6e6f74732070657220736c6f74202866726f6d20746865206c6173742070657263656e7429584d696e696d756d4172676f6e6f747350657253656174184010270000000000000000000000000000049420546865206d696e696d756d206172676f6e6f7473206e6565646564207065722073656174704d6178696d756d4172676f6e6f7450726f7261746150657263656e74d5050428082d0120546865206d6178696d756d2070657263656e74206f66206172676f6e6f747320696e20746865206e6574776f726b20746861742073686f756c6420626520726571756972656420666f7234206d696e696e6720736561747360546172676574426964735065725365617450657263656e74e0400000c84e676dc11b000000000000000008590120546865207461726765742070657263656e74206f662062696473207065722061756374696f6e2072656c617469766520746f20746865206d6178206e756d626572206f662073656174732e20546869732077696c6c2d012061646a75737420746865206172676f6e6f7473207065722073656174207570206f7220646f776e20746f20656e73757265206d696e696e6720736c6f7473206172652066696c6c65642e48546172676574507269636550657253656174184000ca9a3b000000000000000000000000046c20546865207461726765742070726963652070657220736561742e7050726963655065725365617441646a7573746d656e7444616d706572e040000014bbf08ac6020000000000000000040901205468652064616d706572206f6e207468652070726963652070657220736561742061646a7573746d656e74202866726f6d20746865206c61737420707269636529504d696e696e67426964506f6f6c4163636f756e7400806d6f646c6c7164506f6f6c730000000000000000000000000000000000000000041501204163636f756e742074686174207265636569766573206d696e696e67206269642066756e6473206265666f726520747265617375727920646973747269627574696f6e2e34426964496e6372656d656e74731840102700000000000000000000000000000419012054686520696e6372656d656e74207468617420626964732063616e206265206f6e2028666f7220696e7374616e63652c206f6e652063656e7420696e6372656d656e74732901d9050630426974636f696e5574786f730130426974636f696e5574786f73302c4c6f636b65645574786f7300010402ccdd0504000c5d01204c6f636b656420426974636f696e205554584f7320746861742068617665206265656e2066756e64656420776974682061205574786f5265662066726f6d2074686520426974636f696e206e6574776f726b20616e645d0120616d6f756e74732077697468696e20746865204d696e696d756d5361746f7368695468726573686f6c64206f66207468652065787065637465642e204966206120426974636f696e205554584f206973206d6f7665643101206265666f7265207468652065787069726174696f6e20626c6f636b2c207468652066756e647320617265206275726e656420616e6420746865205554584f20697320756e6c6f636b65642e585574786f4964546f46756e64696e675574786f5265660001040530cc040004d42041206d617070696e67206f66207574786f20696420746f2074686520636f6e6669726d6564207574786f207265666572656e63654c4c6f636b7350656e64696e6746756e64696e670100e5050400040d0120426974636f696e206c6f636b732074686174206172652070656e64696e672066756c6c2066756e64696e67206f6e2074686520626974636f696e206e6574776f726b544578706972656450656e64696e6746756e64696e670100e50504000431012050656e64696e672066756e64696e6720656e747269657320746861742068617665206578706972656420616e6420617265206177616974696e6720626f756e64656420636c65616e75702e6443616e6469646174655574786f5265667342795574786f49640101040530f50504000429012043616e646964617465205554584f73206173736f63696174656420776974682061206c6f636b20286d69736d6174636865732c2065787472612066756e64696e672c206574632e292e38426974636f696e4e6574776f726b01000506040304ec205468652067656e657369732073657420626974636f696e206e6574776f726b2074686174207468697320636861696e206973207469656420746f60436f6e6669726d6564426974636f696e426c6f636b54697000002d03040004fc20416e206f7261636c652d70726f766964656420636f6e6669726d656420626974636f696e20626c6f636b202865672c203620626c6f636b73206261636b295c50726576696f7573426974636f696e426c6f636b54697000002d030400005854656d70506172656e7448617353796e635374617465010020040004d42053746f72657320696620706172656e7420626c6f636b20686164206120636f6e6669726d656420626974636f696e20626c6f636b4c53796e63686564426974636f696e426c6f636b00002d030400047c20546865206c6173742073796e6368656420626974636f696e20626c6f636b544f7261636c654f70657261746f724163636f756e740000000400048020426974636f696e204f7261636c65204f70657261746f72204163636f756e7440496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c7564656401110301c8146c4d617850656e64696e67436f6e6669726d6174696f6e5574786f7310101027000004650120546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e206265207761746368656420696e206120626c6f636b20616e642f6f72206578706972696e672061742073616d6520626c6f636b904d617850656e64696e6746756e64696e6745787069726174696f6e73506572426c6f636b10106400000004310120546865206d6178696d756d206e756d626572206f6620657870697265642070656e64696e672066756e64696e6720656e747269657320636c65616e656420757020696e206120626c6f636b604d617843616e6469646174655574786f735065724c6f636b10106400000004c8204d6178696d756d206e756d626572206f662063616e646964617465205554584f732073746f72656420706572206c6f636b704d617850656e64696e67436f6e6669726d6174696f6e426c6f636b7330209000000000000000042501204d6178696d756d20626974636f696e20626c6f636b7320746f2077617463682061205574786f20666f7220636f6e6669726d6174696f6e206265666f72652063616e63656c696e678c4d6178696d756d5361746f7368695468726573686f6c6446726f6d45787065637465643020e803000000000000084501204d6178696d756d206e756d626572206f66207361746f73686920646966666572656e636520616c6c6f7765642066726f6d20657870656374656420746f20636f6e73696465722061205554584f206173302022636f6e6669726d65642201090607185661756c747301185661756c7473382c4e6578745661756c744964000010040000285661756c74734279496400010405100d0604000434205661756c7473206279206964445661756c74496442794f70657261746f7200010405001004000440205661756c7473206279206f776e6572684172676f6e6f74436f6d6d69746d656e7442795661756c744964000104051029060400040101205661756c742d7369646520636f6d6d697474656420616e642063726f7373636861696e2d656e63756d6265726564206172676f6e6f74206261636b696e672e345661756c74585075624279496400010405102d06040004e0205661756c7420426974636f696e205870756220616e642063757272656e74206368696c6420636f756e746572206279205661756c744964644c617374436f6c6c6563744672616d6542795661756c7449640001040510300400049420546865206c61737420636f6c6c656374206672616d65206f662065616368207661756c747c50656e64696e675465726d734d6f64696669636174696f6e7342795469636b01010405303d060400085d012050656e64696e67207465726d7320746861742077696c6c20626520636f6d6d69747465642061742074686520676976656e20626c6f636b206e756d62657220286d7573742062652061206d696e696d756d206f6620314c206672616d65206368616e67652061776179295850656e64696e67436f7369676e42795661756c74496401010405104106040004a420426974636f696e204c6f636b732070656e64696e6720636f7369676e206279207661756c74206964744f727068616e65645574786f4163636f756e747342795661756c74496401010805024d0610100000000004c8204f727068616e656420426974636f696e205574786f732070656e64696e6720636f7369676e206279207661756c742069646c5661756c7446756e647352656c656173696e67427948656967687401010405305106040004fc20546865207661756c7473207468617420686176652066756e64732072656c656173696e67206174206120676976656e20626974636f696e206865696768749c5661756c747352656c656173696e674f7065726174696f6e616c4d696e696d756d42795469636b010104053051060400043101205661756c74732077686f73652074656d706f72617279206f7065726174696f6e616c206d696e696d756d206d61792062652072656c6561736564206174206120676976656e207469636b2e58526576656e75655065724672616d6542795661756c740101040510590604000c710120547261636b7320726576656e75652066726f6d20426974636f696e204c6f636b7320616e6420547265617375727920506f6f6c7320666f722074686520747261696c696e67206672616d657320666f722065616368207661756c747101202861206672616d65206973206120226d696e696e67206461792220696e204172676f6e292e204e6577657374206672616d6573206172652066697273742e204672616d6573206172652072656d6f76656420616674657220746865050120636f6c6c6563742065787069726174696f6e2077696e646f77202860526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657360292e6c526576656e75655065724672616d6542795661756c74436f756e7401001010000000000068526563656e74436170616369747944726f707342795661756c7401010405106506040004f420526563656e7420726564756374696f6e7320696e2060617661696c61626c655f666f725f6c6f636b602c2067726f75706564206279207661756c742e01310301dc24884d617850656e64696e675465726d4d6f64696669636174696f6e735065725469636b10106400000004b420546865206d61782070656e64696e67207661756c74207465726d206368616e6765732070657220626c6f636b244d61785661756c747310101027000004b420546865206d6178206e756d626572206f66207661756c747320746861742063616e2062652063726561746564644d617850656e64696e67436f7369676e735065725661756c7410106400000004a4204d617820636f6e63757272656e7420636f7369676e732070656e64696e6720706572207661756c7484526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657330200a0000000000000004f020546865206e756d626572206f66206672616d65732077697468696e20776869636820726576656e7565206d75737420626520636f6c6c6563746564944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e184000943577000000000000000000000000044901204d696e696d756d207661756c742073656375726974697a6174696f6e207265717569726564207768696c6520746865206f7065726174696f6e616c20666c6f6f72206c6f636b206973206163746976652e804f7065726174696f6e616c4d696e696d756d5661756c744c6f636b5469636b7330202005080000000000045101204475726174696f6e20746f206b65657020746865206f7065726174696f6e616c206d696e696d756d2073656375726974697a6174696f6e206c6f636b65642066726f6d207661756c74206372656174696f6e2e74526563656e74436170616369747944726f70426c6f636b57696e646f77101008000000046101204e756d626572206f66204172676f6e20626c6f636b7320746f206b65657020726563656e742060617661696c61626c655f666f725f6c6f636b602064726f707320666f72207374616c6520696e697420636865636b732e784d6178526563656e74436170616369747944726f70735065725661756c74101040000000042101204d6178696d756d206e756d626572206f6620726563656e742060617661696c61626c655f666f725f6c6f636b602064726f70732072657461696e656420706572207661756c742e5c436170616369747944726f70417474656d7074556e6974184000e1f505000000000000000000000000085901204f6e65206e6f2d666565207374616c652060696e697469616c697a655f666f7260206661696c75726520697320616c6c6f77656420666f72206561636820746869732d6d616e7920756e697473206f66206c6f7374582060617661696c61626c655f666f725f6c6f636b602e0171060830426974636f696e4c6f636b730130426974636f696e4c6f636b732c284e6578745574786f4964000030040000344c6f636b7342795574786f496400010405307506040004e02053746f72657320626974636f696e207574786f73207468617420686176652072657175657374656420746f2062652072656c6561736564405574786f49647342795661756c74496400010805057d06900400048c20496e646578206f6620616374697665205554584f2049447320706572207661756c746c4c6f636b52656c65617365436f7369676e486569676874427949640001040530100400040d012053746f7265732074686520626c6f636b206e756d62657220776865726520612072656c656173652077617320636f7369676e656420627920746865207661756c742e6c4c6f636b52656c65617365526571756573747342795574786f496400010405308106040004e02053746f72657320626974636f696e206c6f636b73207468617420686176652072657175657374656420746f2062652072656c6561736564584f727068616e65645574786f7342794163636f756e740001080505850689060400042501204d69736d617463686564207574786f73207468617420776572652073656e74207769746820696e76616c696420616d6f756e747320746f2061206c6f636b656420626974636f696e3c4d696e696d756d5361746f7368697301003020000000000000000004c820546865206d696e696d756d206e756d626572206f66207361746f7368697320746861742063616e206265206c6f636b6564504c6f636b436f7369676e44756542794672616d6501010405309506040004f0205574786f7320746861742068617665206265656e2072657175657374656420746f20626520636f7369676e656420666f722072656c656173696e67784c6f636b45787069726174696f6e734279426974636f696e486569676874010104053099060400085d012045787069726174696f6e206f6620626974636f696e206c6f636b7320627920626974636f696e206865696768742e2046756e647320617265206275726e65642073696e636520746865207573657220646964206e6f749020756e6c6f636b2069742e20426974636f696e2077696c6c20676f20746f207661756c74744f727068616e65645574786f45787069726174696f6e42794672616d6501010405309d06040004c42045787069726174696f6e206f66206f727068616e6564207574786f20726566732062792075736572206163636f756e74544d6963726f676f6e506572427463486973746f72790100a9060400049420486973746f7279206f6620746172676574206d6963726f676f6e7320706572206274632e01590301e424404172676f6e5469636b735065724461793020a005000000000000044c204172676f6e207469636b2070657220646179744d6178436f6e63757272656e746c7952656c656173696e674c6f636b731010e80300000488204d6178696d756d2072656c656173696e67207574786f7320617420612074696d65484c6f636b4475726174696f6e426c6f636b73302050cd00000000000004d420546865206e756d626572206f6620626974636f696e20626c6f636b73206120626974636f696e206973206c6f636b656420666f72544c6f636b5265636c616d6174696f6e426c6f636b733020e0100000000000000861012054686520626974636f696e20626c6f636b73206166746572206120426974636f696e4c6f636b206578706972657320776869636820746865207661756c742077696c6c20626520616c6c6f77656420746f20636c61696d28206120626974636f696e7c4c6f636b52656c65617365436f7369676e446561646c696e654672616d657330200a0000000000000004fc204e756d626572206f66206672616d65732061207661756c742068617320746f20636f756e7465722d7369676e206120626974636f696e2072656c656173657c4f727068616e65645574786f52656c656173654578706972794672616d657330200a00000000000000084d01204e756d626572206f66206672616d6573206f727068616e6564205554584f2072656c6561736520656e7472696573206172652072657461696e65642061667465722061206c6f636b206c6966656379636c6590207472616e736974696f6e206265666f7265206265696e6720636c65616e65642075702e704d6178436f6e63757272656e746c794578706972696e674c6f636b731010102700000861012050616c6c65742073746f7261676520726571756972657320626f756e64732c20736f207765206861766520746f207365742061206d6178696d756d206e756d62657220746861742063616e2065787069726520696e2061342073696e676c6520626c6f636b505469636b73506572426974636f696e426c6f636b30200a000000000000000488204e756d626572206f66207469636b732070657220626974636f696e20626c6f636b484d617842746350726963655469636b41676510101e00000004c0204d617820616c6c6f776564207469636b2d616765206f66206d6963726f676f6e2d7065722d6274632070726963657301ad0609204e6f74617269657301204e6f74617269657318304e6578744e6f7461727949640000100400004050726f706f7365644e6f7461726965730001040200b506040000444578706972696e6750726f706f73616c730101040510b906040000384163746976654e6f7461726965730100bd06040000404e6f746172794b6579486973746f72790101040510c5060400005c5175657565644e6f746172794d6574614368616e6765730101040530d106040004cc204d65746164617461206368616e67657320746f206265206163746976617465642061742074686520676976656e207469636b01750301f018444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f776564544d617850726f706f73616c486f6c64426c6f636b731010c04e000004c420546865206d6178696d756d20626c6f636b7320612070726f706f73616c2063616e2073697420756e617070726f766564504d617850726f706f73616c73506572426c6f636b10100a00000000504d6574614368616e6765735469636b44656c617930200600000000000000084901204e756d626572206f66207469636b7320746f2064656c6179206368616e67696e672061206e6f74617269657327206d65746120287468697320697320746f20616c6c6f7720612077696e646f7720666f72f4206e6f74617269657320746f2073776974636820746f206e6577206b6579732061667465722061206e6577206b65792069732066696e616c697a656429544d61785469636b73466f724b6579486973746f72791010400b000008e0204e756d626572206f66207469636b7320746f206d61696e7461696e206b657920686973746f727920666f722065616368206e6f74617279a8204e4f54453a206f6e6c79207072756e6564207768656e206e6577206b65797320617265206164646564384d61784e6f74617279486f7374731010040000000488204d6178696d756d20686f7374732061206e6f746172792063616e20737570706c7901e1060a204e6f7465626f6f6b01204e6f7465626f6f6b1c8c4e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f746172790001080205350234040004010120446f75626c652073746f72616765206d6170206f66206e6f74617279206964202b206e6f7465626f6f6b202320746f20746865206368616e676520726f6f74a04163636f756e744f726967696e4c6173744368616e6765644e6f7465626f6f6b42794e6f746172790001080202e5061004000c35012053746f72616765206d6170206f66206163636f756e74206f726967696e20286e6f746172795f69642c206e6f7465626f6f6b2c206163636f756e745f7569642920746f20746865206c6173741501206e6f7465626f6f6b20636f6e7461696e696e672074686973206163636f756e7420696e20746865206368616e676564206163636f756e7473206d65726b6c6520726f6f749820284e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f74617279296c4c6173744e6f7465626f6f6b44657461696c7342794e6f746172790101040210e9060400086901204c697374206f66206c61737420666577206e6f7465626f6f6b2064657461696c73206279206e6f746172792e2054686520626f6f6c206973207768657468657220746865206e6f7465626f6f6b20697320656c696769626c65d820666f7220766f7465732028726563656976656420617420636f7272656374207469636b20616e64206175646974207061737365642938426c6f636b4e6f7465626f6f6b730100c5020400049420546865206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b40496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c75646564704e6f7461726965734c6f636b6564466f724661696c656441756469740001040210f9060400048c204e6f746172696573206c6f636b656420666f72206661696c696e6720617564697473744c6f636b65644e6f746172795265616479466f72526570726f636573730001040210100400040101204e6f74617269657320726561647920746f20737461727420726570726f63657373696e67206174206120676976656e206e6f7465626f6f6b206e756d6265720179030115010001fd060b484c6f63616c636861696e5472616e7366657201484c6f63616c636861696e5472616e736665720c384e6578745472616e7366657249640000100400004c50656e64696e675472616e73666572734f757400010402100107040000704578706972696e675472616e73666572734f757442794e6f7461727901010805057d06050704001845012045787069726174696f6e20696e64657820666f72206f7574676f696e67207472616e7366657273206b657965642062792060286e6f746172795f69642c2065787069726174696f6e5f7469636b29602e006901204e4f54453a2045787069726174696f6e2070726f63657373696e6720666f6c6c6f7773206e6f7465626f6f6b2070726f6772657373696f6e2028606865616465722e7469636b602920666f722065616368206e6f746172792c5101206e6f742077616c6c2f72756e74696d65207469636b2e2049662061206e6f746172792073746f7073207375626d697474696e67206e6f7465626f6f6b7320696e646566696e6974656c792c2070656e64696e676501207472616e736665727320666f722074686174206e6f746172792072656d61696e2066726f7a656e2062792064657369676e20756e74696c2061206e6f746172792d737769746368207265636f766572792070617468206973282065786563757465642e01b9030131010c2050616c6c657449640907207472616e73666572005c5472616e7366657245787069726174696f6e5469636b733020b036000000000000085d0120486f77206c6f6e672061207472616e736665722073686f756c642072656d61696e20696e2073746f72616765206265666f72652072657475726e696e672e204e4f54453a20746865726520697320612032207469636bc820677261636520706572696f642077686572652077652077696c6c207374696c6c20616c6c6f772061207472616e73666572784d617850656e64696e675472616e73666572734f7574506572426c6f636b1010e803000004bc20486f77206d616e79207472616e7366657273206f75742063616e206265207175657565642070657220626c6f636b010d070c34426c6f636b5365616c537065630134426c6f636b5365616c53706563284843757272656e74566f74654d696e696d756d01001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465736043757272656e74436f6d70757465446966666963756c747901001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465735843757272656e74436f6d707574654b6579426c6f636b00003404000c650120546865206b6579204b2069732073656c656374656420746f206265207468652068617368206f66206120626c6f636b20696e2074686520626c6f636b636861696e202d207468697320626c6f636b2069732063616c6c656445012074686520276b657920626c6f636b272e20466f72206f7074696d616c206d696e696e6720616e6420766572696669636174696f6e20706572666f726d616e63652c20746865206b65792073686f756c6444206368616e6765206576657279206461795450617374436f6d70757465426c6f636b54696d6573010011070400005850726576696f7573426c6f636b54696d657374616d7000003004000498205468652074696d657374616d702066726f6d207468652070726576696f757320626c6f636b4854656d70426c6f636b54696d657374616d7000003004000048566f74654d696e696d756d486973746f7279010015070400043101204b6565707320746865206c617374203320766f7465206d696e696d756d732e20546865206669727374206f6e65206170706c69657320746f207468652063757272656e7420626c6f636b2e7c54656d7043757272656e745469636b4e6f7465626f6f6b73496e426c6f636b010019070400043d012054656d706f726172792073746f7265206f6620616e792063757272656e74207469636b206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b20287673207469636b294c54656d70426c6f636b566f746544696765737400009502040004802054656d706f726172792073746f72652074686520766f7465206469676573743850617374426c6f636b566f7465730100250704000001bd0301350110444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f77656440546172676574426c6f636b566f746573184050c30000000000000000000000000000047020546865206465736972656420766f7465732070657220626c6f636b84486973746f726963616c436f6d70757465426c6f636b73466f724176657261676510100a000000085d0120546865206e756d626572206f6620686973746f726963616c20636f6d707574652074696d657320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720636f6d707574652061766572616765442028666f722061646a7573746d656e742978486973746f726963616c566f7465426c6f636b73466f72417665726167651010a005000004490120546865206e756d626572206f6620686973746f726963616c20766f746520626c6f636b7320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720766f746520617665726167650131070d1c446f6d61696e73011c446f6d61696e730c4452656769737465726564446f6d61696e7300010402345d010400004c5a6f6e655265636f7264734279446f6d61696e00010402343d01040000584578706972696e67446f6d61696e734279426c6f636b0101040530350704000001c103013901000139070e285072696365496e64657801285072696365496e646578141c43757272656e740000c903040004782053746f726573207468652061637469766520707269636520696e646578244c61737456616c69640000c903040004882053746f72657320746865206c6173742076616c696420707269636520696e64657840486973746f7269634172676f6e43504901003d07040004ac20547261636b73207468652061766572616765206370692064617461206576657279203630207469636b736c486973746f7269634172676f6e6f74466c6f6f7242794672616d6501004907040004fc20547261636b7320746865206c6f77657374204172676f6e6f7420666c6f6f72206f6273657276656420696e206561636820726563656e74206672616d652e204f70657261746f72000000040004842054686520707269636520696e646578206f70657261746f72206163636f756e7401c503016101146c4d6178446f776e74696d655469636b734265666f7265526573657430203c0000000000000004d820546865206d6178696d756d206e756d626572206f66207469636b7320746f207072657365727665206120707269636520696e646578484d61785072696365416765496e5469636b733020a005000000000000046c20546865206f6c6465737420686973746f727920746f206b656570704d61784172676f6e6f74466c6f6f72486973746f72794672616d657310100a00000004f4204d6178696d756d206e756d626572206f66207065722d6672616d65204172676f6e6f7420666c6f6f72206275636b65747320746f2072657461696e2e8c4d61784172676f6e4368616e67655065725469636b4177617946726f6d546172676574e0400000c16ff2862300000000000000000008650120546865206d617820707269636520646966666572656e63652064726f7070696e672062656c6f7720746172676574206f722072616973696e672061626f76652074617267657420706572207469636b2e2054686572652773e4206e6f20636f72726573706f6e64696e6720636f6e7374616e7420666f722074696d6520746f207265636f7665727920746f207461726765746c4d61784172676f6e5461726765744368616e67655065725469636be0400000c16ff2862300000000000000000000014d070f28417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000101c4772616e647061011c4772616e6470611c1453746174650100510704000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500005507040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000035020400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010030200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405301004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100590704000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01cd030165010c384d6178417574686f7269746965731010e8030000045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100000000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965733020020000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e015d071124426c6f636b5365616c0124426c6f636b5365616c1c4c4c617374426c6f636b5365616c6572496e666f000061070400003c506172656e74566f74696e674b65790100a1020400086101205468652063616c63756c6174656420706172656e7420766f74696e67206b657920666f72206120626c6f636b2e2052656665727320746f20746865204e6f7465626f6f6b20426c6f636b566f74652052657665616c6564e020536563726574202b20566f7465734d65726b6c65526f6f74206f662074686520706172656e7420626c6f636b206e6f7465626f6f6b732e38426c6f636b466f726b506f7765720100a902910100000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000008e4205468652063616c63756c6174656420737472656e67746820696e207468652072756e74696d6520736f20746861742069742063616e20626511012075706772616465642c20627574206973207573656420627920746865206e6f646520746f2064657465726d696e6520776869636820666f726b20746f20666f6c6c6f7744566f746573496e50617374335469636b73010065070400049c2054686520636f756e74206f6620766f74657320696e20746865206c6173742033207469636b734054656d705365616c496e686572656e740000fd03040004a820456e7375726573206f6e6c7920612073696e676c6520696e686572656e74206973206170706c696564504c6173745469636b57697468566f74655365616c010030200000000000000000004c4973426c6f636b46726f6d566f74655365616c0100200400047c2049732074686520626c6f636b2066726f6d206120766f7465207365616c3f01f90300000169071230426c6f636b526577617264730130426c6f636b5265776172647314385061796f7574734279426c6f636b01010402106d070400048c20486973746f726963616c207061796f75747320627920626c6f636b206e756d62657248426c6f636b526577617264735061757365640100200400048420426f6f6c20696620626c6f636b2072657761726473206172652070617573656450426c6f636b526577617264734279436f686f72740100710704000441012054686520636f686f727420626c6f636b2072657761726473206279206d696e696e6720636f686f7274202869652c2077697468207468652073616d65207374617274696e67206672616d6520696429384172676f6e73506572426c6f636b0100184000000000000000000000000000000000087501205468652063757272656e74207363616c656420626c6f636b20726577617264732e2049742077696c6c2061646a757374206261736564206f6e20746865206172676f6e206d6f76656d656e7420617761792066726f6d2070726963651c2074617267657424426c6f636b4665657301001840000000000000000000000000000000000001150401710118585374617274696e674172676f6e73506572426c6f636b184020a107000000000000000000000000000488204e756d626572206f66206172676f6e73206d696e7465642070657220626c6f636b7c5374617274696e674f776e657273686970546f6b656e73506572426c6f636b184020a1070000000000000000000000000004b0204e756d626572206f66206f776e65727368697020746f6b656e73206d696e7465642070657220626c6f636b44496e6372656d656e74616c47726f7774687507a0e8030000000000000000000000000000b400000000000000404b4c0000000000000000000000000004f4205468652067726f777468207061746820666f7220626f7468206f776e65727368697020616e64206172676f6e73206265666f72652068616c76696e673048616c76696e675469636b733020200b20000000000004dc204e756d626572206f66207469636b7320666f722068616c76696e67206f66206f776e65727368697020736861726520726577617264734448616c76696e67426567696e5469636b733020105c0c000000000004050120546865207469636b206e756d626572206174207768696368207468652068616c76696e6720626567696e7320666f72206f776e65727368697020746f6b656e73484d696e65725061796f757450657263656e74e04000008bbd0689680a0000000000000000042d012050657263656e742061732061206e756d626572206f7574206f6620313030206f662074686520626c6f636b20726577617264207468617420676f657320746f20746865206d696e65722e01790713104d696e7401104d696e74144050656e64696e674d696e745574786f7301007d0704000c6d0120426974636f696e205554584f7320746861742068617665206265656e207375626d697474656420666f72206d696e74696e672e2054686973206c697374206973204649464f20666f72206d696e74696e67207768656e657665724020612920435049203e3d203020616e643d012062292074686520616767726567617465206d696e74656420426974636f696e73203c3d2074686520616767726567617465206d696e746564206d6963726f676f6e732066726f6d206d696e696e67544d696e7465644d696e696e674d6963726f676f6e73010018400000000000000000000000000000000004c02054686520746f74616c20616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e67584d696e746564426974636f696e4d6963726f676f6e7301001840000000000000000000000000000000000455012054686520746f74616c20616d6f756e74206f6620426974636f696e206d6963726f676f6e73206d696e7465642e2043616e6e6f742065786365656420604d696e7465644d696e696e674d6963726f676f6e73602e4c4d696e696e674d696e74506572436f686f72740100890704000445012054686520616d6f756e74206f66206172676f6e73206d696e74656420706572206d696e696e6720636f686f7274202869652c2067726f75706564206279207374617274696e67206672616d65206964293c426c6f636b4d696e74416374696f6e01008d07d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000119040189010c4c4d617850656e64696e674d696e745574786f7310101027000004f020546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e2062652077616974696e6720666f72206d696e74696e67604d61784d696e74486973746f7279546f4d61696e7461696e10100a00000004b420546865206d6178696d756d206e756d626572206f66206d696e7420686973746f7269657320746f206b656570444d6178506f737369626c654d696e6572731010a005000000019507142042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e011d0401990110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d50715244f776e65727368697001244f776e6572736869701c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01250401c10110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d907161c54785061757365011c54785061757365042c50617573656443616c6c7300010402c90190040004b42054686520736574206f662063616c6c73207468617420617265206578706c696369746c79207061757365642e01290401c50104284d61784e616d654c656e1010000100000c2501204d6178696d756d206c656e67746820666f722070616c6c6574206e616d6520616e642063616c6c206e616d65205343414c4520656e636f64656420737472696e67206e616d65732e00a820544f4f204c4f4e47204e414d45532057494c4c2042452054524541544544204153205041555345442e01dd0717485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e740c444e6578744665654d756c7469706c6965720100e040000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e1070400003c54785061796d656e744372656469740000e50704000cf02054686520604f6e4368617267655472616e73616374696f6e602073746f726573207468652077697468647261776e2074782066656520686572652e00350120557365206077697468647261775f74786665656020616e64206072656d61696e696e675f74786665656020746f206163636573732066726f6d206f757473696465207468652063726174652e0001d10104604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e00181c5574696c69747900012d0401d501044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01ed0719105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01350401d9010001f1071a20547265617375727901205472656173757279206043757272656e744672616d655661756c744361706974616c0000f50704000cc020546865207661756c74206361706974616c206c6f636b656420666f72207468652063757272656e74206672616d652e004d01205061796f75742075736573207468697320746f20736565207768696368207661756c747320616e6420626f6e64206c6f7473206172652070617274696369706174696e6720696e20746865206672616d652e344e657874426f6e644c6f744964010030200000000000000000045820546865206e65787420626f6e64206c6f742069642e2c426f6e644c6f74427949640001040530190804000490205468652073746f72656420737461746520666f72206561636820626f6e64206c6f742e4c426f6e644c6f7449647342794163636f756e740001080505210890040004b02054686520626f6e64206c6f742069647320746861742062656c6f6e6720746f20616e206163636f756e742e80456e63756d6265726564426f6e644d6963726f676f6e7342794163636f756e74010104050018400000000000000000000000000000000018510120457861637420747265617375727920626f6e64206261636b696e6720726573657276656420666f722063726f7373636861696e206d696e74696e6720617574686f726974696573206279206163636f756e742e005d01205468697320697320616e206578616374206d6963726f676f6e20636c61696d2c206e6f742061206d6972726f72206f6620746865206163636f756e742773206163746976652077686f6c652d626f6e64206c6f74732e750120426f6e64206c6f7473207374617920636f6172736520626563617573652070617274696369706174696f6e206f6e6c79206d6f76657320696e2077686f6c6520626f6e64732c207768696c6520656e63756d6272616e63652063616e65012072656d61696e206672616374696f6e616c2061667465722061206275726e2e20546865206b657920696e76617269616e74206973207468617420746865206e6f6e2d72656c656173696e672068656c642062616c616e63656c20616c7761797320636f76657273207468697320616d6f756e742e6850656e64696e67426f6e6452656c656173657342794672616d6501010405302508040004a420426f6e64206c6f747320746f2072656c656173652061742074686520676976656e206672616d652e7450656e64696e67426f6e6452656c656173655265747279437572736f72000030040004f820546865206f6c64657374206672616d652074686174207374696c6c2068617320626f6e64206c6f747320746f2072657472792072656c656173696e672e3c426f6e644c6f747342795661756c740101040510290804000c902054686520616363657074656420626f6e64206c6f747320666f722061207661756c742e004501204c6f747320617265206b65707420696e2064657363656e64696e6720626f6e64206f726465722c207468656e206c6f7765722060626f6e645f6c6f745f69646020666972737420666f7220746965732e01390401dd01205c4d61785472656173757279436f6e7472696275746f727310106400000004390120546865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f747320696e2061207661756c74277320616363657074656420626f6e642d6c6f74206c6973742e6c4d696e696d756d4172676f6e73506572436f6e7472696275746f72184000e1f50500000000000000000000000004a020546865206d696e696d756d2077686f6c652d626f6e6420707572636861736520616d6f756e742e2050616c6c657449640907206c7164506f6f6c730401012054726561737572792070616c6c65742069642072657461696e656420696e206d6574616461746120666f72206163636f756e742064657269766174696f6e2e5c547265617375727952657365727665734163636f756e7400806d6f646c6c7164506f6f6c7374726561737572792d7265736572766500000000043101204163636f756e74207468617420686f6c647320747265617375727920726573657276657320666f7220636c61696d7320616e6420726573657276652d66756e646564207061796f7574732e6850657263656e74466f7254726561737572795265736572766573d505041404e02050657263656e74206f66207468652062696420706f6f6c20726573657276656420666f722074726561737572792072657365727665732e404d61785661756c7473506572506f6f6c101064000000045d0120546865206d6178696d756d206e756d626572206f66207661756c747320746861742063616e20706172746963697061746520696e206f6e65206672616d652773206c6f636b6564207661756c74206361706974616c2e644d617850656e64696e67556e6c6f636b735065724672616d651010e803000004490120546865206d6178696d756d206e756d626572206f6620626f6e64206c6f74732077686f73652072656c656173652064656c6179206d6179206d617475726520696e20612073696e676c65206672616d652e5c54726561737572794578697444656c61794672616d657330200a00000000000000041d0120546865206e756d626572206f66206672616d657320612072656c656173696e6720626f6e64206c6f742072656d61696e732068656c64206265666f72652072656c656173652e0135081f28466565436f6e74726f6c000001e50100013908204c4f7065726174696f6e616c4163636f756e7473014c4f7065726174696f6e616c4163636f756e74731c4c4f7065726174696f6e616c4163636f756e747300010402003d0804000405012052656769737465726564206f7065726174696f6e616c206163636f756e7473206b6579656420627920746865207072696d617279206163636f756e742069642e784f7065726174696f6e616c4163636f756e7442795375624163636f756e7400010402000004000411012052657665727365206c6f6f6b7570206f6620616e79206c696e6b6564206163636f756e7420746f20697473206f7065726174696f6e616c206163636f756e742069642e54436f6e73756d6564526566657272616c436f646573000104020430040004550120526566657272616c20636f6465732074686174206861766520616c7265616479206265656e206c696e6b65642c206b6579656420746f2074686569722070726f6f662065787069726174696f6e206672616d652e84436f6e73756d6564526566657272616c436f646573427945787069726174696f6e0001080502410890040004150120526566657272616c20636f64657320746f20636c65617220616674657220746865697220726566657272616c2070726f6f662065787069726174696f6e206672616d652e7c45787069726564526566657272616c436f6465436c65616e75704672616d650000300400042101204f6c6465737420726566657272616c2065787069726174696f6e206672616d652074686174207374696c6c2068617320636c65616e757020776f726b20746f20726573756d652e1c526577617264730100450808000004d020436f6e666967757265642072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e60456e63727970746564536572766572427953706f6e736565000104020049080400044901204f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f6164206b65796564206279207468652073706f6e736565206f7065726174696f6e616c206163636f756e742e013d0401f1012868426974636f696e4c6f636b53697a65466f72526566657272616c184000f2052a010000000000000000000000043901204164646974696f6e616c206172676f6e20616d6f756e7420286261736520756e697473292072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e644f7065726174696f6e616c526566657272616c52657761726418400065cd1d00000000000000000000000004e42044656661756c74207265776172642070616964207768656e20616e206163636f756e74206265636f6d6573206f7065726174696f6e616c2e784f7065726174696f6e616c526566657272616c426f6e7573526577617264184000f2052a01000000000000000000000004d02044656661756c7420626f6e757320726577617264207061696420657665727920726566657272616c207468726573686f6c642e98526566657272616c426f6e75734576657279584f7065726174696f6e616c53706f6e73656573101005000000040d01204e756d626572206f66206f7065726174696f6e616c2073706f6e736565732072657175697265642070657220726566657272616c20626f6e7573207265776172642e544d6178417661696c61626c65526566657272616c7310100300000004dc204d6178696d756d206e756d626572206f6620617661696c61626c6520726566657272616c7320616c6c6f776564206174206f6e63652e984d617845787069726564526566657272616c436f6465436c65616e757073506572426c6f636b1010e803000004f0204d6178696d756d206e756d626572206f66206578706972656420726566657272616c20636f64657320636c65617265642070657220626c6f636b2e544d6178456e637279707465645365727665724c656e10100001000004f4204d6178696d756d206e756d626572206f6620656e63727970746564207365727665722062797465732073746f726564207065722073706f6e7365652e944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e18400094357700000000000000000000000004f4204d696e696d756d207661756c742073656375726974697a6174696f6e20726571756972656420746f206265636f6d65206f7065726174696f6e616c2e644d696e696e675365617473466f724f7065726174696f6e616c10100200000004b4204d696e696e6720736561747320726571756972656420746f206265636f6d65206f7065726174696f6e616c2e584d696e696e675365617473506572526566657272616c10100500000004d8204d696e696e672073656174732072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e014d082240457468657265756d56657269666965720140457468657265756d56657269666965724054496e697469616c436865636b706f696e74526f6f740100348000000000000000000000000000000000000000000000000000000000000000000480204c617465737420696d706f7274656420636865636b706f696e7420726f6f74604c617465737446696e616c697a6564426c6f636b526f6f740100348000000000000000000000000000000000000000000000000000000000000000000494204c617465737420696d706f727465642066696e616c697a656420626c6f636b20726f6f745046696e616c697a6564426561636f6e5374617465000104063451080400049420426561636f6e2073746174652062792066696e616c697a656420626c6f636b20726f6f746446696e616c697a6564426561636f6e5374617465496e646578010010100000000004cc2046696e616c697a656420486561646572733a2043757272656e7420706f736974696f6e20696e2072696e67206275666665726c46696e616c697a6564426561636f6e53746174654d617070696e67010104061034800000000000000000000000000000000000000000000000000000000000000000041d012046696e616c697a656420486561646572733a204d617070696e67206f662072696e672062756666657220696e64657820746f2061207072756e696e672063616e64696461746558457865637574696f6e486561646572416e63686f72730001040634550804000405012052657461696e656420657865637574696f6e2d6c617965722068656164657220616e63686f727320627920657865637574696f6e20626c6f636b20686173682e8c457865637574696f6e486561646572416e63686f72734279426c6f636b4e756d62657200010406890255080400182901204f7264657265642072657461696e656420657865637574696f6e2d6c6179657220616e63686f7273206b6579656420627920657865637574696f6e20626c6f636b206e756d6265722e00710120546865206b657920697320746865206269672d656e6469616e20657865637574696f6e20626c6f636b206e756d62657220736f20636c69656e74732063616e20737461727420617420612074617267657420657865637574696f6e690120626c6f636b206e756d62657220616e64207363616e20666f727761726420746f207468652066697273742072657461696e656420616e63686f72206174206f72206166746572207468617420626c6f636b20776974686f757475012077616c6b696e672065766572792072657461696e65642066696e616c697a656420626561636f6e20726f6f742e2060457865637574696f6e486561646572416e63686f7273602072656d61696e73207468652063616e6f6e6963616c6420686173682d6b657965642070726f6f66206c6f6f6b75702e7846696e616c697a6564457865637574696f6e486561646572416e63686f72000104063434040004550120417474616368656420657865637574696f6e2d6c6179657220616e63686f72206861736820666f7220656163682072657461696e65642066696e616c697a656420626561636f6e2068656164657220726f6f742e904c6174657374457865637574696f6e486561646572416e63686f72426c6f636b48617368000034040004cc204c61746573742072657461696e656420657865637574696f6e2d6c6179657220616e63686f7220626c6f636b20686173682e3856616c696461746f7273526f6f74010034800000000000000000000000000000000000000000000000000000000000000000004c466f726b56657273696f6e5363686564756c6500009504040004590120466f726b2d76657273696f6e207363686564756c65207573656420666f722073796e632d636f6d6d6974746565207369676e696e6720646f6d61696e7320616e6420626561636f6e2073746174652070617468732e5043757272656e7453796e63436f6d6d697474656501005908550300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004882053796e6320636f6d6d697474656520666f722063757272656e7420706572696f64444e65787453796e63436f6d6d6974746565010059085503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047c2053796e6320636f6d6d697474656520666f72206e65787420706572696f647c4c617465737453796e63436f6d6d6974746565557064617465506572696f6401003020000000000000000004110120546865206c61737420706572696f6420776865726520746865206e6578742073796e6320636f6d6d697474656520776173207570646174656420666f7220667265652e344f7065726174696e674d6f64650100fd01040004a8205468652063757272656e74206f7065726174696e67206d6f6465206f66207468652070616c6c65742e30426561636f6e50726573657401007d08040004450120436861696e2d636f6e6669677572656420626561636f6e2070726573657420657870656374656420627920636c69656e74732074686174207375626d697420766572696669657220757064617465732e01610401f901044c4672656548656164657273496e74657276616c101020000000040101204d696e696d756d20676170206265747765656e2066696e616c697a6564206865616465727320666f7220616e2075706461746520746f20626520667265652e018108234843726f7373636861696e5472616e73666572014843726f7373636861696e5472616e736665726460436861696e436f6e6669674279536f75726365436861696e000104020502bd04040004c420436f6e66696720616363657074656420666f72206561636820737570706f7274656420736f7572636520636861696e2e644761746577617953746174654279536f75726365436861696e0001040205022502040004fc204c61746573742070726f76656e206761746577617920616374697669747920736e617073686f7420666f72206561636820736f7572636520636861696e2e744761746577617953796e6350617573654279536f75726365436861696e0001040205021d020400044501205061757365207374617465207265636f72646564207768656e20612063616e6f6e6963616c20676174657761792061637469766974792063616e6e6f74206265206170706c69656420736166656c792e74526563656e744172676f6e5472616e736665727342794163636f756e740101040200101000000000042d0120436f756e74206f66207374696c6c2d72657461696e6564207175616c696679696e67204172676f6e207472616e736665727320666f722065616368206c6f63616c206163636f756e742ecc436f756e63696c417070726f76616c437572736f72427944657374696e6174696f6e436861696e416e644163636f756e74496400010802028508300400045901204c617465737420636f756e63696c20617070726f76616c207175657565206e6f6e6365207369676e65642062792074686973206163636f756e7420666f72206f6e652064657374696e6174696f6e20636861696e2e68496e626f756e645472616e73666572734578706972696e6741740101040530ed020400040501204163636f756e74732077686f736520726563656e742d7472616e736665722065766964656e63652065787069726573206174206120676976656e207469636b2e744c6173745472616e73666572457870697279436c65616e75705469636b010030200000000000000000041101204c6174657374207469636b2077686f736520726563656e742d7472616e736665722065787069726174696f6e206275636b65742077617320636c65616e65642075702eac436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004290120546865207265676973746572656420636f756e63696c207369676e657220666f722065616368206163636f756e74206f6e20656163682064657374696e6174696f6e20636861696e2ec850656e64696e67436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004710120412073746167656420636f756e63696c207369676e657220726f746174696f6e20666f7220746865206e65787420636f756e63696c2061637469766174696f6e206f6e20656163682064657374696e6174696f6e20636861696e2eb4416374697665476c6f62616c49737375616e6365436f756e63696c427944657374696e6174696f6e436861696e000104020502340400043501205468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206861736820696e20666f72636520666f7220656163682064657374696e6174696f6e20636861696e2edc43757272656e745472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e000104020502180400045d0120436f6e736572766174697665207472616e736665722d6f757420636f6e76657273696f6e20726174652063757272656e746c792071756f74656420666f7220656163682064657374696e6174696f6e20636861696e2ee050726576696f75735472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e00010402050218040008690120496d6d6564696174656c792070726576696f7573207472616e736665722d6f757420636f6e76657273696f6e2072617465207374696c6c206163636570746564207768696c652074686520666c6f6f722072617463686574738c20757077617264206163726f737320636f756e63696c207472616e736974696f6e732e6c476c6f62616c49737375616e6365436f756e63696c42794861736800010402348908040004650120486973746f726963616c20476c6f62616c2049737375616e636520436f756e63696c20736e617073686f7473206b65796564206279207468656972207369676e65722d6f72646572656420636f756e63696c20686173682ea44c6174657374517565756564436f756e63696c48617368427944657374696e6174696f6e436861696e000104020502340400086d0120546865206c61746573742071756575656420636f756e63696c206861736820746861742073686f756c6420676f7665726e20746865206e65787420717565756520656e747279206f6e20656163682064657374696e6174696f6e1c20636861696e2ed45472616e736665724f757451756f74654d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e0001040205021804000855012054686520636f6e736572766174697665207472616e736665722d6f75742071756f746520666c6f6f72207468617420746865206e657874206e65776c79206f70656e6564207472616e736665722073686f756c649020736e617073686f74206f6e20656163682064657374696e6174696f6e20636861696e2ebc4e657874436f756e63696c417070726f76616c51756575654e6f6e6365427944657374696e6174696f6e436861696e0101040205023020000000000000000004310120546865206e657874206f7574626f756e6420617070726f76616c2d7175657565206e6f6e636520746f2061737369676e206f6e20656163682064657374696e6174696f6e20636861696e2eb8436f756e63696c417070726f76616c5175657565427944657374696e6174696f6e436861696e416e644e6f6e63650001080205a108a508040004210120546865206f726465726564206f7574626f756e6420636f756e63696c20617070726f76616c20717565756520666f7220656163682064657374696e6174696f6e20636861696e2e684d696e74696e67417574686f72697469657342795369676e6572000104020d02b9080400042101204c6f63616c204d696e74696e6720417574686f72697479207265636f726473206b657965642062792074686569722064657374696e6174696f6e207369676e696e67206b65792eb84d696e696d756d4d696e74696e67417574686f7269747956616c7565427944657374696e6174696f6e436861696e010104020502184010270000000000000000000000000000085101205065722d636861696e206f7665727269646520666f7220746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f20726567697374657220614c204d696e74696e6720417574686f726974792ef04d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67427944657374696e6174696f6e436861696e000104020502c5040400085d012050726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f72204d696e74696e6720417574686f726974792061637469766174696f6e2062617463686573206f6e20656163684c2064657374696e6174696f6e20636861696e2e984e6578745472616e736665724f75744e6f6e6365427953656e64696e674163636f756e74496401010402003020000000000000000004dc204e657874206f7574626f756e64207472616e73666572206e6f6e636520666f7220656163682073656e64696e67206163636f756e742e3c5472616e736665724f7574427949640001040234c5080400048c204f7574626f756e64207472616e7366657273206279207472616e736665722069642e9c50656e64696e67436f6c6c61746572616c697a6174696f6e52657175657374734279436861696e010104020502e108040004050120436f6c6c61746572616c697a6174696f6e207265717565737473207374696c6c206f70656e206f6e20656163682064657374696e6174696f6e20636861696e2eb44e6f6e5465726d696e616c5472616e736665724f7574436f756e74427944657374696e6174696f6e436861696e010104020502101000000000042101204e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f7574207265717565737473206f6e20656163682064657374696e6174696f6e20636861696e2ebc50656e64696e675472616e736665724f757443697263756c6174696f6e427944657374696e6174696f6e436861696e010104020502ed0880000000000000000000000000000000000000000000000000000000000000000004c42050656e64696e67206f7574626f756e64207072696e636970616c2062792064657374696e6174696f6e20636861696e2e01b904010102384c457468657265756d4275726e4163636f756e7400806d6f646c78636861696e7472006275726e0000000000000000000000000000000445012043616e6f6e6963616c20457468657265756d206275726e2d6163636f756e74696e67206163636f756e7420726570726573656e74696e672066756e6473206d6f76656420746f20457468657265756d2e70526563656e745472616e73666572526574656e74696f6e5469636b7330204038000000000000084d0120526574656e74696f6e2077696e646f772c20696e207469636b732c20666f7220726563656e74204172676f6e207472616e736665722065766964656e63652075736564206279206f7065726174696f6e616c28206163636f756e74732e704d6178416374697669746965735065725265636569707450726f6f66101010000000043d01204d6178696d756d206e756d626572206f66206f726465726564206761746577617920616374697669746965732074686174206d6179207368617265206f6e6520726563656970742070726f6f662e704d61785265636569707450726f6f667350657245787472696e73696310100a000000043d01204d6178696d756d206e756d626572206f662070726f76656e20726563656970742070726f6f66732074686174206d617920626520737570706c69656420696e206f6e652065787472696e7369632e444d6178436f756e63696c4d656d62657273101064000000042101204d6178696d756d206e756d626572206f66206d656d62657273207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206d61792063617272792e604d61785175657565417070726f76616c7350657243616c6c101020000000046101204d6178696d756d206e756d626572206f6620636f6e746967756f757320717565756520617070726f76616c73206f6e6520636f756e63696c206d656d626572206d6179207375626d697420696e206f6e652063616c6c2e845472616e736665724f757456616c6964697479457468657265756d426c6f636b733020401901000000000008210120457468657265756d2d626c6f636b2077696e646f7720616464656420746f20746865206c617465737420766572696669656420626c6f636b207768656e206f70656e696e67206138207472616e73666572206f75742e844d61785665726966696564457865637574696f6e426c6f636b4167655469636b7330203c00000000000000084101204d6178696d756d206167652c20696e207469636b732c206f662074686520766572696669656420457468657265756d20657865637574696f6e20616e63686f72207573656420746f206f70656e206138207472616e73666572206f75742ea45472616e736665724f75744d696e74696e67417574686f726974795469704261736973506f696e747310100a000000043501204d696e74696e6720617574686f72697479207469702072617465206170706c69656420746f207472616e736665722d6f757420726571756573747320696e20626173697320706f696e74732e784d696e5472616e73666572436f6c6c61746572616c496e6372656d656e74184010270000000000000000000000000000085d01204d696e696d756d206e6f726d616c697a656420636f6c6c61746572616c20696e6372656d656e7420616363657074656420666f72206f6e65207472616e7366657220756e6c6573732074686520696e6372656d656e74a820636f6d706c65746573207468652072656d61696e696e6720756e636f766572656420616d6f756e742eac44656661756c744d696e696d756d4d696e74696e67417574686f726974794d6963726f676f6e56616c75651840102700000000000000000000000000000859012044656661756c74206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e6720417574686f72697479206f6e5c206f6e652064657374696e6174696f6e20636861696e2ea44d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e101064000000046101204d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f757420726571756573747320747261636b656420666f72206f6e652064657374696e6174696f6e20636861696e2e54436f756e63696c526f746174696f6e4672616d657330200a00000000000000085101204d696e696d756d2072656d61696e696e67206672616d6520636f6d6d69746d656e74207265717569726564207768656e2072656164696e67207661756c7420636f6d6d697474656420636f6c6c61746572616c050120636170616369747920666f7220636f756e63696c20776569676874696e6720616e64204d696e74696e6720417574686f7269747920636f6c6c61746572616c2e806d61785f70726f6f665f657865637574696f6e5f6865616465725f6465707468101040000000044501204d6178696d756d20657865637574696f6e2068656164657273206361727269656420696e206f6e6520726563656970742070726f6f662773207461726765742d746f2d616e63686f7220636861696e2e01f10824f508042c34417574686f72697a6543616c6cfd089048436865636b4e6f6e5a65726f53656e64657201099040436865636b5370656356657273696f6e05091038436865636b547856657273696f6e09091030436865636b47656e657369730d093438436865636b4d6f7274616c69747911093428436865636b4e6f6e63651909902c436865636b5765696768741d0990604368617267655472616e73616374696f6e5061796d656e7421099044436865636b4d657461646174614861736825093109345765696768745265636c61696d2d09903509\"\n}\n","{\n \"specName\": \"argon\",\n \"implName\": \"argon\",\n \"authoringVersion\": 1,\n \"specVersion\": 151,\n \"implVersion\": 10,\n \"apis\": [\n [\"0x0090f9d890bb0bb2\", 1],\n [\"0x5e4dc2ce83c23f09\", 1],\n [\"0xdf6acb689907609b\", 5],\n [\"0x61571683e6d7a7c8\", 1],\n [\"0x40fe3ad401f8959a\", 6],\n [\"0x51c97e4020145cb0\", 1],\n [\"0xd2bc9897eed08f15\", 3],\n [\"0x05dd9be92cc17d28\", 3],\n [\"0xfff0fb031985f8a1\", 2],\n [\"0x11de59f9923f03d8\", 1],\n [\"0xf78b278be53f454c\", 2],\n [\"0xfbc577b9d747efd6\", 1],\n [\"0xbab599c4f0d362c6\", 1],\n [\"0xe6683faaa563317a\", 2],\n [\"0xbc9d89904f5b923f\", 1],\n [\"0x37c8bb1350a9a2a8\", 4],\n [\"0xed99c5acb25eedf5\", 3],\n [\"0xf3ff14d5ab527059\", 3],\n [\"0x37e397fc7c91f5e4\", 2],\n [\"0xccd9de6396c899ca\", 1],\n [\"0xab3c0572291feb8b\", 2]\n ],\n \"transactionVersion\": 5,\n \"systemVersion\": 1,\n \"stateVersion\": 1\n}\n","{\n \"mainnet\": \"0xee11bf2ff8838fcb0832c09085c5319a08ba6111c225ecd899fe659872d9d45d\",\n \"testnet\": \"0x66dc4e5ff85faddb0311b768eb73a58d9a00c65f06056ffaa370a1b1354d7411\"\n}\n","import { ArgonClient } from './index';\n\nexport interface IArgonCpiSnapshot {\n // The target price of the argon as a fixed point number (18 decimals)\n argonUsdTargetPrice: bigint;\n // The current price of the argon as a fixed point number (18 decimals)\n argonUsdPrice: bigint;\n // The block hash in which the cpi was finalized\n finalizedBlock: Uint8Array;\n tick: bigint;\n}\n\n/**\n * The WageProtector class is used to protect wages from inflation by using the current Argon Price Index to adjust the\n * baseAmount to current conditions. This ensures that the wage is always stable and does not lose or gain value based on\n * demand for the argon or fiat monetary supply changes.\n */\nexport class WageProtector {\n constructor(public latestCpi: IArgonCpiSnapshot) {}\n\n /**\n * Converts the base wage to the current wage using the latest CPI snapshot\n *\n * @param baseWage The base wage to convert\n * @returns The protected wage\n */\n public getProtectedWage(baseWage: bigint): bigint {\n return (baseWage * this.latestCpi.argonUsdTargetPrice) / this.latestCpi.argonUsdPrice;\n }\n\n /**\n * Subscribes to the current CPI and calls the callback function whenever the CPI changes\n * @param client The ArgonClient to use\n * @param callback The callback function to call when the CPI changes\n * @returns An object with an unsubscribe function that can be called to stop the subscription\n */\n public static async subscribe(\n client: ArgonClient,\n callback: (cpi: WageProtector) => void,\n ): Promise<{\n unsubscribe: () => void;\n }> {\n const unsubscribe = await client.query.priceIndex.current(async cpi => {\n if (cpi.isNone) {\n return;\n }\n const finalizedBlock = await client.rpc.chain.getFinalizedHead();\n\n callback(\n new WageProtector({\n argonUsdTargetPrice: cpi.value.argonUsdTargetPrice.toBigInt(),\n argonUsdPrice: cpi.value.argonUsdPrice.toBigInt(),\n finalizedBlock: new Uint8Array(finalizedBlock),\n tick: cpi.value.tick.toBigInt(),\n }),\n );\n });\n return { unsubscribe };\n }\n\n /**\n * Creates a new WageProtector instance by subscribing to the current CPI and waiting for the first value\n * @param client The ArgonClient to use\n */\n public static async create(client: ArgonClient): Promise<WageProtector> {\n return new Promise<WageProtector>(async (resolve, reject) => {\n try {\n const { unsubscribe } = await WageProtector.subscribe(client, x => {\n resolve(x);\n unsubscribe();\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import BigNumber from 'bignumber.js';\nimport type { ArgonClient } from './index';\nimport { EventRecord } from '@polkadot/types/interfaces/system';\n\nexport const MICROGONS_PER_ARGON = 1_000_000;\ntype IDispatchErrorLike = {\n isModule: boolean;\n asModule: Parameters<ArgonClient['registry']['findMetaError']>[0];\n toString(): string;\n};\n\nexport function formatArgons(microgons: bigint | number): string {\n if (microgons === undefined || microgons === null) return 'na';\n const isNegative = microgons < 0;\n let format = BigNumber(microgons.toString())\n .abs()\n .div(MICROGONS_PER_ARGON)\n .toFormat(2, BigNumber.ROUND_FLOOR);\n if (format.endsWith('.00')) {\n format = format.slice(0, -3);\n }\n return `${isNegative ? '-' : ''}₳${format}`;\n}\n\nexport async function gettersToObject<T>(obj: T): Promise<T> {\n if (obj === null || obj === undefined || typeof obj !== 'object') return obj;\n\n const keys = [];\n\n for (const key in obj) {\n keys.push(key);\n }\n\n if (Symbol.iterator in obj) {\n const iterableToArray = [];\n // @ts-expect-error - it should iterate by virtue of Symbol.iterator\n for (const item of obj) {\n iterableToArray.push(await gettersToObject(item));\n }\n return iterableToArray as T;\n }\n\n const result = {} as any;\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n // Skip functions\n if (descriptor && typeof descriptor.value === 'function') {\n continue;\n }\n const value = descriptor && descriptor.get ? descriptor.get.call(obj) : obj[key as keyof T];\n if (typeof value === 'function') continue;\n\n result[key] = await gettersToObject(value);\n }\n return result as T;\n}\n\nexport function dispatchErrorToString(client: ArgonClient, error: IDispatchErrorLike) {\n let message = error.toString();\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n message = `${section}.${name}: ${docs.join(' ')}`;\n }\n return message;\n}\n\nexport function isOutdatedTransactionError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes('Invalid Transaction: Transaction is outdated') ||\n message.includes('InvalidTransaction::Stale')\n );\n}\n\n// ExtrinsicError\nexport class ExtrinsicError extends Error {\n constructor(\n public readonly errorCode: string,\n public readonly details?: string,\n public readonly batchInterruptedIndex?: number,\n public readonly txFee: bigint = 0n,\n ) {\n super(errorCode);\n }\n\n public override toString() {\n if (this.batchInterruptedIndex !== undefined) {\n return `${this.errorCode} ${this.details ?? ''} (Batch interrupted at index ${this.batchInterruptedIndex})`;\n }\n return `${this.errorCode} ${this.details ?? ''}`;\n }\n}\n\nexport function dispatchErrorToExtrinsicError(\n client: ArgonClient,\n error: IDispatchErrorLike,\n batchInterruptedIndex?: number,\n txFee?: bigint,\n) {\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n return new ExtrinsicError(`${section}.${name}`, docs.join(' '), batchInterruptedIndex, txFee);\n }\n return new ExtrinsicError(error.toString(), undefined, batchInterruptedIndex, txFee);\n}\n\n/**\n * Check for an extrinsic success event in the given events. Helpful to validate the result of an extrinsic inclusion in a block (it will be included even if it fails)\n * @param events The events to check\n * @param client The client to use\n * @returns A promise that resolves if the extrinsic was successful, and rejects if it failed\n */\nexport function checkForExtrinsicSuccess(\n events: EventRecord[],\n client: ArgonClient,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n for (const { event } of events) {\n if (client.events.system.ExtrinsicSuccess.is(event)) {\n resolve();\n } else if (client.events.system.ExtrinsicFailed.is(event)) {\n // extract the data for this event\n const [dispatchError] = event.data;\n let errorInfo = dispatchError.toString();\n\n if (dispatchError.isModule) {\n const decoded = client.registry.findMetaError(dispatchError.asModule);\n errorInfo = `${decoded.section}.${decoded.name}`;\n }\n\n reject(new Error(`${event.section}.${event.method}:: ExtrinsicFailed:: ${errorInfo}`));\n }\n }\n });\n}\n\n/**\n * Return a bigint value using a canonical field first, then named fallback fields on the same source object.\n * Helpful when reading runtime records that may use older field names across spec versions.\n * @param value The preferred bigint-like value, usually from the current field name\n * @param source The object to read fallback fields from\n * @param fallbackFields The fallback field names to check in order\n * @param fallback The value to return if no preferred or fallback field is present\n * @returns The preferred or fallback value converted to bigint\n */\nexport function getBigIntFallback<T extends object>(\n value: IBigIntLike | undefined,\n source: T,\n fallbackFields: readonly string[],\n fallback = 0n,\n): bigint {\n if (typeof value === 'bigint') return value;\n if (value !== undefined) return value.toBigInt();\n\n const record = source as Record<string, IBigIntLike | undefined>;\n\n for (const fieldName of fallbackFields) {\n const field = record[fieldName];\n if (typeof field === 'bigint') return field;\n if (field !== undefined) return field.toBigInt();\n }\n\n return fallback;\n}\n\ntype IBigIntLike = bigint | { toBigInt(): bigint };\n","import { ArgonClient, GenericEvent, SpRuntimeDispatchError } from './index';\nimport { dispatchErrorToExtrinsicError, ExtrinsicError } from './utils';\nimport type { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { DispatchError } from '@polkadot/types/interfaces';\n\nexport type ITxProgressCallback = (progressToInBlock: number, result?: TxResult) => void;\n\nexport class TxResult {\n #isBroadcast = false;\n #submissionError?: Error;\n\n set isBroadcast(value: boolean) {\n this.#isBroadcast = value;\n this.updateProgress();\n }\n\n get isBroadcast(): boolean {\n return this.#isBroadcast;\n }\n\n set submissionError(value: Error) {\n if (value) {\n this.#submissionError = value;\n this.finalizedReject(value);\n this.inBlockReject(value);\n this.updateProgress();\n }\n }\n\n get submissionError(): Error | undefined {\n return this.#submissionError;\n }\n\n public waitForFinalizedBlock: Promise<Uint8Array>;\n public waitForInFirstBlock: Promise<Uint8Array>;\n public events: GenericEvent[] = [];\n\n public extrinsicError: ExtrinsicError | Error | undefined;\n public extrinsicIndex: number | undefined;\n\n public txProgressCallback?: ITxProgressCallback;\n /**\n * The index of the batch that was interrupted, if any.\n */\n public batchInterruptedIndex?: number;\n public blockHash?: Uint8Array;\n public blockNumber?: number;\n /**\n * The final fee paid for the transaction, including the fee tip.\n */\n public finalFee?: bigint;\n /**\n * The fee tip paid for the transaction.\n */\n public finalFeeTip?: bigint;\n\n public txProgress = 0;\n public isFinalized = false;\n\n protected finalizedResolve!: (block: Uint8Array) => void;\n protected finalizedReject!: (error: ExtrinsicError | Error) => void;\n protected inBlockResolve!: (block: Uint8Array) => void;\n protected inBlockReject!: (error: ExtrinsicError | Error) => void;\n\n constructor(\n protected readonly client: ArgonClient,\n public extrinsic: {\n signedHash: string;\n method: any;\n submittedTime: Date;\n submittedAtBlockNumber: number;\n accountAddress: string;\n nonce: number;\n },\n ) {\n this.waitForFinalizedBlock = new Promise((resolve, reject) => {\n this.finalizedResolve = resolve;\n this.finalizedReject = reject;\n });\n this.waitForInFirstBlock = new Promise((resolve, reject) => {\n this.inBlockResolve = resolve;\n this.inBlockReject = reject;\n });\n // drown reject\n this.waitForFinalizedBlock.catch(() => null);\n this.waitForInFirstBlock.catch(() => null);\n }\n\n public async setSeenInBlock(block: {\n blockHash: Uint8Array;\n blockNumber?: number;\n extrinsicIndex: number;\n events: GenericEvent[];\n }): Promise<void> {\n const { blockHash, blockNumber, events } = block;\n if (blockHash !== this.blockHash) {\n this.parseEvents(events);\n this.blockHash = blockHash;\n this.blockNumber =\n blockNumber ??\n (await this.client.rpc.chain.getHeader(blockHash).then(h => h.number.toNumber()));\n this.extrinsicIndex = block.extrinsicIndex;\n this.updateProgress();\n if (this.extrinsicError) {\n this.inBlockReject(this.extrinsicError);\n } else {\n this.inBlockResolve(blockHash);\n }\n }\n }\n\n public setFinalized() {\n this.isFinalized = true;\n this.updateProgress();\n\n let error = this.extrinsicError ?? this.submissionError;\n if (!error && !this.blockHash) {\n error = new Error('Cannot finalize transaction before it is included in a block');\n }\n\n if (error) {\n this.finalizedReject(error);\n this.inBlockReject(error);\n } else {\n this.finalizedResolve(this.blockHash!);\n this.inBlockResolve(this.blockHash!);\n }\n }\n\n public onSubscriptionResult(result: ISubmittableResult) {\n const { events, status, isFinalized, txIndex } = result;\n const extrinsicEvents = events.map(x => x.event);\n\n if (status.isBroadcast) {\n this.isBroadcast = true;\n if (result.internalError) this.submissionError = result.internalError;\n }\n if (status.isInBlock) {\n void this.setSeenInBlock({\n blockHash: Uint8Array.from(status.asInBlock),\n events: extrinsicEvents,\n extrinsicIndex: txIndex!,\n });\n }\n if (isFinalized) {\n this.setFinalized();\n }\n }\n\n private updateProgress() {\n if (this.isFinalized || this.submissionError) {\n this.txProgress = 100;\n } else if (this.blockNumber) {\n const elapsedBlocks = this.blockNumber - this.extrinsic.submittedAtBlockNumber;\n const FINALIZATION_BLOCKS = 5;\n const remainingPercent = Math.max(0, FINALIZATION_BLOCKS - elapsedBlocks) * 20;\n const percent = 100 - remainingPercent;\n this.txProgress = Math.min(percent, 99);\n } else if (this.extrinsic.submittedAtBlockNumber) {\n this.txProgress = 10;\n }\n this.txProgressCallback?.(this.txProgress);\n }\n\n private parseEvents(events: GenericEvent[]) {\n let encounteredError: SpRuntimeDispatchError | undefined;\n for (const event of events) {\n if (this.client.events.system.ExtrinsicFailed.is(event)) {\n const { dispatchError } = event.data;\n encounteredError ??= dispatchError;\n }\n if (this.client.events.utility.BatchInterrupted.is(event)) {\n const { index, error } = event.data;\n this.batchInterruptedIndex = index.toNumber();\n encounteredError = error;\n }\n if (this.client.events.transactionPayment.TransactionFeePaid.is(event)) {\n const { actualFee, tip } = event.data;\n this.finalFee = actualFee.toBigInt();\n this.finalFeeTip = tip.toBigInt();\n }\n }\n if (encounteredError) {\n this.extrinsicError = dispatchErrorToExtrinsicError(\n this.client,\n encounteredError as unknown as DispatchError,\n this.batchInterruptedIndex,\n this.finalFee,\n );\n } else {\n this.extrinsicError = undefined;\n }\n this.events = events;\n }\n}\n","import { waitForLoad } from './index';\nimport type { ArgonClient } from './index';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { SignerOptions } from '@polkadot/api/types';\nimport type { KeyringPair } from '@polkadot/keyring/types';\nimport { ITxProgressCallback, TxResult } from './TxResult';\n\nexport type TxSigningAccount =\n | KeyringPair\n | { address: string; signer: NonNullable<SignerOptions['signer']> };\n\nexport type ISubmittableOptions = Partial<Omit<SignerOptions, 'signer'>> & {\n tip?: bigint;\n logResults?: boolean;\n useLatestNonce?: boolean;\n txProgressCallback?: ITxProgressCallback;\n disableAutomaticTxTracking?: boolean;\n};\n\nexport class TxSubmitter {\n public readonly address: string;\n\n constructor(\n public readonly client: ArgonClient,\n public tx: SubmittableExtrinsic,\n public readonly account: TxSigningAccount,\n ) {\n this.address = account.address;\n }\n\n public async feeEstimate(tip?: bigint): Promise<bigint> {\n const { partialFee } = await this.tx.paymentInfo(this.address, { tip });\n return partialFee.toBigInt();\n }\n\n public async canAfford(\n options: {\n tip?: bigint;\n unavailableBalance?: bigint;\n includeExistentialDeposit?: boolean;\n } = {},\n ): Promise<{ canAfford: boolean; availableBalance: bigint; txFee: bigint }> {\n const { tip, unavailableBalance } = options;\n const account = await this.client.query.system.account(this.address);\n let availableBalance = account.data.free.toBigInt();\n const userBalance = availableBalance;\n if (unavailableBalance) {\n availableBalance -= unavailableBalance;\n }\n const existentialDeposit = options.includeExistentialDeposit\n ? this.client.consts.balances.existentialDeposit.toBigInt()\n : 0n;\n const fees = await this.feeEstimate(tip);\n const totalCharge = fees + (tip ?? 0n);\n const canAfford = availableBalance >= totalCharge + existentialDeposit;\n return { canAfford, availableBalance: userBalance, txFee: fees };\n }\n\n public async sign(options: ISubmittableOptions = {}): Promise<SubmittableExtrinsic> {\n const { useLatestNonce, ...apiOptions } = options;\n await waitForLoad();\n if (useLatestNonce && apiOptions.nonce === undefined) {\n apiOptions.nonce = await this.client.rpc.system.accountNextIndex(this.address);\n }\n\n if ('signer' in this.account) {\n return await this.tx.signAsync(this.address, { ...apiOptions, signer: this.account.signer });\n }\n\n return await this.tx.signAsync(this.account, apiOptions);\n }\n\n public async submitSigned(\n signedTx: SubmittableExtrinsic,\n options: ISubmittableOptions = {},\n ): Promise<TxResult> {\n const blockHeight = await this.client.rpc.chain.getHeader().then(h => h.number.toNumber());\n if (options.logResults) {\n this.logRequest();\n }\n const txHash = signedTx.hash.toHex();\n const result = new TxResult(this.client, {\n signedHash: txHash,\n method: signedTx.method.toHuman(),\n accountAddress: this.address,\n submittedTime: new Date(),\n submittedAtBlockNumber: blockHeight,\n nonce: signedTx.nonce.toNumber(),\n });\n result.txProgressCallback = options.txProgressCallback;\n if (options.disableAutomaticTxTracking !== true) {\n await signedTx.send(result.onSubscriptionResult.bind(result));\n } else {\n try {\n await signedTx.send();\n result.isBroadcast = true;\n } catch (error) {\n result.submissionError = error as Error;\n }\n }\n return result;\n }\n\n public async submit(options: ISubmittableOptions = {}): Promise<TxResult> {\n const signedTx = await this.sign(options);\n return await this.submitSigned(signedTx, options);\n }\n\n private logRequest() {\n let toHuman = (this.tx.toHuman() as any).method;\n const txString = [];\n let api = formatCall(toHuman);\n const args: any[] = [];\n if (api === 'proxy.proxy') {\n toHuman = toHuman.args.call;\n txString.push('Proxy');\n api = formatCall(toHuman);\n }\n if (api.startsWith('utility.batch')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const calls = toHuman.args.calls.map(formatCall).join(', ');\n txString.push(`Batch[${calls}]`);\n } else {\n txString.push(api);\n args.push(toHuman.args);\n }\n args.unshift(txString.join('->'));\n console.log('Submitting transaction from %s:', this.address, ...args);\n }\n}\n\nfunction formatCall(call: any): string {\n return `${call.section}.${call.method}`;\n}\n","import { Keyring, KeyringPair, mnemonicGenerate } from './index';\n\nexport function keyringFromSuri(\n suri: string,\n cryptoType: 'sr25519' | 'ed25519' = 'sr25519',\n): KeyringPair {\n return new Keyring({ type: cryptoType }).createFromUri(suri);\n}\n\nexport function createKeyringPair(opts: { cryptoType?: 'sr25519' | 'ed25519' }): KeyringPair {\n const { cryptoType } = opts;\n const seed = mnemonicGenerate();\n return keyringFromSuri(seed, cryptoType);\n}\n","import { getOfflineRegistry, type ArgonPrimitivesDigestsFrameInfo, type Header } from './index';\n\nexport function getTickFromHeader(header: Header): number | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'aura') {\n return getOfflineRegistry().createType('u64', data).toNumber();\n }\n }\n }\n return undefined;\n}\n\nexport function getAuthorFromHeader(header: Header): string | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'pow_') {\n return getOfflineRegistry().createType('AccountId32', data).toHuman();\n }\n }\n }\n return undefined;\n}\n\nexport function getFrameInfoFromHeader(\n header: Header,\n): { isNewFrame: boolean; frameId: number; frameRewardTicksRemaining: number } | undefined {\n for (const x of header.digest.logs) {\n if (x.isConsensus) {\n const [engineId, data] = x.asConsensus;\n if (engineId.toString() === 'fram') {\n const decoded: ArgonPrimitivesDigestsFrameInfo = getOfflineRegistry().createType(\n 'ArgonPrimitivesDigestsFrameInfo',\n data,\n );\n return {\n isNewFrame: decoded.isNewFrame.toPrimitive(),\n frameId: decoded.frameId.toNumber(),\n frameRewardTicksRemaining: decoded.frameRewardTicksRemaining.toNumber(),\n };\n }\n }\n }\n return undefined;\n}\n","import {\n type ArgonClient,\n type ArgonPrimitivesVault,\n FIXED_U128_DECIMALS,\n formatArgons,\n fromFixedNumber,\n MICROGONS_PER_ARGON,\n PERMILL_DECIMALS,\n toFixedNumber,\n TxSubmitter,\n} from './index';\nimport BigNumber from 'bignumber.js';\nimport bs58check from 'bs58check';\nimport { hexToU8a } from '@polkadot/util';\nimport { TxResult } from './TxResult';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport type { PriceIndex } from './PriceIndex';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport type {\n bool,\n BTreeMap,\n Bytes,\n Compact,\n Option,\n Struct,\n u128,\n u64,\n} from '@polkadot/types-codec';\nimport type { AccountId32 } from '@polkadot/types/interfaces/runtime';\nimport type { ITuple } from '@polkadot/types-codec/types';\nimport { ArgonPrimitivesVaultVaultTerms } from '@polkadot/types/lookup';\n\ninterface ArgonPrimitivesVaultV144 extends Struct {\n readonly operatorAccountId: AccountId32;\n readonly securitization: Compact<u128>;\n readonly argonsLocked: Compact<u128>;\n readonly argonsPendingActivation: Compact<u128>;\n readonly argonsScheduledForRelease: BTreeMap<u64, u128>;\n readonly securitizationRatio: Compact<u128>;\n readonly isClosed: bool;\n readonly terms: ArgonPrimitivesVaultVaultTerms;\n readonly pendingTerms: Option<ITuple<[u64, ArgonPrimitivesVaultVaultTerms]>>;\n readonly openedTick: Compact<u64>;\n}\n\nexport class Vault {\n public securitization!: bigint;\n public securitizationLocked!: bigint;\n public securitizationPendingActivation!: bigint;\n /**\n * Map of bitcoin height to amount of securitization released at that height\n */\n public securitizationReleaseSchedule: Map<number, bigint>;\n public terms!: ITerms;\n public operatorAccountId!: string;\n public isClosed!: boolean;\n public vaultId: number;\n public pendingTerms?: ITerms;\n public pendingTermsChangeTick?: number;\n public openedDate: Date;\n public openedTick: number;\n public securitizationRatio!: number;\n\n public lockedSatoshis!: number;\n public securitizedSatoshis!: number;\n public name?: string;\n public lastNameChangeTick?: number;\n public bitcoinLockDelegateAccount?: string;\n\n constructor(\n id: number,\n vault: ArgonPrimitivesVault,\n public tickDuration: number,\n ) {\n this.vaultId = id;\n this.openedTick = vault.openedTick.toNumber();\n this.openedDate = new Date(this.openedTick * this.tickDuration);\n this.securitizationReleaseSchedule = new Map();\n this.load(vault);\n }\n\n public load(vault: ArgonPrimitivesVault | ArgonPrimitivesVaultV144): void {\n this.securitization = vault.securitization.toBigInt();\n this.securitizationRatio = fromFixedNumber(\n vault.securitizationRatio.toBigInt(),\n FIXED_U128_DECIMALS,\n ).toNumber();\n this.securitizationReleaseSchedule.clear();\n let schedule: BTreeMap<u64, u128>;\n if ('argonsLocked' in vault) {\n // spec 143 compatibility - don't bother with ratio as it was forced to 1:1\n this.securitizationLocked = vault.argonsLocked.toBigInt();\n this.securitizationPendingActivation = vault.argonsPendingActivation.toBigInt();\n schedule = vault.argonsScheduledForRelease;\n } else {\n this.securitizationLocked = vault.securitizationLocked.toBigInt();\n this.securitizationPendingActivation = vault.securitizationPendingActivation.toBigInt();\n schedule = vault.securitizationReleaseSchedule;\n }\n if (schedule.size > 0) {\n for (const [bitcoinHeight, amount] of schedule.entries()) {\n this.securitizationReleaseSchedule.set(bitcoinHeight.toNumber(), amount.toBigInt());\n }\n }\n this.terms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n vault.terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: vault.terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n if ('lockedSatoshis' in vault) {\n this.lockedSatoshis = vault.lockedSatoshis.toNumber();\n this.securitizedSatoshis = vault.securitizedSatoshis.toNumber();\n } else {\n this.lockedSatoshis = 0;\n this.securitizedSatoshis = 0;\n }\n\n this.operatorAccountId = vault.operatorAccountId.toString();\n this.isClosed = vault.isClosed.valueOf();\n this.pendingTerms = undefined;\n this.pendingTermsChangeTick = undefined;\n this.name = undefined;\n this.lastNameChangeTick = undefined;\n this.bitcoinLockDelegateAccount = undefined;\n if (vault.pendingTerms.isSome) {\n const [tickApply, terms] = vault.pendingTerms.value;\n this.pendingTermsChangeTick = tickApply.toNumber();\n this.pendingTerms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n }\n if ('name' in vault && vault.name.isSome) {\n this.name = decodeVaultName(vault.name.unwrap());\n }\n if ('lastNameChangeTick' in vault && vault.lastNameChangeTick.isSome) {\n this.lastNameChangeTick = vault.lastNameChangeTick.unwrap().toNumber();\n }\n if ('bitcoinLockDelegateAccount' in vault && vault.bitcoinLockDelegateAccount.isSome) {\n this.bitcoinLockDelegateAccount = vault.bitcoinLockDelegateAccount.unwrap().toHuman();\n }\n }\n\n public availableBitcoinSpace(): bigint {\n const availableSecuritization = this.availableSecuritization();\n const microgons = BigNumber(availableSecuritization).div(this.securitizationRatioBN());\n return bigNumberToBigInt(microgons);\n }\n\n public availableSecuritization(): bigint {\n return this.securitization - this.securitizationLocked;\n }\n\n public availableBondSpace(\n priceIndex: PriceIndex,\n bondLots?: Iterable<{ activeBonds: number }>,\n bondFullCapacityPerFrame?: boolean,\n ): bigint {\n if (this.securitizedSatoshis <= 0) return 0n;\n\n const microgonsPerBond = BigInt(MICROGONS_PER_ARGON);\n const totalBondCapacityMicrogons = priceIndex.getSatoshiPriceInTargetMicrogons(\n BigInt(this.securitizedSatoshis),\n );\n const capacityMicrogons = bondFullCapacityPerFrame\n ? totalBondCapacityMicrogons\n : totalBondCapacityMicrogons / 10n;\n const bondCapacity = Number(capacityMicrogons / microgonsPerBond);\n const activeBonds = [...(bondLots ?? [])].reduce(\n (sum, bondLot) => sum + bondLot.activeBonds,\n 0,\n );\n const availableBonds = activeBonds < bondCapacity ? bondCapacity - activeBonds : 0;\n\n return BigInt(availableBonds) * microgonsPerBond;\n }\n\n public getRelockCapacity(): bigint {\n return [...this.securitizationReleaseSchedule.values()].reduce((acc, val) => acc + val, 0n);\n }\n\n public securitizationRatioBN(): BigNumber {\n return new BigNumber(this.securitizationRatio);\n }\n\n public activatedSecuritization(): bigint {\n return this.securitizationLocked - this.securitizationPendingActivation;\n }\n\n /**\n * Returns the amount of securitization available to match per treasury pool\n */\n public activatedSecuritizationPerSlot(): bigint {\n const activated = this.activatedSecuritization();\n return activated / 10n;\n }\n\n public calculateBitcoinFee(amount: bigint): bigint {\n const feeBn = this.terms.bitcoinAnnualPercentRate\n .multipliedBy(amount)\n .integerValue(BigNumber.ROUND_CEIL);\n return BigInt(feeBn.toString()) + this.terms.bitcoinBaseFee;\n }\n\n public static async get(\n client: ArgonClient | ApiDecoration<'promise'>,\n vaultId: number,\n tickDurationMillis?: number,\n ): Promise<Vault> {\n const rawVault = await client.query.vaults.vaultsById(vaultId);\n if (rawVault.isNone) {\n throw new Error(`Vault with id ${vaultId} not found`);\n }\n const tickDuration =\n tickDurationMillis ??\n (await client.query.ticks.genesisTicker().then(x => x.tickDurationMillis.toNumber()))!;\n return new Vault(vaultId, rawVault.unwrap(), tickDuration);\n }\n\n public static async create(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n securitization: bigint | number;\n securitizationRatio: number;\n annualPercentRate: number;\n baseFee: bigint | number;\n bitcoinXpub: string;\n name?: string;\n treasuryProfitSharing: number;\n doNotExceedBalance?: bigint;\n } & ISubmittableOptions,\n config: { tickDurationMillis?: number } = {},\n ): Promise<{ getVault(): Promise<Vault>; txResult: TxResult }> {\n const {\n securitization,\n securitizationRatio,\n annualPercentRate,\n baseFee,\n bitcoinXpub,\n name,\n tip,\n doNotExceedBalance,\n } = args;\n let xpubBytes = hexToU8a(bitcoinXpub);\n if (xpubBytes.length !== 78) {\n if (\n bitcoinXpub.startsWith('xpub') ||\n bitcoinXpub.startsWith('tpub') ||\n bitcoinXpub.startsWith('zpub')\n ) {\n const bytes = bs58check.decode(bitcoinXpub);\n if (bytes.length !== 78) {\n throw new Error('Invalid Bitcoin xpub key length, must be 78 bytes');\n }\n xpubBytes = bytes;\n }\n }\n if (securitizationRatio < 1 || securitizationRatio > 2) {\n throw new Error('Securitization ratio must be between 1 and 2');\n }\n const encodedName = encodeVaultName(name);\n const vaultParams = {\n terms: {\n // convert to fixed u128\n bitcoinAnnualPercentRate: toFixedNumber(annualPercentRate, FIXED_U128_DECIMALS),\n bitcoinBaseFee: BigInt(baseFee),\n treasuryProfitSharing: toFixedNumber(args.treasuryProfitSharing, PERMILL_DECIMALS),\n },\n securitizationRatio: toFixedNumber(securitizationRatio, FIXED_U128_DECIMALS),\n securitization: BigInt(securitization),\n bitcoinXpubkey: xpubBytes,\n name: encodedName,\n };\n const tx = new TxSubmitter(client, client.tx.vaults.create(vaultParams), txSigner);\n if (doNotExceedBalance) {\n const finalTip = tip ?? 0n;\n let txFee = await tx.feeEstimate(finalTip);\n while (txFee + finalTip + vaultParams.securitization > doNotExceedBalance) {\n vaultParams.securitization = doNotExceedBalance - txFee - finalTip;\n tx.tx = client.tx.vaults.create(vaultParams);\n txFee = await tx.feeEstimate(finalTip);\n }\n }\n const canAfford = await tx.canAfford({ tip, unavailableBalance: BigInt(securitization) });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient balance to create vault. Required: ${formatArgons(securitization)}, Available: ${formatArgons(canAfford.availableBalance)}`,\n );\n }\n\n const result = await tx.submit({\n ...args,\n useLatestNonce: true,\n });\n\n async function getVault(): Promise<Vault> {\n await result.waitForFinalizedBlock;\n let vaultId: number | undefined;\n for (const event of result.events) {\n if (client.events.vaults.VaultCreated.is(event)) {\n vaultId = event.data.vaultId.toNumber();\n break;\n }\n }\n if (vaultId === undefined) {\n throw new Error('Vault creation failed, no VaultCreated event found');\n }\n return Vault.get(client, vaultId, config.tickDurationMillis);\n }\n return { getVault, txResult: result };\n }\n\n public static async setName(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n name?: string | null;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const tx = new TxSubmitter(\n client,\n client.tx.vaults.setName(encodeVaultName(args.name)),\n txSigner,\n );\n\n return tx.submit({\n ...args,\n useLatestNonce: true,\n });\n }\n}\n\nexport interface ITerms {\n readonly bitcoinAnnualPercentRate: BigNumber;\n readonly bitcoinBaseFee: bigint;\n readonly treasuryProfitSharing: BigNumber;\n}\nfunction bigNumberToBigInt(bn: BigNumber): bigint {\n return BigInt(bn.integerValue(BigNumber.ROUND_DOWN).toString());\n}\n\nfunction decodeVaultName(name: Bytes): string {\n return new TextDecoder().decode(Uint8Array.from(name));\n}\n\nfunction encodeVaultName(name?: string | null): string | null {\n if (name === undefined || name === null) {\n return null;\n }\n if (!/^[A-Z][A-Za-z0-9]{0,17}$/.test(name)) {\n throw new Error(\n 'Vault name must start with a capital letter and contain at most 18 alphanumeric characters',\n );\n }\n return name;\n}\n","import BigNumber from 'bignumber.js';\n\nexport function toFixedNumber(\n value: string | number | BigNumber, // accept string to avoid early precision loss\n decimals: number,\n): bigint {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value);\n // truncate toward 0; use ROUND_FLOOR if you really need floor for positives\n const int = bn.times(factor).integerValue(BigNumber.ROUND_DOWN);\n return BigInt(int.toFixed(0));\n}\n\nexport function fromFixedNumber(value: bigint, decimals: number = FIXED_U128_DECIMALS): BigNumber {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value.toString());\n return bn.div(factor);\n}\n\nexport const FIXED_U128_DECIMALS = 18;\nexport const PERMILL_DECIMALS = 6;\n","import {\n ArgonClient,\n ArgonPrimitivesBitcoinBitcoinNetwork,\n ArgonPrimitivesBitcoinUtxoRef,\n getBigIntFallback,\n} from './index';\nimport { GenericEvent } from '@polkadot/types';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport { TxSubmitter } from './TxSubmitter';\nimport { TxResult } from './TxResult';\nimport { u8aToHex } from '@polkadot/util';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport { PriceIndex } from './PriceIndex';\nimport { bool, Option, u128 } from '@polkadot/types-codec';\nimport { formatArgons } from './utils';\nimport type { Vault } from './Vault';\nimport BigNumber from 'bignumber.js';\n\nexport const SATS_PER_BTC = 100_000_000n;\n\ntype IQueryableClient = ArgonClient | ApiDecoration<'promise'>;\ntype UtxoRefLike =\n | ArgonPrimitivesBitcoinUtxoRef\n | { txid: string | Uint8Array; outputIndex: number };\n\ntype UtxoRefOption = { unwrap: () => ArgonPrimitivesBitcoinUtxoRef };\n\nfunction normalizeUtxoRef(utxoRef: UtxoRefLike): {\n txid: string;\n outputIndex: number;\n} {\n let txid = utxoRef.txid;\n if (typeof txid === 'object' && 'toHex' in txid) {\n txid = txid.toHex();\n } else if (typeof txid !== 'string') {\n txid = u8aToHex(txid);\n }\n let outputIndex = utxoRef.outputIndex;\n if (typeof outputIndex !== 'number') {\n outputIndex = outputIndex.toNumber();\n }\n return { txid, outputIndex };\n}\n\nexport class BitcoinLock implements IBitcoinLock {\n public utxoId: number;\n public p2wshScriptHashHex: string;\n public vaultId: number;\n public lockedTargetPrice: bigint;\n public liquidityPromised: bigint;\n public ownerAccount: string;\n public satoshis: bigint;\n public utxoSatoshis?: bigint;\n public vaultPubkey: string;\n public securityFees: bigint;\n public vaultClaimPubkey: string;\n public ownerPubkey: string;\n public vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n public vaultClaimHeight: number;\n public openClaimHeight: number;\n public createdAtHeight: number;\n public isFunded: boolean;\n public createdAtArgonBlock: number;\n public fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n\n constructor(data: IBitcoinLock) {\n this.utxoId = data.utxoId;\n this.p2wshScriptHashHex = data.p2wshScriptHashHex;\n this.vaultId = data.vaultId;\n this.lockedTargetPrice = data.lockedTargetPrice;\n this.liquidityPromised = data.liquidityPromised;\n this.ownerAccount = data.ownerAccount;\n this.satoshis = data.satoshis;\n this.utxoSatoshis = data.utxoSatoshis;\n this.vaultPubkey = data.vaultPubkey;\n this.securityFees = data.securityFees;\n this.vaultClaimPubkey = data.vaultClaimPubkey;\n this.ownerPubkey = data.ownerPubkey;\n this.vaultXpubSources = data.vaultXpubSources;\n this.vaultClaimHeight = data.vaultClaimHeight;\n this.openClaimHeight = data.openClaimHeight;\n this.createdAtHeight = data.createdAtHeight;\n this.isFunded = data.isFunded;\n this.fundHoldExtensionsByBitcoinExpirationHeight =\n data.fundHoldExtensionsByBitcoinExpirationHeight;\n this.createdAtArgonBlock = data.createdAtArgonBlock;\n }\n\n /**\n * Gets the UTXO reference by ID.\n * @param client - client at the block height to query the UTXO reference at a specific point in time.\n * @return An object containing the transaction ID and output index, or undefined if not found.\n * @return.txid - The Bitcoin transaction ID of the UTXO.\n * @return.vout - The output index of the UTXO in the transaction.\n * @return.bitcoinTxid - The Bitcoin transaction ID of the UTXO formatted in little endian\n */\n public async getFundingUtxoRef(\n client: IQueryableClient,\n ): Promise<{ txid: string; vout: number; bitcoinTxid: string } | undefined> {\n let refRaw: Option<ArgonPrimitivesBitcoinUtxoRef>;\n if (\n 'utxoIdToRef' in client.query.bitcoinUtxos &&\n typeof client.query.bitcoinUtxos.utxoIdToRef === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n refRaw = await client.query.bitcoinUtxos.utxoIdToRef(this.utxoId);\n } else {\n refRaw = await client.query.bitcoinUtxos.utxoIdToFundingUtxoRef(this.utxoId);\n }\n if (!refRaw || refRaw.isNone) {\n return;\n }\n const ref = refRaw.unwrap();\n\n const txid = u8aToHex(ref.txid);\n const bitcoinTxid = u8aToHex(ref.txid.slice().reverse());\n const vout = ref.outputIndex.toNumber();\n return { txid, vout, bitcoinTxid };\n }\n\n public async findPendingMints(client: IQueryableClient): Promise<bigint[]> {\n const pendingMint = await client.query.mint.pendingMintUtxos();\n const mintsPending: bigint[] = [];\n for (const [utxoIdRaw, _accountId, mintAmountRaw] of pendingMint) {\n if (utxoIdRaw.toNumber() === this.utxoId) {\n mintsPending.push(mintAmountRaw.toBigInt());\n }\n }\n return mintsPending;\n }\n\n public async calculateRatchetingCosts(\n client: IQueryableClient,\n priceIndex: PriceIndex,\n vault: Vault,\n microgonsAtTargetPerBtc?: bigint,\n ): Promise<{ burnAmount: bigint; ratchetingFee: bigint }> {\n const { createdAtHeight, vaultClaimHeight, lockedTargetPrice, satoshis } = this;\n const currentTargetPrice =\n microgonsAtTargetPerBtc !== undefined\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n\n let ratchetingFee = vault.terms.bitcoinBaseFee;\n let burnAmount = 0n;\n\n // ratchet up\n if (currentTargetPrice > lockedTargetPrice) {\n const diffTargetAmount = currentTargetPrice - lockedTargetPrice;\n const amountToMint = BitcoinLock.calculateRedemptionAmount(priceIndex, diffTargetAmount);\n const bitcoinFee = vault.calculateBitcoinFee(amountToMint);\n const percentageFee = bitcoinFee - vault.terms.bitcoinBaseFee;\n\n const currentBitcoinHeight = await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const fullTerm = Math.max(1, vaultClaimHeight - createdAtHeight);\n const elapsedBlocks = Math.max(0, currentBitcoinHeight - createdAtHeight);\n const cappedRemainingBlocks = Math.max(0, fullTerm - elapsedBlocks);\n const proratedFee = (percentageFee * BigInt(cappedRemainingBlocks)) / BigInt(fullTerm);\n ratchetingFee = vault.terms.bitcoinBaseFee + proratedFee;\n } else {\n burnAmount = BitcoinLock.calculateRedemptionAmount(priceIndex, currentTargetPrice);\n }\n\n return {\n ratchetingFee,\n burnAmount,\n };\n }\n\n public async ratchet(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n txSigner: TxSigningAccount;\n vault: Vault;\n microgonsAtTargetPerBtc?: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n txResult: TxResult;\n getRatchetResult: () => Promise<{\n securityFee: bigint;\n txFee: bigint;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n pendingMint: bigint;\n burned: bigint;\n blockHeight: number;\n bitcoinBlockHeight: number;\n }>;\n }> {\n const { priceIndex, txSigner, tip = 0n, vault, client, microgonsAtTargetPerBtc } = args;\n\n const ratchetingCosts = await this.calculateRatchetingCosts(\n client,\n priceIndex,\n vault,\n microgonsAtTargetPerBtc,\n );\n const tx = client.tx.bitcoinLocks.ratchet(this.utxoId, { V1: { microgonsAtTargetPerBtc } });\n const txSubmitter = new TxSubmitter(client, tx, txSigner);\n const canAfford = await txSubmitter.canAfford({\n tip,\n unavailableBalance: BigInt(ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee),\n });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to ratchet lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(\n ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee,\n )}`,\n );\n }\n\n const txResult = await txSubmitter.submit(args);\n\n const getRatchetResult = async () => {\n const blockHash = await txResult.waitForFinalizedBlock;\n const ratchetEvent = txResult.events.find(x =>\n client.events.bitcoinLocks.BitcoinLockRatcheted.is(x),\n );\n if (!ratchetEvent) {\n throw new Error(`Ratchet event not found in transaction events`);\n }\n const api = await client.at(blockHash);\n const bitcoinBlockHeight = await api.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const {\n amountBurned,\n liquidityPromised: liquidityPromisedRaw,\n newTargetPrice: newTargetPriceRaw,\n oldTargetPrice: oldTargetPriceRaw,\n securityFee,\n } = ratchetEvent.data;\n\n const liquidityPromised = liquidityPromisedRaw.toBigInt();\n const newTargetPrice = newTargetPriceRaw.toBigInt();\n const oldTargetPrice = oldTargetPriceRaw.toBigInt();\n const pendingMint =\n newTargetPrice > oldTargetPrice\n ? BitcoinLock.calculateRedemptionAmount(priceIndex, newTargetPrice - oldTargetPrice)\n : liquidityPromised;\n\n return {\n txFee: txResult.finalFee ?? 0n,\n blockHeight: txResult.blockNumber!,\n bitcoinBlockHeight,\n pendingMint,\n liquidityPromised,\n lockedTargetPrice: newTargetPrice,\n burned: amountBurned.toBigInt(),\n securityFee: securityFee.toBigInt(),\n };\n };\n\n return {\n txResult,\n getRatchetResult,\n };\n }\n\n public calculateRedemptionAmount(priceIndex: PriceIndex): bigint {\n return BitcoinLock.calculateRedemptionAmountFromSatoshis(\n priceIndex,\n this.satoshis,\n this.lockedTargetPrice,\n );\n }\n\n public async requestRelease(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n releaseRequest: IReleaseRequest;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const {\n priceIndex,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n txSigner,\n tip = 0n,\n client,\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const submitter = new TxSubmitter(\n client,\n client.tx.bitcoinLocks.requestRelease(this.utxoId, toScriptPubkey, bitcoinNetworkFee),\n txSigner,\n );\n\n const redemptionAmount = this.calculateRedemptionAmount(priceIndex);\n\n const canAfford = await submitter.canAfford({\n tip,\n unavailableBalance: BigInt(redemptionAmount),\n });\n\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to release lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(redemptionAmount + canAfford.txFee + tip)}`,\n );\n }\n return submitter.submit({\n logResults: true,\n ...args,\n });\n }\n\n public async getReleaseRequest(\n client: IQueryableClient,\n ): Promise<IReleaseRequestDetails | undefined> {\n const requestMaybe = await client.query.bitcoinLocks.lockReleaseRequestsByUtxoId(this.utxoId);\n if (!requestMaybe.isSome) {\n return undefined;\n }\n const request = requestMaybe.unwrap();\n return {\n toScriptPubkey: request.toScriptPubkey.toHex(),\n bitcoinNetworkFee: request.bitcoinNetworkFee.toBigInt(),\n dueFrame: request.cosignDueFrame.toNumber(),\n vaultId: request.vaultId.toNumber(),\n redemptionAmount: getBigIntFallback(request.redemptionAmount, request, ['redemptionPrice']),\n };\n }\n\n /**\n * Finds the cosign signature for a vault lock by UTXO ID. Optionally waits for the signature\n * @param client - The Argon client with rpc access\n * @param finalizedStateOnly - If true, only checks finalized state\n * @param waitForSignatureMillis - Optional timeout in milliseconds to wait for the signature. If -1, waits indefinitely.\n */\n public async findVaultCosignSignature(\n client: ArgonClient,\n finalizedStateOnly = false,\n waitForSignatureMillis?: number,\n ): Promise<{ blockHeight: number; signature: Uint8Array } | undefined> {\n let queryClient = client as IQueryableClient;\n if (finalizedStateOnly) {\n const finalizedHead = await client.rpc.chain.getFinalizedHead();\n queryClient = await client.at(finalizedHead);\n }\n const releaseHeight = await queryClient.query.bitcoinLocks.lockReleaseCosignHeightById(\n this.utxoId,\n );\n if (releaseHeight.isSome) {\n const releaseHeightValue = releaseHeight.unwrap().toNumber();\n const signature = await this.getVaultCosignSignature(client, releaseHeightValue);\n if (signature) {\n return { blockHeight: releaseHeightValue, signature };\n }\n }\n\n if (!waitForSignatureMillis) {\n return undefined;\n }\n\n return await new Promise(async (resolve, reject) => {\n let timeout: NodeJS.Timeout | undefined;\n const unsub = await client.rpc.chain.subscribeNewHeads(header => {\n const atHeight = header.number.toNumber();\n this.getVaultCosignSignature(client, atHeight)\n .then(signature => {\n if (signature) {\n unsub?.();\n clearTimeout(timeout);\n resolve({ signature, blockHeight: atHeight });\n }\n })\n .catch(err => {\n console.error(`Error checking for cosign signature at height ${atHeight}:`, err);\n });\n });\n if (waitForSignatureMillis !== -1) {\n timeout = setTimeout(() => {\n unsub?.();\n reject(new Error(`Timeout waiting for cosign signature for UTXO ID ${this.utxoId}`));\n }, waitForSignatureMillis);\n }\n });\n }\n\n public async getVaultCosignSignature(\n client: ArgonClient,\n atHeight: number,\n ): Promise<Uint8Array | undefined> {\n const blockHash = await BitcoinLock.blockHashAtHeight(client, atHeight);\n if (!blockHash) {\n console.warn(`Block hash not found for height ${atHeight}`);\n return undefined;\n }\n\n const blockEvents = await client.at(blockHash).then(api => api.query.system.events());\n for (const event of blockEvents) {\n if (client.events.bitcoinLocks.BitcoinUtxoCosigned.is(event.event)) {\n const { utxoId: id, signature } = event.event.data;\n if (id.toNumber() === this.utxoId) {\n return new Uint8Array(signature);\n }\n }\n }\n return undefined;\n }\n\n public static async getUtxoIdFromEvents(client: IQueryableClient, events: GenericEvent[]) {\n for (const event of events) {\n if (client.events.bitcoinLocks.BitcoinLockCreated.is(event)) {\n return event.data.utxoId.toNumber();\n }\n }\n return undefined;\n }\n\n public static calculateRedemptionAmountFromSatoshis(\n priceIndex: PriceIndex,\n satoshis: bigint,\n lockedTargetPrice?: bigint,\n ): bigint {\n const btcMicrogonsAtTarget = priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n return this.calculateRedemptionAmount(priceIndex, btcMicrogonsAtTarget, lockedTargetPrice);\n }\n\n public static calculateRedemptionAmount(\n priceIndex: PriceIndex,\n btcMicrogonsAtTarget: bigint,\n maxMicrogonsAtTarget?: bigint,\n ): bigint {\n let price = btcMicrogonsAtTarget;\n if (maxMicrogonsAtTarget !== undefined && maxMicrogonsAtTarget < btcMicrogonsAtTarget) {\n price = maxMicrogonsAtTarget;\n }\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n\n return BigInt(\n new BigNumber(price.toString())\n .times(multiplierBn)\n .integerValue(BigNumber.ROUND_DOWN)\n .toFixed(0),\n );\n }\n\n private static redemptionMultiplierBn(priceIndex: PriceIndex): BigNumber {\n const r = priceIndex.rValue;\n\n if (r.gte(1)) {\n // Case 1: no penalty\n return new BigNumber(1);\n } else if (r.gte(0.9)) {\n // Case 2: quadratic curve\n // Formula: 20r² - 38r + 19\n return new BigNumber(20).times(r.pow(2)).minus(new BigNumber(38).times(r)).plus(19);\n } else if (r.gte(0.01)) {\n // Case 3: rational linear formula\n // Formula: (0.5618r + 0.3944) / r\n return new BigNumber(0.5618).times(r).plus(0.3944).div(r);\n } else {\n // Case 4: extreme deviation\n // Formula: (1 / r) * (0.576r + 0.4)\n return new BigNumber(1).div(r).times(new BigNumber(0.576).times(r).plus(0.4));\n }\n }\n\n public static async getConfig(client: IQueryableClient): Promise<IBitcoinLockConfig> {\n const bitcoinNetwork = await client.query.bitcoinUtxos.bitcoinNetwork();\n return {\n lockReleaseCosignDeadlineFrames:\n client.consts.bitcoinLocks.lockReleaseCosignDeadlineFrames.toNumber(),\n pendingConfirmationExpirationBlocks:\n client.consts.bitcoinUtxos.maxPendingConfirmationBlocks.toNumber(),\n tickDurationMillis: await client.query.ticks\n .genesisTicker()\n .then(x => x.tickDurationMillis.toNumber()),\n bitcoinNetwork,\n lockSatoshiAllowedVariance:\n client.consts.bitcoinUtxos.maximumSatoshiThresholdFromExpected?.toNumber() ?? 10_000,\n };\n }\n\n public static async getBitcoinConfirmedBlockHeight(client: IQueryableClient): Promise<number> {\n return await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.value?.blockHeight.toNumber() ?? 0);\n }\n\n public static async submitVaultSignature(\n args: {\n client: ArgonClient;\n utxoId: number;\n vaultSignature: Uint8Array;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const { utxoId, vaultSignature, txSigner, client } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n const signature = u8aToHex(vaultSignature);\n const tx = client.tx.bitcoinLocks.cosignRelease(utxoId, signature);\n const submitter = new TxSubmitter(client, tx, txSigner);\n\n return await submitter.submit(args);\n }\n\n public static async createIncreaseSecuritizationTx(\n args: {\n utxoId: number;\n client: ArgonClient;\n newSatoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, newSatoshis, utxoId } = args;\n const txBuilder = client.tx.bitcoinLocks.increaseSecuritization;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, newSatoshis);\n }\n\n public static async createFundWithUtxoCandidateTx(\n args: {\n client: ArgonClient;\n utxoId: number;\n utxoRef: UtxoRefLike;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, utxoId, utxoRef } = args;\n const txBuilder = client.tx.bitcoinUtxos?.fundWithUtxoCandidate;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, normalizeUtxoRef(utxoRef));\n }\n\n public static async createOrphanedUtxoReleaseRequestTx(\n args: {\n client: ArgonClient;\n utxoRef: UtxoRefLike;\n releaseRequest: IReleaseRequest;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const {\n client,\n utxoRef,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const txBuilder = client.tx.bitcoinLocks.requestOrphanedUtxoRelease;\n if (!txBuilder?.meta) {\n return undefined;\n }\n\n return txBuilder(normalizeUtxoRef(utxoRef), toScriptPubkey, bitcoinNetworkFee);\n }\n\n public static async createOrphanedUtxoCosignTx(\n args: {\n client: ArgonClient;\n orphanOwner: string;\n utxoRef: UtxoRefLike;\n vaultSignature: Uint8Array;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, orphanOwner, utxoRef, vaultSignature } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n if (!client.tx.bitcoinLocks.cosignOrphanedUtxoRelease?.meta) {\n return undefined;\n }\n const signature = u8aToHex(vaultSignature);\n return client.tx.bitcoinLocks.cosignOrphanedUtxoRelease(\n orphanOwner,\n normalizeUtxoRef(utxoRef),\n signature,\n );\n }\n\n public static async get(\n client: IQueryableClient,\n utxoId: number,\n ): Promise<BitcoinLock | undefined> {\n const utxoRaw = await client.query.bitcoinLocks.locksByUtxoId(utxoId);\n if (!utxoRaw.isSome) {\n return;\n }\n const utxo = utxoRaw.unwrap();\n const p2shBytesPrefix = '0020';\n const wscriptHash = utxo.utxoScriptPubkey.asP2wsh.wscriptHash.toHex().replace('0x', '');\n const p2wshScriptHashHex = `0x${p2shBytesPrefix}${wscriptHash}`;\n const vaultId = utxo.vaultId.toNumber();\n const lockedTargetPrice = getBigIntFallback(utxo.lockedTargetPrice, utxo, [\n 'lockedMarketRate',\n 'peggedPrice',\n ]);\n const liquidityPromised = utxo.liquidityPromised.toBigInt();\n const ownerAccount = utxo.ownerAccount.toHuman();\n const satoshis = utxo.satoshis.toBigInt();\n const utxoSatoshis = utxo.utxoSatoshis?.isSome ? utxo.utxoSatoshis.value.toBigInt() : undefined;\n const vaultPubkey = utxo.vaultPubkey.toHex();\n const vaultClaimPubkey = utxo.vaultClaimPubkey.toHex();\n const ownerPubkey = utxo.ownerPubkey.toHex();\n const [fingerprint, cosign_hd_index, claim_hd_index] = utxo.vaultXpubSources;\n const vaultXpubSources = {\n parentFingerprint: new Uint8Array(fingerprint),\n cosignHdIndex: cosign_hd_index.toNumber(),\n claimHdIndex: claim_hd_index.toNumber(),\n };\n\n const createdAtArgonBlock = utxo.createdAtArgonBlock?.toNumber() ?? 0;\n const securityFees = utxo.securityFees.toBigInt();\n const vaultClaimHeight = utxo.vaultClaimHeight.toNumber();\n const openClaimHeight = utxo.openClaimHeight.toNumber();\n const createdAtHeight = utxo.createdAtHeight.toNumber();\n const isFunded = ((utxo as { isVerified?: bool })?.isVerified ?? utxo.isFunded).toJSON();\n const fundHoldExtensionsByBitcoinExpirationHeight = Object.fromEntries(\n [...utxo.fundHoldExtensions.entries()].map(([x, y]) => [x.toNumber(), y.toBigInt()]),\n );\n return new BitcoinLock({\n utxoId,\n p2wshScriptHashHex,\n vaultId,\n lockedTargetPrice,\n liquidityPromised,\n ownerAccount,\n satoshis,\n utxoSatoshis,\n vaultPubkey,\n vaultClaimPubkey,\n ownerPubkey,\n vaultXpubSources,\n vaultClaimHeight,\n openClaimHeight,\n createdAtHeight,\n securityFees,\n isFunded,\n fundHoldExtensionsByBitcoinExpirationHeight,\n createdAtArgonBlock,\n });\n }\n\n public static async blockHashAtHeight(\n client: ArgonClient,\n atHeight: number,\n ): Promise<string | undefined> {\n for (let i = 0; i < 10; i++) {\n const currentHeight = await client.query.system.number().then(x => x.toNumber());\n if (atHeight > currentHeight) {\n console.warn(\n `Requested block height ${atHeight} is greater than current height ${currentHeight}. Retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n const hash = await client.rpc.chain.getBlockHash(atHeight).then(x => x.toHex());\n if (hash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n console.warn(`Block hash not found for height ${atHeight}. Retrying...`);\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n return hash;\n }\n return undefined;\n }\n\n public static async createInitializeTx(args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n satoshis: bigint;\n txSigner: TxSigningAccount;\n reducedBalanceBy?: bigint;\n microgonsAtTargetPerBtc?: bigint;\n tip?: bigint;\n initializeForAccountId?: string;\n }) {\n const {\n vault,\n priceIndex,\n txSigner,\n satoshis,\n tip = 0n,\n ownerBitcoinPubkey,\n client,\n microgonsAtTargetPerBtc = null,\n initializeForAccountId,\n } = args;\n if (ownerBitcoinPubkey.length !== 33) {\n throw new Error(\n `Invalid Bitcoin key length: ${ownerBitcoinPubkey.length}. Must be a compressed pukey (33 bytes).`,\n );\n }\n\n let tx: SubmittableExtrinsic;\n if (initializeForAccountId) {\n tx = client.tx.bitcoinLocks.initializeFor(\n initializeForAccountId,\n vault.vaultId,\n satoshis,\n ownerBitcoinPubkey,\n {\n V1: {\n microgonsAtTargetPerBtc,\n },\n },\n );\n } else {\n tx = client.tx.bitcoinLocks.initialize(vault.vaultId, satoshis, ownerBitcoinPubkey, {\n V1: {\n microgonsAtTargetPerBtc,\n },\n });\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const targetPrice =\n microgonsAtTargetPerBtc !== null\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n const unlockAmount = this.calculateRedemptionAmount(priceIndex, targetPrice);\n const isVaultOwner = txSigner.address === vault.operatorAccountId;\n const securityFee = isVaultOwner ? 0n : vault.calculateBitcoinFee(unlockAmount);\n\n const { canAfford, availableBalance, txFee } = await submitter.canAfford({\n tip,\n unavailableBalance: securityFee + (args.reducedBalanceBy ?? 0n),\n includeExistentialDeposit: true,\n });\n return {\n tx,\n securityFee,\n txFee,\n canAfford,\n availableBalance,\n txFeePlusTip: txFee + tip,\n };\n }\n\n public static async initialize(\n args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n txSigner: TxSigningAccount;\n satoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n getLock(): Promise<{ lock: BitcoinLock; createdAtHeight: number }>;\n txResult: TxResult;\n securityFee: bigint;\n }> {\n const { txSigner, client } = args;\n\n const { tx, securityFee, canAfford, txFeePlusTip } = await this.createInitializeTx(args);\n if (!canAfford) {\n throw new Error(\n `Insufficient funds to initialize bitcoin lock. Required security fee: ${formatArgons(securityFee)}, Tx fee plus tip: ${formatArgons(txFeePlusTip)}`,\n );\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const txResult = await submitter.submit({ logResults: true, ...args });\n\n return {\n getLock: () => this.getBitcoinLockFromTxResult(client, txResult),\n txResult,\n securityFee,\n };\n }\n\n public static async getBitcoinLockFromTxResult(\n client: IQueryableClient,\n txResult: TxResult,\n ): Promise<{\n lock: BitcoinLock;\n createdAtHeight: number;\n txResult: TxResult;\n }> {\n await txResult.waitForFinalizedBlock;\n const blockHeight = txResult.blockNumber!;\n const utxoId = (await this.getUtxoIdFromEvents(client, txResult.events)) ?? 0;\n if (utxoId === 0) {\n throw new Error('Bitcoin lock creation failed, no UTXO ID found in transaction events');\n }\n const lock = await this.get(client, utxoId);\n if (!lock) {\n throw new Error(`Lock with ID ${utxoId} not found after initialization`);\n }\n return { lock, createdAtHeight: blockHeight, txResult };\n }\n\n public static satoshisRequiredForRedemptionAmount(\n priceIndex: PriceIndex,\n redemptionAmount: bigint,\n ): bigint {\n if (redemptionAmount <= 0n) return 0n;\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n const targetMicrogonsPerBtc = priceIndex.getSatoshiPriceInTargetMicrogons(SATS_PER_BTC);\n let requiredTargetMicrogons = BigInt(\n new BigNumber(redemptionAmount.toString())\n .div(multiplierBn)\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n while (this.calculateRedemptionAmount(priceIndex, requiredTargetMicrogons) < redemptionAmount) {\n requiredTargetMicrogons += 1n;\n }\n\n let satoshis = BigInt(\n new BigNumber(requiredTargetMicrogons.toString())\n .times(SATS_PER_BTC.toString())\n .div(targetMicrogonsPerBtc.toString())\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n // The forward path floors target microgons from sats, then floors the redemption amount.\n // Verify the computed sats satisfy both boundaries, then step down to the minimal sat count.\n while (this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis) < redemptionAmount) {\n satoshis += 1n;\n }\n while (\n satoshis > 0n &&\n this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis - 1n) >= redemptionAmount\n ) {\n satoshis -= 1n;\n }\n\n return satoshis;\n }\n}\n\nexport interface IBitcoinLockConfig {\n lockReleaseCosignDeadlineFrames: number;\n pendingConfirmationExpirationBlocks: number;\n tickDurationMillis: number;\n bitcoinNetwork: ArgonPrimitivesBitcoinBitcoinNetwork;\n lockSatoshiAllowedVariance: number;\n}\nexport interface IReleaseRequest {\n toScriptPubkey: string;\n bitcoinNetworkFee: bigint;\n}\n\nexport interface IReleaseRequestDetails extends IReleaseRequest {\n dueFrame: number;\n vaultId: number;\n redemptionAmount: bigint;\n}\n\nexport interface IBitcoinLock {\n utxoId: number;\n p2wshScriptHashHex: string;\n vaultId: number;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n ownerAccount: string;\n satoshis: bigint;\n utxoSatoshis?: bigint;\n vaultPubkey: string;\n securityFees: bigint;\n vaultClaimPubkey: string;\n ownerPubkey: string;\n vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n vaultClaimHeight: number;\n openClaimHeight: number;\n createdAtHeight: number;\n isFunded: boolean;\n createdAtArgonBlock: number;\n fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n}\n","import type { ArgonClient } from './index';\nimport { FIXED_U128_DECIMALS, fromFixedNumber } from './convert';\nimport { MICROGONS_PER_ARGON } from './utils';\nimport BigNumber from 'bignumber.js';\nimport { ApiDecoration } from '@polkadot/api/types';\n\nconst SATS_PER_BTC = 100_000_000n;\n\nexport class PriceIndex {\n btcUsdPrice?: BigNumber;\n argonotUsdPrice?: BigNumber;\n argonUsdPrice?: BigNumber;\n argonUsdTargetPrice?: BigNumber;\n argonTimeWeightedAverageLiquidity?: BigNumber;\n lastUpdatedTick?: number;\n\n async load(client: ArgonClient | ApiDecoration<'promise'>): Promise<this> {\n const current = await client.query.priceIndex.current();\n if (!current.isSome) {\n this.argonUsdPrice = undefined;\n this.argonotUsdPrice = undefined;\n this.btcUsdPrice = undefined;\n this.argonUsdTargetPrice = undefined;\n this.argonTimeWeightedAverageLiquidity = undefined;\n this.lastUpdatedTick = undefined;\n return this;\n }\n const value = current.unwrap();\n\n this.btcUsdPrice = fromFixedNumber(value.btcUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonotUsdPrice = fromFixedNumber(value.argonotUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdPrice = fromFixedNumber(value.argonUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdTargetPrice = fromFixedNumber(\n value.argonUsdTargetPrice.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.argonTimeWeightedAverageLiquidity = fromFixedNumber(\n value.argonTimeWeightedAverageLiquidity.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.lastUpdatedTick = value.tick.toNumber();\n return this;\n }\n\n getSatoshiPriceInMarketMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents.multipliedBy(MICROGONS_PER_ARGON).dividedBy(this.argonUsdPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n getSatoshiPriceInTargetMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdTargetPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents\n .multipliedBy(MICROGONS_PER_ARGON)\n .dividedBy(this.argonUsdTargetPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n get rValue(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n return this.argonUsdPrice.div(this.argonUsdTargetPrice);\n }\n\n get argonCpi(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n const ratio = this.argonUsdTargetPrice.div(this.argonUsdPrice);\n return ratio.minus(1);\n }\n}\n","import type { Abi, Hex } from 'viem';\nimport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonTokenArtifact as rawArgonTokenArtifact,\n argonotTokenAbi,\n argonotTokenArtifact as rawArgonotTokenArtifact,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayMintingAuthorization as rawHashMintingGatewayMintingAuthorization,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n hashMintingGatewayTransferOutOfArgonRequest as rawHashMintingGatewayTransferOutOfArgonRequest,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n mintingGatewayArtifact as rawMintingGatewayArtifact,\n proxyAdminAbi,\n proxyAdminArtifact as rawProxyAdminArtifact,\n transparentUpgradeableProxyAbi,\n transparentUpgradeableProxyArtifact as rawTransparentUpgradeableProxyArtifact,\n} from '@argonprotocol/ethereum-contracts';\n\nexport type * from '@argonprotocol/ethereum-contracts';\n\nexport type EvmContractArtifact = {\n abi: Abi;\n bytecode: Hex;\n};\n\nexport const argonTokenArtifact = rawArgonTokenArtifact as EvmContractArtifact;\nexport const argonotTokenArtifact = rawArgonotTokenArtifact as EvmContractArtifact;\nexport const mintingGatewayArtifact = rawMintingGatewayArtifact as EvmContractArtifact;\nexport const proxyAdminArtifact = rawProxyAdminArtifact as EvmContractArtifact;\nexport const transparentUpgradeableProxyArtifact =\n rawTransparentUpgradeableProxyArtifact as EvmContractArtifact;\n\nexport type MintingGatewayTransferOutOfArgonRequest = Parameters<\n typeof rawHashMintingGatewayTransferOutOfArgonRequest\n>[0];\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n) {\n return rawHashMintingGatewayTransferOutOfArgonRequest(request);\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n gateway: Parameters<typeof rawHashMintingGatewayMintingAuthorization>[0],\n authorization: Omit<\n Parameters<typeof rawHashMintingGatewayMintingAuthorization>[1],\n 'request'\n > & {\n request: MintingGatewayTransferOutOfArgonRequest;\n },\n) {\n return rawHashMintingGatewayMintingAuthorization(gateway, authorization);\n}\n\nexport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonotTokenAbi,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n proxyAdminAbi,\n transparentUpgradeableProxyAbi,\n};\n","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonToken\",\n \"sourceName\": \"contracts/ArgonToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b506040516200151d3803806200151d833981016040819052620000349162000246565b6040518060400160405280600581526020016420b933b7b760d91b8152506040518060400160405280600481526020016320a923a760e11b815250828280604051806040016040528060018152602001603160f81b815250858581600390816200009f919062000313565b506004620000ae828262000313565b50620000c091508390506005620001cc565b61012052620000d1816006620001cc565b61014052815160208084019190912060e052815190820120610100524660a0526200015e60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018757506001600160a01b0381163b155b15620001b557604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000451915050565b5f602083511015620001eb57620001e38362000204565b9050620001fe565b81620001f8848262000313565b5060ff90505b92915050565b5f80829050601f8151111562000231578260405163305a27a960e01b8152600401620001ac9190620003df565b80516200023e826200042d565b179392505050565b5f6020828403121562000257575f80fd5b81516001600160a01b03811681146200026e575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200029e57607f821691505b602082108103620002bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200030e57805f5260205f20601f840160051c81016020851015620002ea5750805b601f840160051c820191505b818110156200030b575f8155600101620002f6565b50505b505050565b81516001600160401b038111156200032f576200032f62000275565b620003478162000340845462000289565b84620002c3565b602080601f8311600181146200037d575f8415620003655750858301515b5f19600386901b1c1916600185901b178555620003d7565b5f85815260208120601f198616915b82811015620003ad578886015182559484019460019091019084016200038c565b5085821015620003cb57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200040d57858101830151858201604001528201620003ef565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002bd575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bb5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonotToken\",\n \"sourceName\": \"contracts/ArgonotToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b50604051620015213803806200152183398101604081905262000034916200024a565b60405180604001604052806007815260200166105c99dbdb9bdd60ca1b81525060405180604001604052806006815260200165105491d393d560d21b815250828280604051806040016040528060018152602001603160f81b81525085858160039081620000a3919062000317565b506004620000b2828262000317565b50620000c491508390506005620001d0565b61012052620000d5816006620001d0565b61014052815160208084019190912060e052815190820120610100524660a0526200016260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018b57506001600160a01b0381163b155b15620001b957604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000455915050565b5f602083511015620001ef57620001e78362000208565b905062000202565b81620001fc848262000317565b5060ff90505b92915050565b5f80829050601f8151111562000235578260405163305a27a960e01b8152600401620001b09190620003e3565b8051620002428262000431565b179392505050565b5f602082840312156200025b575f80fd5b81516001600160a01b038116811462000272575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002a257607f821691505b602082108103620002c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200031257805f5260205f20601f840160051c81016020851015620002ee5750805b601f840160051c820191505b818110156200030f575f8155600101620002fa565b50505b505050565b81516001600160401b0381111562000333576200033362000279565b6200034b816200034484546200028d565b84620002c7565b602080601f83116001811462000381575f8415620003695750858301515b5f19600386901b1c1916600185901b178555620003db565b5f85815260208120601f198616915b82811015620003b15788860151825594840194600190910190840162000390565b5085821015620003cf57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200041157858101830151858201604001528201620003f3565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c1575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bf5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonotToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"MintingGateway\",\n \"sourceName\": \"contracts/MintingGateway.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"argonTokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"argonotTokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ArrayLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilNotBootstrapped\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilQuorumNotMet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"authorized\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"required\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InsufficientAuthorizedCollateral\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidChainId\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"expected\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"provided\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"InvalidCurrentCouncilSnapshot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidGlobalIssuanceCouncilMember\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidMicrogonCollateralForArgonotPayout\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthority\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"expectedSigner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recoveredSigner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthorityDeactivationSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidQueueNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"expected\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"provided\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidSignatureCount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignatureOrder\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxRate\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"providedRate\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"InvalidTransferOutRate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"InvalidUpdateKind\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LatestGatewayUpdateCannotDeactivate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MigrationAlreadyCompleted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityAlreadyActive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityTransferCapacityExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NotGuardianOrOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RuntimeAmountOverflow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"TransferOutOfArgonAlreadyFinalized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonNotExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"UnsupportedToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAdminSafe\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroGuardian\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroMicrogonsPerArgonot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ZeroRecipient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroSigningKey\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilBootstrapped\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousCouncilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilForceUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilRotated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousGuardian\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newGuardian\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"GuardianUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonTotalAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotTotalAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MigrationCompleted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"coactivationCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"sharedSignatureCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityActivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityDeactivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.MintingAuthorityCollateral[]\",\n \"name\": \"mintingCollateral\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonFinalized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferToArgonStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_TO_ERC20_SCALE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TOKEN_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"locatorIndex\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"activityBlockLocators\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"blockNumber\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"startGatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"endGatewayActivityNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"currentCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"queueNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"enum MintingGateway.GatewayUpdateKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"payload\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"signatures\",\n \"type\": \"bytes[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.GatewayUpdate[]\",\n \"name\": \"updates\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"applyGatewayUpdates\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsHash\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"cancelTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MintingAuthorization[]\",\n \"name\": \"authorizations\",\n \"type\": \"tuple[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonProof\",\n \"name\": \"proof\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"finalizeTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"finalizedTransferOutOfArgonIds\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isFinalized\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"nextCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"nextMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"forceUpdateActiveCouncil\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gatewayActivityNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"globalIssuanceCouncil\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"memberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"epochMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"guardian\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"adminSafe\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilMemberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilTotalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"initialMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"latestActivityBlockLocatorIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maxTransferOutMicrogonsPerArgonot\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonMigration\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonotMigration\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"migrate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"migrationCompleted\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mintingAuthorityCollateralRemaining\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setGuardian\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"startTransferToArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"toTokenAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60c060405234801562000010575f80fd5b506040516200458638038062004586833981016040819052620000339162000128565b6001600160a01b03808316608052811660a0526200005062000058565b50506200015e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a95760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001095780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811462000123575f80fd5b919050565b5f80604083850312156200013a575f80fd5b62000145836200010c565b915062000155602084016200010c565b90509250929050565b60805160a0516143c7620001bf5f395f81816102df015281816112520152818161131401528181611c9f0152611d3101525f818161042901528181610b6001528181610fad0152818161120f01528181611c6e0152611cf401526143c75ff3fe608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"10415\": [\n {\n \"length\": 32,\n \"start\": 1065\n },\n {\n \"length\": 32,\n \"start\": 2912\n },\n {\n \"length\": 32,\n \"start\": 4013\n },\n {\n \"length\": 32,\n \"start\": 4623\n },\n {\n \"length\": 32,\n \"start\": 7278\n },\n {\n \"length\": 32,\n \"start\": 7412\n }\n ],\n \"10418\": [\n {\n \"length\": 32,\n \"start\": 735\n },\n {\n \"length\": 32,\n \"start\": 4690\n },\n {\n \"length\": 32,\n \"start\": 4884\n },\n {\n \"length\": 32,\n \"start\": 7327\n },\n {\n \"length\": 32,\n \"start\": 7473\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/MintingGateway.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ProxyAdmin\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ITransparentUpgradeableProxy\",\n \"name\": \"proxy\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561000f575f80fd5b506040516104fe3803806104fe83398101604081905261002e916100bd565b80806001600160a01b03811661005d57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100668161006e565b5050506100ea565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cd575f80fd5b81516001600160a01b03811681146100e3575f80fd5b9392505050565b610407806100f75f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {},\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"TransparentUpgradeableProxy\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"logic\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"admin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidAdmin\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967ProxyUninitialized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProxyDeniedAdminAccess\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"previousAdmin\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"fallback\"\n }\n ],\n \"bytecode\": \"0x60a0604052604051610d9c380380610d9c8339810160408190526100229161036c565b82828282818051610046576040516330a289cf60e21b815260040160405180910390fd5b61005082826100b1565b50508160405161005f90610330565b6001600160a01b039091168152602001604051809103905ff080158015610088573d5f803e3d5ffd5b506001600160a01b03166080526100a66100a160805190565b61010f565b50505050505061044e565b6100ba8261017c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610103576100fe82826101fa565b505050565b61010b61029b565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61014e5f80516020610d7c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1610179816102bc565b50565b806001600160a01b03163b5f036101b657604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f61020784846102f9565b905080801561022857505f3d118061022857505f846001600160a01b03163b115b1561023d5761023561030c565b915050610295565b801561026757604051639996b31560e01b81526001600160a01b03851660048201526024016101ad565b3d1561027a57610275610325565b610293565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102ba5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102e557604051633173bdd160e11b81525f60048201526024016101ad565b805f80516020610d7c8339815191526101d9565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b6104fc8061088083390190565b80516001600160a01b0381168114610353575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037e575f80fd5b6103878461033d565b9250602061039681860161033d565b60408601519093506001600160401b03808211156103b2575f80fd5b818701915087601f8301126103c5575f80fd5b8151818111156103d7576103d7610358565b604051601f8201601f19908116603f011681019083821181831017156103ff576103ff610358565b816040528281528a86848701011115610416575f80fd5b5f93505b82841015610437578484018601518185018701529285019261041a565b5f8684830101528096505050505050509250925092565b60805161041b6104655f395f6010015261041b5ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212208a952449a6513ce6e7c752fad582ca8ddfcf06eb769c229368d768903cc14def64736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103\",\n \"deployedBytecode\": \"0x608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"1213\": [\n {\n \"length\": 32,\n \"start\": 16\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonotToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonotTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CanonicalMintableBurnableERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const canonicalMintableBurnableErc20Abi = [\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICanonicalToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCanonicalTokenAbi = [\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MintingGateway\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mintingGatewayAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'argonTokenAddress', internalType: 'address', type: 'address' },\n { name: 'argonotTokenAddress', internalType: 'address', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n { type: 'error', inputs: [], name: 'EnforcedPause' },\n { type: 'error', inputs: [], name: 'ExpectedPause' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilNotBootstrapped' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilQuorumNotMet' },\n {\n type: 'error',\n inputs: [\n { name: 'authorized', internalType: 'uint256', type: 'uint256' },\n { name: 'required', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InsufficientAuthorizedCollateral',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidChainId',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'bytes32', type: 'bytes32' },\n { name: 'provided', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'InvalidCurrentCouncilSnapshot',\n },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidGlobalIssuanceCouncilMember',\n },\n { type: 'error', inputs: [], name: 'InvalidInitialization' },\n { type: 'error', inputs: [], name: 'InvalidMicrogonCollateralForArgonotPayout' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'InvalidMintingAuthority',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expectedSigner', internalType: 'address', type: 'address' },\n { name: 'recoveredSigner', internalType: 'address', type: 'address' },\n ],\n name: 'InvalidMintingAuthorityDeactivationSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidQueueNonce',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint256', type: 'uint256' },\n { name: 'provided', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidSignatureCount',\n },\n { type: 'error', inputs: [], name: 'InvalidSignatureOrder' },\n {\n type: 'error',\n inputs: [\n { name: 'maxRate', internalType: 'uint128', type: 'uint128' },\n { name: 'providedRate', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'InvalidTransferOutRate',\n },\n {\n type: 'error',\n inputs: [{ name: 'kind', internalType: 'uint8', type: 'uint8' }],\n name: 'InvalidUpdateKind',\n },\n { type: 'error', inputs: [], name: 'LatestGatewayUpdateCannotDeactivate' },\n { type: 'error', inputs: [], name: 'MigrationAlreadyCompleted' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityAlreadyActive',\n },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityTransferCapacityExceeded',\n },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'NotGuardianOrOwner',\n },\n { type: 'error', inputs: [], name: 'NotInitializing' },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'error',\n inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n name: 'RuntimeAmountOverflow',\n },\n {\n type: 'error',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'TransferOutOfArgonAlreadyFinalized',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonExpired',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonNotExpired',\n },\n {\n type: 'error',\n inputs: [{ name: 'token', internalType: 'address', type: 'address' }],\n name: 'UnsupportedToken',\n },\n { type: 'error', inputs: [], name: 'ZeroAdminSafe' },\n { type: 'error', inputs: [], name: 'ZeroAmount' },\n { type: 'error', inputs: [], name: 'ZeroGuardian' },\n { type: 'error', inputs: [], name: 'ZeroMicrogonsPerArgonot' },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'ZeroRecipient',\n },\n { type: 'error', inputs: [], name: 'ZeroSigningKey' },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true }],\n name: 'GlobalIssuanceCouncilBootstrapped',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousCouncilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n ],\n name: 'GlobalIssuanceCouncilForceUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'GlobalIssuanceCouncilRotated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousGuardian', internalType: 'address', type: 'address', indexed: true },\n { name: 'newGuardian', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'GuardianUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'version', internalType: 'uint64', type: 'uint64', indexed: false }],\n name: 'Initialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'argonRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'MigrationCompleted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'coactivationCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'sharedSignatureCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityActivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityDeactivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Paused',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonCanceled',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'token', internalType: 'address', type: 'address', indexed: false },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n {\n name: 'mintingCollateral',\n internalType: 'struct MintingGateway.MintingAuthorityCollateral[]',\n type: 'tuple[]',\n components: [\n { name: 'signingKey', internalType: 'address', type: 'address' },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonFinalized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'token', internalType: 'address', type: 'address', indexed: true },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferToArgonStarted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Unpaused',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_TO_ERC20_SCALE',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TOKEN_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'locatorIndex', internalType: 'uint64', type: 'uint64' }],\n name: 'activityBlockLocators',\n outputs: [\n { name: 'blockNumber', internalType: 'uint64', type: 'uint64' },\n { name: 'startGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'endGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'currentCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'updates',\n internalType: 'struct MintingGateway.GatewayUpdate[]',\n type: 'tuple[]',\n components: [\n { name: 'queueNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'kind', internalType: 'enum MintingGateway.GatewayUpdateKind', type: 'uint8' },\n { name: 'payload', internalType: 'bytes', type: 'bytes' },\n { name: 'signatures', internalType: 'bytes[]', type: 'bytes[]' },\n ],\n },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'applyGatewayUpdates',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsHash',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n ],\n name: 'cancelTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n {\n name: 'proof',\n internalType: 'struct MintingGateway.TransferOutOfArgonProof',\n type: 'tuple',\n components: [\n {\n name: 'authorizations',\n internalType: 'struct MintingGateway.MintingAuthorization[]',\n type: 'tuple[]',\n components: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'signature', internalType: 'bytes', type: 'bytes' },\n ],\n },\n ],\n },\n ],\n name: 'finalizeTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'finalizedTransferOutOfArgonIds',\n outputs: [{ name: 'isFinalized', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'nextCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n { name: 'nextMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'forceUpdateActiveCouncil',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gatewayActivityNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'globalIssuanceCouncil',\n outputs: [\n { name: 'totalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'memberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'epochMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'guardian',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'adminSafe', internalType: 'address', type: 'address' },\n { name: 'guardianAddress', internalType: 'address', type: 'address' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'councilMemberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilTotalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'initialMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'latestActivityBlockLocatorIndex',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'maxTransferOutMicrogonsPerArgonot',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'argonMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'argonotMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n ],\n name: 'migrate',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'migrationCompleted',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'mintingAuthorityCollateralRemaining',\n outputs: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n { type: 'function', inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n inputs: [],\n name: 'paused',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'guardianAddress', internalType: 'address', type: 'address' }],\n name: 'setGuardian',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'startTransferToArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'amount', internalType: 'uint128', type: 'uint128' }],\n name: 'toTokenAmount',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n { type: 'function', inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ProxyAdmin\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const proxyAdminAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'function',\n inputs: [],\n name: 'UPGRADE_INTERFACE_VERSION',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'proxy', internalType: 'contract ITransparentUpgradeableProxy', type: 'address' },\n { name: 'implementation', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'upgradeAndCall',\n outputs: [],\n stateMutability: 'payable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TransparentUpgradeableProxy\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const transparentUpgradeableProxyAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'logic', internalType: 'address', type: 'address' },\n { name: 'initialOwner', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n stateMutability: 'payable',\n },\n {\n type: 'error',\n inputs: [{ name: 'target', internalType: 'address', type: 'address' }],\n name: 'AddressEmptyCode',\n },\n {\n type: 'error',\n inputs: [{ name: 'admin', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidAdmin',\n },\n {\n type: 'error',\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidImplementation',\n },\n { type: 'error', inputs: [], name: 'ERC1967NonPayable' },\n { type: 'error', inputs: [], name: 'ERC1967ProxyUninitialized' },\n { type: 'error', inputs: [], name: 'FailedCall' },\n { type: 'error', inputs: [], name: 'ProxyDeniedAdminAccess' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousAdmin', internalType: 'address', type: 'address', indexed: false },\n { name: 'newAdmin', internalType: 'address', type: 'address', indexed: false },\n ],\n name: 'AdminChanged',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address', indexed: true }],\n name: 'Upgraded',\n },\n { type: 'fallback', stateMutability: 'payable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// EventMetadataConstants\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport type { Hex } from 'viem';\n\nexport type ArgonTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonTokenEIP712DomainChanged = {};\n\nexport type ArgonTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenEIP712DomainChanged = {};\n\nexport type ArgonotTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20Approval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20EIP712DomainChanged = {};\n\nexport type CanonicalMintableBurnableERC20Transfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilBootstrapped = {\n councilHash: Hex;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilForceUpdated = {\n previousCouncilHash: Hex;\n councilHash: Hex;\n};\n\nexport type MintingGatewayActivityState = {\n gatewayActivityNonce: bigint;\n argonApprovalsNonce: bigint;\n argonCirculation: bigint;\n argonotCirculation: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilRotated = {\n councilHash: Hex;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayGuardianUpdated = {\n previousGuardian: Hex;\n newGuardian: Hex;\n};\n\nexport type MintingGatewayInitialized = {\n version: bigint;\n};\n\nexport type MintingGatewayMigrationCompleted = {\n argonRecipientCount: bigint;\n argonTotalAmount: bigint;\n argonotRecipientCount: bigint;\n argonotTotalAmount: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n coactivationCount: bigint;\n sharedSignatureCount: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type MintingGatewayPaused = {\n account: Hex;\n};\n\nexport type MintingGatewayTransferOutOfArgonCanceled = {\n transferId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityCollateral = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n};\n\nexport type MintingGatewayTransferOutOfArgonFinalized = {\n transferId: Hex;\n token: Hex;\n amount: bigint;\n mintingCollateral: readonly MintingGatewayMintingAuthorityCollateral[];\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayTransferToArgonStarted = {\n from: Hex;\n token: Hex;\n amount: bigint;\n argonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayUnpaused = {\n account: Hex;\n};\n\nexport type ProxyAdminOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type TransparentUpgradeableProxyAdminChanged = {\n previousAdmin: Hex;\n newAdmin: Hex;\n};\n\nexport type TransparentUpgradeableProxyUpgraded = {\n implementation: Hex;\n};\n\nexport const ArgonTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ArgonotTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const CanonicalMintableBurnableERC20Events = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ICanonicalTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const MintingGatewayEvents = {\n GlobalIssuanceCouncilBootstrapped: {\n name: 'GlobalIssuanceCouncilBootstrapped',\n topic: '0xac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1',\n },\n GlobalIssuanceCouncilForceUpdated: {\n name: 'GlobalIssuanceCouncilForceUpdated',\n topic: '0x33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d9153',\n },\n GlobalIssuanceCouncilRotated: {\n name: 'GlobalIssuanceCouncilRotated',\n topic: '0xb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded963',\n },\n GuardianUpdated: {\n name: 'GuardianUpdated',\n topic: '0x064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad909',\n },\n Initialized: {\n name: 'Initialized',\n topic: '0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2',\n },\n MigrationCompleted: {\n name: 'MigrationCompleted',\n topic: '0xc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d0645',\n },\n MintingAuthorityActivated: {\n name: 'MintingAuthorityActivated',\n topic: '0xc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d',\n },\n MintingAuthorityDeactivated: {\n name: 'MintingAuthorityDeactivated',\n topic: '0xf92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd',\n },\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n Paused: {\n name: 'Paused',\n topic: '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258',\n },\n TransferOutOfArgonCanceled: {\n name: 'TransferOutOfArgonCanceled',\n topic: '0x3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e452',\n },\n TransferOutOfArgonFinalized: {\n name: 'TransferOutOfArgonFinalized',\n topic: '0x64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d06',\n },\n TransferToArgonStarted: {\n name: 'TransferToArgonStarted',\n topic: '0x3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d93',\n },\n Unpaused: {\n name: 'Unpaused',\n topic: '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa',\n },\n} as const;\n\nexport const ProxyAdminEvents = {\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n} as const;\n\nexport const TransparentUpgradeableProxyEvents = {\n AdminChanged: {\n name: 'AdminChanged',\n topic: '0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f',\n },\n Upgraded: {\n name: 'Upgraded',\n topic: '0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b',\n },\n} as const;\n","import type { Address, ContractFunctionArgs, Hex } from 'viem';\nimport { encodeAbiParameters, keccak256, stringToHex } from 'viem';\nimport { mintingGatewayAbi } from './generated.js';\n\nexport const MINTING_GATEWAY_UPDATE_KINDS = {\n globalIssuanceCouncilRotate: 0,\n mintingAuthorityActivate: 1,\n mintingAuthorityDeactivate: 2,\n} as const;\n\nexport type MintingGatewayHashContext = {\n chainId: bigint;\n gatewayAddress: Address;\n};\n\ntype ApplyGatewayUpdatesArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'applyGatewayUpdates'\n>;\ntype FinalizeTransferOutOfArgonArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'finalizeTransferOutOfArgon'\n>;\ntype MigrateArgs = ContractFunctionArgs<typeof mintingGatewayAbi, 'nonpayable', 'migrate'>;\nexport type MintingGatewayCouncilSnapshot = ApplyGatewayUpdatesArgs[0];\nexport type MintingGatewayGatewayUpdate = ApplyGatewayUpdatesArgs[1][number];\nexport type MintingGatewayTransferOutOfArgonRequest = FinalizeTransferOutOfArgonArgs[0];\nexport type MintingGatewayTransferOutOfArgonProof = FinalizeTransferOutOfArgonArgs[1];\nexport type MintingGatewayMintingAuthorization =\n MintingGatewayTransferOutOfArgonProof['authorizations'][number];\nexport type MintingGatewayMigrationAssetDistribution = MigrateArgs[0];\nexport type MintingGatewayGlobalIssuanceCouncilRotateTarget = {\n council: MintingGatewayCouncilSnapshot;\n epochMicrogonsPerArgonot: bigint;\n};\nexport type MintingGatewayGlobalIssuanceCouncilHashArgs = MintingGatewayCouncilSnapshot & {\n epochMicrogonsPerArgonot: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivationTarget = {\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n signingKey: Address;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivateTarget = {\n signingKey: Address;\n};\n\ntype ActivateMintingAuthorityApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayMintingAuthorityActivationTarget;\n};\n\ntype RotateGlobalIssuanceCouncilApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget;\n};\n\ntype MintingAuthorizationHashArgs = {\n request: MintingGatewayTransferOutOfArgonRequest;\n microgonCollateral: MintingGatewayMintingAuthorization['microgonCollateral'];\n micronotCollateral: MintingGatewayMintingAuthorization['micronotCollateral'];\n};\n\ntype MintingAuthorityDeactivationHashArgs = {\n queueNonce: bigint;\n target: MintingGatewayMintingAuthorityDeactivateTarget;\n previousUpdateHash: Hex;\n};\n\ntype GatewayUpdateApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n kind: (typeof MINTING_GATEWAY_UPDATE_KINDS)[keyof typeof MINTING_GATEWAY_UPDATE_KINDS];\n targetId: Hex;\n targetPayloadHash: Hex;\n previousUpdateHash: Hex;\n};\n\nconst COUNCIL_SNAPSHOT_PARAMETERS = [\n { name: 'signers', type: 'address[]' },\n { name: 'weights', type: 'uint256[]' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n {\n name: 'council',\n type: 'tuple',\n components: COUNCIL_SNAPSHOT_PARAMETERS,\n },\n { name: 'epochMicrogonsPerArgonot', type: 'uint128' },\n ],\n },\n] as const;\n\nconst ACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n { name: 'microgonCollateral', type: 'uint128' },\n { name: 'micronotCollateral', type: 'uint128' },\n { name: 'signingKey', type: 'address' },\n ],\n },\n] as const;\n\nconst DEACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [{ name: 'signingKey', type: 'address' }],\n },\n] as const;\n\nconst GATEWAY_UPDATE_APPROVAL_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'bytes32' },\n { type: 'uint8' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n] as const;\n\nconst MINTING_AUTHORITY_HASH_PARAMETERS = [\n { type: 'uint128' },\n { type: 'uint128' },\n { type: 'address' },\n] as const;\n\nconst MINTING_AUTHORITY_ACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORITY_DEACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nfunction signingKeyTargetId(signingKey: Address): Hex {\n return `0x${signingKey.slice(2).padStart(64, '0').toLowerCase()}`;\n}\n\nconst TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint64' },\n { type: 'uint64' },\n { type: 'uint128' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORIZATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG = keccak256(\n stringToHex('ARGON_GLOBAL_ISSUANCE_COUNCIL_ROTATION'),\n);\nconst MINTING_AUTHORITY_ACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_ACTIVATION'),\n);\nconst MINTING_AUTHORITY_DEACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_DEACTIVATION'),\n);\nconst GATEWAY_UPDATE_APPROVAL_TAG = keccak256(stringToHex('ARGON_GATEWAY_UPDATE_APPROVAL'));\nconst TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG = keccak256(\n stringToHex('ARGON_TRANSFER_OUT_OF_ARGON_AUTHORIZATION'),\n);\n\nexport function encodeMintingGatewayCouncilSnapshot(snapshot: MintingGatewayCouncilSnapshot): Hex {\n return encodeAbiParameters(\n [{ type: 'tuple', components: COUNCIL_SNAPSHOT_PARAMETERS }],\n [snapshot],\n );\n}\n\nexport function encodeMintingGatewayGlobalIssuanceCouncilRotateTarget(\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityActivationTarget(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return encodeAbiParameters(ACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityDeactivateTarget(\n target: MintingGatewayMintingAuthorityDeactivateTarget,\n): Hex {\n return encodeAbiParameters(DEACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function hashMintingGatewayGlobalIssuanceCouncil(\n council: MintingGatewayGlobalIssuanceCouncilHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(\n [{ type: 'address[]' }, { type: 'uint256[]' }, { type: 'uint128' }],\n [council.signers, council.weights, council.epochMicrogonsPerArgonot],\n ),\n );\n}\n\nexport function hashMintingGatewayMintingAuthority(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_HASH_PARAMETERS, [\n target.microgonCollateral,\n target.micronotCollateral,\n target.signingKey,\n ]),\n );\n}\n\nexport function hashMintingGatewayActivateMintingAuthorityApproval(\n context: MintingGatewayHashContext,\n args: ActivateMintingAuthorityApprovalArgs,\n): Hex {\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.mintingAuthorityActivate,\n targetId: signingKeyTargetId(args.target.signingKey),\n targetPayloadHash: hashMintingGatewayActivateMintingAuthority(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncilApproval(\n context: MintingGatewayHashContext,\n args: RotateGlobalIssuanceCouncilApprovalArgs,\n): Hex {\n const nextCouncilHash = hashMintingGatewayGlobalIssuanceCouncil({\n ...args.target.council,\n epochMicrogonsPerArgonot: args.target.epochMicrogonsPerArgonot,\n });\n\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.globalIssuanceCouncilRotate,\n targetId: nextCouncilHash,\n targetPayloadHash: hashMintingGatewayRotateGlobalIssuanceCouncil(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayActivateMintingAuthority(\n context: MintingGatewayHashContext,\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_ACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_ACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayMintingAuthority(target),\n ]),\n );\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncil(\n context: MintingGatewayHashContext,\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS, [\n GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayGlobalIssuanceCouncil({\n ...target.council,\n epochMicrogonsPerArgonot: target.epochMicrogonsPerArgonot,\n }),\n target.epochMicrogonsPerArgonot,\n ]),\n );\n}\n\nexport function hashMintingGatewayGatewayUpdateApproval(\n context: MintingGatewayHashContext,\n args: GatewayUpdateApprovalArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(GATEWAY_UPDATE_APPROVAL_PARAMETERS, [\n GATEWAY_UPDATE_APPROVAL_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.approvingCouncilHash,\n args.kind,\n args.targetId,\n args.targetPayloadHash,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorityDeactivation(\n context: MintingGatewayHashContext,\n args: MintingAuthorityDeactivationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_DEACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_DEACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.target.signingKey,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n): Hex {\n return keccak256(\n encodeAbiParameters(TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS, [\n request.argonAccountId,\n request.argonTransferNonce,\n request.chainId,\n request.microgonsPerArgonot,\n request.recipient,\n request.validUntilBlock,\n request.token,\n request.amount,\n request.mintingAuthorityTip,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n context: MintingGatewayHashContext,\n args: MintingAuthorizationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORIZATION_PARAMETERS, [\n TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayTransferOutOfArgonRequest(args.request),\n args.microgonCollateral,\n args.micronotCollateral,\n ]),\n );\n}\n","import argonTokenArtifact from './artifacts/contracts/ArgonToken.sol/ArgonToken.json' with { type: 'json' };\nimport argonotTokenArtifact from './artifacts/contracts/ArgonotToken.sol/ArgonotToken.json' with { type: 'json' };\nimport mintingGatewayArtifact from './artifacts/contracts/MintingGateway.sol/MintingGateway.json' with { type: 'json' };\nimport proxyAdminArtifact from './artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json' with { type: 'json' };\nimport transparentUpgradeableProxyArtifact from './artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json' with { type: 'json' };\n\nexport const MINTING_GATEWAY_RUNTIME_DECIMALS = 6;\nexport const MINTING_GATEWAY_TOKEN_DECIMALS = 18;\nexport const MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE =\n 10n ** BigInt(MINTING_GATEWAY_TOKEN_DECIMALS - MINTING_GATEWAY_RUNTIME_DECIMALS);\n\nexport type MintingGatewayActivityBlockLocator = {\n blockNumber: bigint;\n startGatewayActivityNonce: bigint;\n endGatewayActivityNonce: bigint;\n};\n\nexport * from './generated.js';\nexport * from './hashing.js';\n\nexport {\n argonTokenArtifact,\n argonotTokenArtifact,\n mintingGatewayArtifact,\n proxyAdminArtifact,\n transparentUpgradeableProxyArtifact,\n};\n","import { BlockHeader, createBlockHeaderFromRPC, type JSONRPCBlock } from '@ethereumjs/block';\nimport { createMerkleProof, createMPT, verifyMPTWithMerkleProof } from '@ethereumjs/mpt';\nimport type { IArgonQueryable } from './index';\nimport { bytesToHex, type Hex, hexToBytes, toHex, toRlp } from 'viem';\nimport {\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n type EthereumReceipt,\n getExecutionClient,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\ntype EthGetBlockByHashRpc = {\n Method: 'eth_getBlockByHash';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\ntype EthGetBlockByNumberRpc = {\n Method: 'eth_getBlockByNumber';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\n\nexport type ArgonFinalizedExecutionHeader = {\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nexport class ArgonFinalizedExecutionHeaderPathError extends Error {}\n\nexport type EthereumEventLocator = {\n txHash: Hex;\n logIndexes?: number[];\n receipt?: EthereumReceipt;\n};\n\nexport type EthereumEventLocatorBlock = EthereumEventLocator[];\n\nexport type EthereumEventLog = Pick<EthereumReceipt['logs'][number], 'address' | 'data'> & {\n topics: Hex[];\n};\n\ntype LoadedEthereumEventLocator = {\n receipt: EthereumReceipt;\n requestedLogIndexes: number[];\n};\n\nexport type EthereumEventProof = {\n executionBlockProof: {\n anchorBlockHash: Hex;\n targetToAnchorHeaderChain: { rlp: Hex }[];\n };\n blocks: {\n targetBlockNumber: number;\n receiptLogs: {\n transactionIndex: number;\n eventLog: EthereumEventLog;\n }[];\n receiptProof: {\n nodes: Hex[];\n receipts: {\n transactionIndex: number;\n nodeIndexes: number[];\n }[];\n };\n }[];\n};\n\ntype EthereumEventProofBlock = EthereumEventProof['blocks'][number];\ntype EthereumReceiptProof = EthereumEventProofBlock['receiptProof'];\ntype EthereumReceiptLog = EthereumEventProofBlock['receiptLogs'][number];\ntype EthereumCombinedReceiptProofReceipt = EthereumReceiptProof['receipts'][number];\n\nexport function encodeReceiptTrieKey(transactionIndex: number): Uint8Array {\n return transactionIndex === 0 ? Uint8Array.from([0x80]) : toRlp(toHex(transactionIndex), 'bytes');\n}\n\nexport function encodeEthereumReceiptForProof(receipt: EthereumReceipt): Uint8Array {\n const payload = toRlp(\n [\n receipt.root ?? (receipt.status === 'success' ? '0x1' : '0x0'),\n toHex(receipt.cumulativeGasUsed),\n receipt.logsBloom,\n receipt.logs.map(log => [log.address, [...log.topics], log.data]),\n ],\n 'bytes',\n );\n\n switch (receipt.type) {\n case 'legacy':\n return payload;\n case 'eip2930':\n return Uint8Array.from([...hexToBytes('0x01'), ...payload]);\n case 'eip1559':\n return Uint8Array.from([...hexToBytes('0x02'), ...payload]);\n case 'eip4844':\n return Uint8Array.from([...hexToBytes('0x03'), ...payload]);\n case 'eip7702':\n return Uint8Array.from([...hexToBytes('0x04'), ...payload]);\n default:\n throw new Error(`Unsupported Ethereum receipt type ${String(receipt.type)}`);\n }\n}\n\nexport async function buildEthereumEventProof(\n executionSource: EthereumExecutionSource,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n locatorBlocks: EthereumEventLocatorBlock[],\n): Promise<EthereumEventProof> {\n if (locatorBlocks.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n const executionClient = getExecutionClient(executionSource);\n const blocksWithHeaders = await Promise.all(\n locatorBlocks.map(async (locatorBlock, index) => {\n if (locatorBlock.length === 0) {\n throw new Error(`Ethereum event locator block ${index} is empty`);\n }\n\n const loadedLocators = await loadEthereumEventLocators(executionClient, locatorBlock);\n const firstLocator = loadedLocators[0];\n const blockHash = firstLocator.receipt.blockHash;\n\n for (const locator of loadedLocators.slice(1)) {\n if (locator.receipt.blockHash.toLowerCase() !== blockHash.toLowerCase()) {\n throw new Error(`Ethereum event locator block ${index} spans multiple execution blocks`);\n }\n }\n\n const targetHeader = await loadExecutionHeader(executionClient, blockHash);\n if (argonFinalizedExecutionHeader.blockNumber < targetHeader.number) {\n throw new Error(\n `Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash} is behind target block ${blockHash}; wait for relayer sync`,\n );\n }\n return {\n blockHash,\n locators: loadedLocators,\n targetHeader,\n };\n }),\n );\n\n if (blocksWithHeaders.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n blocksWithHeaders.sort((a, b) => Number(a.targetHeader.number - b.targetHeader.number));\n const furthestTargetBlock = blocksWithHeaders[0];\n\n const targetToArgonFinalizedHeaderChain = await buildExecutionHeaderChain(\n executionClient,\n furthestTargetBlock.targetHeader,\n argonFinalizedExecutionHeader,\n );\n\n const blocks: EthereumEventProof['blocks'] = [];\n for (const { blockHash, locators, targetHeader } of blocksWithHeaders) {\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n } else {\n const sharedTargetHeaderOnArgonFinalizedChain =\n targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - furthestTargetBlock.targetHeader.number)\n ];\n if (\n !sharedTargetHeaderOnArgonFinalizedChain ||\n sharedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !== blockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n }\n\n const receiptLogs: EthereumReceiptLog[] = [];\n const transactionIndexes: number[] = [];\n const seenTransactionIndexes = new Set<number>();\n\n for (const { receipt, requestedLogIndexes } of locators) {\n if (!seenTransactionIndexes.has(receipt.transactionIndex)) {\n seenTransactionIndexes.add(receipt.transactionIndex);\n transactionIndexes.push(receipt.transactionIndex);\n }\n\n for (const index of requestedLogIndexes) {\n const log = receipt.logs[index];\n if (!log) {\n throw new Error(`Missing log ${index} in receipt ${receipt.transactionHash}`);\n }\n\n receiptLogs.push({\n transactionIndex: receipt.transactionIndex,\n eventLog: {\n address: log.address,\n topics: [...log.topics],\n data: log.data,\n },\n });\n }\n }\n\n const receiptProof = await buildCombinedReceiptProof(\n executionClient,\n blockHash,\n transactionIndexes,\n bytesToHex(targetHeader.receiptTrie),\n );\n\n blocks.push({\n targetBlockNumber: Number(targetHeader.number),\n receiptProof,\n receiptLogs,\n });\n }\n\n return {\n executionBlockProof: {\n anchorBlockHash: argonFinalizedExecutionHeader.blockHash,\n targetToAnchorHeaderChain: targetToArgonFinalizedHeaderChain.map(({ rlp }) => ({ rlp })),\n },\n blocks,\n };\n}\n\nexport async function getLatestArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n): Promise<ArgonFinalizedExecutionHeader> {\n const verifierQuery = client.query.ethereumVerifier;\n const latestArgonFinalizedExecutionHeaderHash =\n await verifierQuery.latestExecutionHeaderAnchorBlockHash();\n\n if (latestArgonFinalizedExecutionHeaderHash.isNone) {\n throw new Error('No Argon finalized execution header is available yet; wait for relayer sync');\n }\n\n const blockHash = latestArgonFinalizedExecutionHeaderHash.unwrap().toHex();\n const argonFinalizedExecutionHeaderEntry = await verifierQuery.executionHeaderAnchors(blockHash);\n\n if (argonFinalizedExecutionHeaderEntry.isNone) {\n throw new Error(`Argon finalized execution header ${blockHash} is missing`);\n }\n\n return {\n blockHash,\n blockNumber: argonFinalizedExecutionHeaderEntry.unwrap().blockNumber.toBigInt(),\n };\n}\n\nexport async function waitForArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n targetBlockNumber: bigint,\n options: { pollMs?: number; timeoutMs?: number } = {},\n): Promise<ArgonFinalizedExecutionHeader> {\n const pollMs = options.pollMs ?? 3_000;\n const timeoutMs = options.timeoutMs ?? 5 * 60_000;\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < timeoutMs) {\n try {\n const argonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n if (argonFinalizedExecutionHeader.blockNumber >= targetBlockNumber) {\n return argonFinalizedExecutionHeader;\n }\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollMs));\n }\n\n throw (\n lastError ??\n new Error(\n `Argon finalized execution header did not reach block ${targetBlockNumber} within ${Math.floor(timeoutMs / 1000)}s`,\n )\n );\n}\n\nasync function loadEthereumEventLocators(\n executionClient: EthereumExecutionClient,\n locators: EthereumEventLocator[],\n) {\n return await retryWhileExecutionRpcIndexing(() => {\n return Promise.all(\n locators.map(async ({ txHash, logIndexes, receipt }) => {\n receipt ??= await executionClient.getTransactionReceipt({ hash: txHash });\n const requestedLogIndexes = logIndexes ?? [0];\n if (requestedLogIndexes.length === 0) {\n throw new Error(`At least one log index is required for receipt ${txHash}`);\n }\n\n return {\n receipt,\n requestedLogIndexes,\n } satisfies LoadedEthereumEventLocator;\n }),\n );\n });\n}\n\nexport async function loadExecutionHeader(\n executionClient: EthereumExecutionClient,\n blockTag: Hex | bigint,\n) {\n const blockData = await retryWhileExecutionRpcIndexing(() =>\n typeof blockTag === 'string'\n ? executionClient.request<EthGetBlockByHashRpc>({\n method: 'eth_getBlockByHash',\n params: [blockTag, true],\n })\n : executionClient.request<EthGetBlockByNumberRpc>({\n method: 'eth_getBlockByNumber',\n params: [toHex(blockTag), true],\n }),\n );\n const header = createBlockHeaderFromRPC(blockData);\n\n if (\n typeof blockTag === 'string' &&\n bytesToHex(header.hash()).toLowerCase() !== blockTag.toLowerCase()\n ) {\n throw new Error(`Execution header hash mismatch for block ${blockTag}`);\n }\n\n return header;\n}\n\nexport async function buildExecutionHeaderChain(\n executionClient: EthereumExecutionClient,\n targetHeader: BlockHeader,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n): Promise<{ blockHash: Hex; rlp: Hex }[]> {\n const targetBlockHash = bytesToHex(targetHeader.hash());\n\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (targetBlockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return [];\n }\n\n const headers: { blockHash: Hex; rlp: Hex }[] = [];\n let header = await loadExecutionHeader(executionClient, argonFinalizedExecutionHeader.blockHash);\n\n if (header.number !== argonFinalizedExecutionHeader.blockNumber) {\n throw new Error(\n `Execution header ${argonFinalizedExecutionHeader.blockHash} is not block ${argonFinalizedExecutionHeader.blockNumber}`,\n );\n }\n\n while (header.number > targetHeader.number) {\n header = await loadExecutionHeader(executionClient, bytesToHex(header.parentHash));\n headers.push({\n blockHash: bytesToHex(header.hash()),\n rlp: bytesToHex(header.serialize()),\n });\n }\n\n if (\n header.number !== targetHeader.number ||\n bytesToHex(header.hash()).toLowerCase() !== targetBlockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return headers.reverse();\n}\n\nasync function buildCombinedReceiptProof(\n executionClient: EthereumExecutionClient,\n blockHash: Hex,\n transactionIndexes: number[],\n receiptsRoot: Hex,\n): Promise<EthereumReceiptProof> {\n const { receipts } = await retryWhileExecutionRpcIndexing(async () => {\n const block = await executionClient.getBlock({ blockHash });\n const receipts = await Promise.all(\n block.transactions.map(hash => executionClient.getTransactionReceipt({ hash })),\n );\n\n return { receipts };\n });\n\n const trie = await createMPT();\n\n for (const receipt of receipts) {\n await trie.put(\n encodeReceiptTrieKey(receipt.transactionIndex),\n encodeEthereumReceiptForProof(receipt),\n );\n }\n\n if (bytesToHex(trie.root()).toLowerCase() !== receiptsRoot.toLowerCase()) {\n throw new Error(`Receipt trie root mismatch for block ${blockHash}`);\n }\n\n const nodeIndexesByHex = new Map<Hex, number>();\n const sharedNodes: Hex[] = [];\n const proofReceipts = await Promise.all(\n transactionIndexes.map(async transactionIndex => {\n const key = encodeReceiptTrieKey(transactionIndex);\n const proof = await createMerkleProof(trie, key);\n const verifiedReceipt = await verifyMPTWithMerkleProof(trie, trie.root(), key, proof);\n\n if (!verifiedReceipt) {\n throw new Error(\n `Receipt proof verification failed for transaction index ${transactionIndex}`,\n );\n }\n\n return {\n transactionIndex,\n nodeIndexes: proof.map(node => {\n const hexNode = bytesToHex(node);\n const existingIndex = nodeIndexesByHex.get(hexNode);\n if (existingIndex !== undefined) {\n return existingIndex;\n }\n\n const nextIndex = sharedNodes.length;\n sharedNodes.push(hexNode);\n nodeIndexesByHex.set(hexNode, nextIndex);\n return nextIndex;\n }),\n } satisfies EthereumCombinedReceiptProofReceipt;\n }),\n );\n\n return {\n nodes: sharedNodes,\n receipts: proofReceipts,\n };\n}\n","import { createPublicClient, http } from 'viem';\n\nexport type EthereumReceipt = Awaited<\n ReturnType<ReturnType<typeof createPublicClient>['getTransactionReceipt']>\n>;\nexport type EthereumExecutionClient = ReturnType<typeof createPublicClient>;\n\nexport type EthereumExecutionSource = {\n executionRpcUrl?: string;\n executionClient?: EthereumExecutionClient;\n};\n\nconst executionClientsByUrl = new Map<string, EthereumExecutionClient>();\n\nexport function getExecutionClient(source: EthereumExecutionSource): EthereumExecutionClient {\n if (source.executionClient) {\n return source.executionClient;\n }\n if (source.executionRpcUrl) {\n const cached = executionClientsByUrl.get(source.executionRpcUrl);\n if (cached) {\n return cached;\n }\n\n const client = createPublicClient({ transport: http(source.executionRpcUrl) });\n executionClientsByUrl.set(source.executionRpcUrl, client);\n return client;\n }\n\n throw new Error('Ethereum event proof requires an execution client or execution RPC URL');\n}\n\nfunction getExecutionRpcErrorText(error: unknown): string {\n if (error instanceof Error) {\n return [\n error.message,\n 'details' in error && typeof error.details === 'string' ? error.details : undefined,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n return String(error);\n}\n\n// Dev/test execution RPCs can expose a fresh block before their receipt/log indexes catch up.\n// When that happens, recent reads may fail transiently with \"indexing is in progress\".\nexport async function retryWhileExecutionRpcIndexing<TResult>(\n request: () => Promise<TResult>,\n): Promise<TResult> {\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < 30_000) {\n try {\n return await request();\n } catch (error) {\n const errorText = getExecutionRpcErrorText(error);\n if (!errorText.includes('indexing is in progress')) {\n throw error;\n }\n\n lastError = error instanceof Error ? error : new Error(errorText);\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n throw lastError ?? new Error('Timed out waiting for execution RPC indexing');\n}\n","import {\n mintingGatewayAbi,\n MintingGatewayEvents,\n type MintingGatewayGlobalIssuanceCouncilRotated,\n type MintingGatewayMintingAuthorityActivated,\n type MintingGatewayMintingAuthorityDeactivated,\n type MintingGatewayTransferOutOfArgonCanceled,\n type MintingGatewayTransferOutOfArgonFinalized,\n type MintingGatewayTransferToArgonStarted,\n} from './EvmContracts';\nimport { decodeEventLog, getAddress, type Hex } from 'viem';\nimport type { EthereumEventLog } from './EthereumProof';\n\ntype DecodedEthereumGatewayActivity =\n | ({\n kind: typeof MintingGatewayEvents.GlobalIssuanceCouncilRotated.name;\n } & MintingGatewayGlobalIssuanceCouncilRotated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityActivated.name;\n } & MintingGatewayMintingAuthorityActivated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityDeactivated.name;\n } & MintingGatewayMintingAuthorityDeactivated)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonCanceled.name;\n } & MintingGatewayTransferOutOfArgonCanceled)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonFinalized.name;\n } & MintingGatewayTransferOutOfArgonFinalized)\n | ({\n kind: typeof MintingGatewayEvents.TransferToArgonStarted.name;\n } & MintingGatewayTransferToArgonStarted);\n\nexport type EthereumGatewayActivity = DecodedEthereumGatewayActivity & {\n txHash: Hex;\n transactionIndex: number;\n logIndex: number;\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nconst gatewayActivityEvents = [\n MintingGatewayEvents.GlobalIssuanceCouncilRotated,\n MintingGatewayEvents.MintingAuthorityActivated,\n MintingGatewayEvents.MintingAuthorityDeactivated,\n MintingGatewayEvents.TransferOutOfArgonCanceled,\n MintingGatewayEvents.TransferOutOfArgonFinalized,\n MintingGatewayEvents.TransferToArgonStarted,\n] as const;\n\nexport function findEthereumTransferToArgonStartedLogIndexes(\n receipt: { transactionHash: Hex; logs: { address: Hex; topics: Hex[] }[] },\n gatewayAddress: Hex,\n): number[] {\n const normalizedGatewayAddress = getAddress(gatewayAddress).toLowerCase();\n const indexes = receipt.logs.flatMap((log, index) =>\n log.address.toLowerCase() === normalizedGatewayAddress &&\n log.topics[0]?.toLowerCase() === MintingGatewayEvents.TransferToArgonStarted.topic\n ? [index]\n : [],\n );\n\n if (indexes.length === 0) {\n throw new Error(\n `Ethereum receipt ${receipt.transactionHash} did not emit TransferToArgonStarted from gateway ${gatewayAddress}`,\n );\n }\n\n return indexes;\n}\n\nexport function decodeEthereumTransferToArgonStartedLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): MintingGatewayTransferToArgonStarted {\n const decoded = decodeEthereumGatewayActivityLog(log);\n if (decoded.kind !== MintingGatewayEvents.TransferToArgonStarted.name) {\n throw new Error(\n `Expected ${MintingGatewayEvents.TransferToArgonStarted.name} gateway activity log`,\n );\n }\n\n const { kind: _kind, ...transfer } = decoded;\n return transfer;\n}\n\nexport function decodeEthereumGatewayActivityLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): DecodedEthereumGatewayActivity {\n const topic = log.topics[0]?.toLowerCase();\n if (!topic) {\n throw new Error('Gateway activity log is missing an event signature topic');\n }\n\n const event = gatewayActivityEvents.find(candidate => candidate.topic === topic);\n if (!event) {\n throw new Error(`Unsupported gateway activity event topic ${topic}`);\n }\n\n const { args } = decodeEventLog({\n abi: mintingGatewayAbi,\n eventName: event.name,\n topics: log.topics as [Hex, ...Hex[]],\n data: log.data,\n strict: true,\n });\n\n return {\n kind: event.name,\n ...args,\n } as DecodedEthereumGatewayActivity;\n}\n","import { mintingGatewayAbi, type MintingGatewayActivityBlockLocator } from './EvmContracts';\nimport type { ArgonClient, IArgonQueryable } from './index';\nimport { getAddress, type Hex, toHex } from 'viem';\nimport {\n decodeEthereumGatewayActivityLog,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nimport {\n ArgonFinalizedExecutionHeaderPathError,\n buildExecutionHeaderChain,\n buildEthereumEventProof,\n type ArgonFinalizedExecutionHeader,\n type EthereumEventLocator,\n type EthereumEventLocatorBlock,\n type EthereumEventProof,\n getLatestArgonFinalizedExecutionHeader,\n loadExecutionHeader,\n} from './EthereumProof';\nimport {\n getExecutionClient,\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\nexport type EthereumGatewayActivityProofPayload = {\n previousGatewayActivityNonce: bigint;\n proof: EthereumEventProof;\n gatewayActivityNonceRange: {\n start: bigint;\n end: bigint;\n };\n executionBlockNumberRange: {\n start: bigint;\n end: bigint;\n };\n activities: EthereumGatewayActivity[];\n};\n\ntype DiscoveredGatewayActivities = Pick<\n EthereumGatewayActivityProofPayload,\n 'previousGatewayActivityNonce' | 'activities'\n>;\n\ntype GatewayActivityProofChunk = {\n activities: EthereumGatewayActivity[];\n locatorBlock: EthereumEventLocatorBlock;\n};\n\ntype GatewayProofBounds = {\n activitiesPerReceiptProof: number;\n receiptProofsPerExtrinsic: number;\n sharedHeaderDepth: number;\n};\n\ntype ArgonFinalizedExecutionHeaderPlan = {\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader;\n earliestTargetHeader: Awaited<ReturnType<typeof loadExecutionHeader>>;\n targetToArgonFinalizedHeaderChain: Awaited<ReturnType<typeof buildExecutionHeaderChain>>;\n};\n\ntype EthereumBlockLog = Awaited<ReturnType<EthereumExecutionClient['getLogs']>>[number];\n\nexport async function buildGatewayActivityProofPayload(\n client: IArgonQueryable & Pick<ArgonClient, 'consts'>,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<EthereumGatewayActivityProofPayload | null> {\n const bounds = getGatewayProofBounds(client);\n const discovered = await discoverGatewayActivities(client, options);\n if (!discovered) {\n return null;\n }\n\n const executionClient = getExecutionClient(options);\n const proofChunks = chunkGatewayActivitiesForProof(\n discovered.activities,\n bounds.activitiesPerReceiptProof,\n );\n const argonFinalizedExecutionHeaderPlan = await selectArgonFinalizedExecutionHeader(\n client,\n executionClient,\n proofChunks[0],\n bounds.sharedHeaderDepth,\n );\n if (!argonFinalizedExecutionHeaderPlan) {\n return null;\n }\n\n const acceptedProofChunks = await collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient,\n proofChunks,\n argonFinalizedExecutionHeaderPlan,\n bounds.receiptProofsPerExtrinsic,\n );\n if (acceptedProofChunks.length === 0) {\n return null;\n }\n\n const acceptedActivities = acceptedProofChunks.flatMap(({ activities }) => activities);\n const proof = await buildEthereumEventProof(\n options,\n argonFinalizedExecutionHeaderPlan.argonFinalizedExecutionHeader,\n acceptedProofChunks.map(({ locatorBlock }) => locatorBlock),\n );\n\n return {\n previousGatewayActivityNonce: discovered.previousGatewayActivityNonce,\n proof,\n gatewayActivityNonceRange: {\n start: acceptedActivities[0].gatewayState.gatewayActivityNonce,\n end: acceptedActivities.at(-1)!.gatewayState.gatewayActivityNonce,\n },\n executionBlockNumberRange: {\n start: acceptedActivities[0].blockNumber,\n end: acceptedActivities.at(-1)!.blockNumber,\n },\n activities: acceptedActivities,\n };\n}\n\nasync function loadActivityBlockLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locatorIndex: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<MintingGatewayActivityBlockLocator> {\n const cached = cache.get(locatorIndex);\n if (cached) {\n return cached;\n }\n\n const locator = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'activityBlockLocators',\n args: [locatorIndex],\n });\n const [blockNumber, startGatewayActivityNonce, endGatewayActivityNonce] = locator;\n const loaded: MintingGatewayActivityBlockLocator = {\n blockNumber,\n startGatewayActivityNonce,\n endGatewayActivityNonce,\n };\n cache.set(locatorIndex, loaded);\n return loaded;\n}\n\nasync function findFirstUncoveredActivityBlockLocatorIndex(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n latestLocatorIndex: bigint,\n previousGatewayActivityNonce: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<bigint | null> {\n let low = 1n;\n let high = latestLocatorIndex;\n let firstUncoveredIndex: bigint | null = null;\n\n while (low <= high) {\n const middle = (low + high) / 2n;\n const locator = await loadActivityBlockLocator(executionClient, gatewayAddress, middle, cache);\n\n if (locator.endGatewayActivityNonce > previousGatewayActivityNonce) {\n firstUncoveredIndex = middle;\n high = middle - 1n;\n continue;\n }\n\n low = middle + 1n;\n }\n\n return firstUncoveredIndex;\n}\n\nasync function discoverGatewayActivities(\n client: IArgonQueryable,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<DiscoveredGatewayActivities | null> {\n const executionClient = getExecutionClient(options);\n const gatewayAddress = getAddress(options.gatewayAddress);\n const latestLocatorIndex = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'latestActivityBlockLocatorIndex',\n });\n if (latestLocatorIndex === 0n) {\n return null;\n }\n\n const currentGatewayState =\n await client.query.crosschainTransfer.gatewayStateBySourceChain('Ethereum');\n const previousGatewayActivityNonce = currentGatewayState.isSome\n ? currentGatewayState.unwrap().gatewayActivityNonce.toBigInt()\n : 0n;\n const locatorCache = new Map<bigint, MintingGatewayActivityBlockLocator>();\n const firstLocatorIndex = await findFirstUncoveredActivityBlockLocatorIndex(\n executionClient,\n gatewayAddress,\n latestLocatorIndex,\n previousGatewayActivityNonce,\n locatorCache,\n );\n if (!firstLocatorIndex) {\n return null;\n }\n\n const activities: EthereumGatewayActivity[] = [];\n let expectedGatewayActivityNonce = previousGatewayActivityNonce + 1n;\n\n for (\n let locatorIndex = firstLocatorIndex;\n locatorIndex <= latestLocatorIndex;\n locatorIndex += 1n\n ) {\n const locator = await loadActivityBlockLocator(\n executionClient,\n gatewayAddress,\n locatorIndex,\n locatorCache,\n );\n if (\n options.throughExecutionBlockNumber !== undefined &&\n locator.blockNumber > options.throughExecutionBlockNumber\n ) {\n break;\n }\n if (locator.endGatewayActivityNonce < expectedGatewayActivityNonce) {\n continue;\n }\n\n const blockActivities = await loadGatewayActivitiesForLocator(\n executionClient,\n gatewayAddress,\n locator,\n expectedGatewayActivityNonce,\n );\n activities.push(...blockActivities);\n expectedGatewayActivityNonce = locator.endGatewayActivityNonce + 1n;\n }\n\n if (activities.length === 0) {\n return null;\n }\n\n return {\n previousGatewayActivityNonce,\n activities,\n };\n}\n\nasync function loadGatewayActivitiesForLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locator: MintingGatewayActivityBlockLocator,\n expectedGatewayActivityNonce: bigint,\n): Promise<EthereumGatewayActivity[]> {\n const blockLogs = await retryWhileExecutionRpcIndexing(() =>\n executionClient.getLogs({\n address: gatewayAddress,\n fromBlock: locator.blockNumber,\n toBlock: locator.blockNumber,\n }),\n );\n const activities = blockLogs\n .flatMap(log => {\n try {\n return [toEthereumGatewayActivity(log)];\n } catch {\n return [];\n }\n })\n .sort((left, right) =>\n left.gatewayState.gatewayActivityNonce < right.gatewayState.gatewayActivityNonce ? -1 : 1,\n );\n const remainingActivities = activities.filter(\n activity =>\n activity.gatewayState.gatewayActivityNonce >= expectedGatewayActivityNonce &&\n activity.gatewayState.gatewayActivityNonce <= locator.endGatewayActivityNonce,\n );\n if (\n remainingActivities.length === 0 ||\n remainingActivities[0].gatewayState.gatewayActivityNonce !== expectedGatewayActivityNonce\n ) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n let previousNonce = expectedGatewayActivityNonce - 1n;\n for (const activity of remainingActivities) {\n if (activity.gatewayState.gatewayActivityNonce !== previousNonce + 1n) {\n throw new Error(\n `Gateway block ${locator.blockNumber} contains a gap in gateway activity coverage`,\n );\n }\n previousNonce = activity.gatewayState.gatewayActivityNonce;\n }\n\n if (previousNonce !== locator.endGatewayActivityNonce) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n return remainingActivities;\n}\n\nfunction toEthereumGatewayActivity(log: EthereumBlockLog): EthereumGatewayActivity {\n if (\n !log.transactionHash ||\n log.transactionIndex == null ||\n log.logIndex == null ||\n !log.blockHash ||\n log.blockNumber == null\n ) {\n throw new Error('Execution log is missing indexed receipt metadata');\n }\n\n return {\n txHash: log.transactionHash,\n transactionIndex: Number(log.transactionIndex),\n logIndex: Number(log.logIndex),\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n ...decodeEthereumGatewayActivityLog(log),\n };\n}\n\nfunction chunkGatewayActivitiesForProof(\n activities: EthereumGatewayActivity[],\n maxActivitiesPerReceiptProof: number,\n): GatewayActivityProofChunk[] {\n const chunks: GatewayActivityProofChunk[] = [];\n let currentBlockHash: Hex | undefined;\n let currentBlockActivities: EthereumGatewayActivity[] = [];\n\n const flushBlock = () => {\n if (!currentBlockHash || currentBlockActivities.length === 0) {\n return;\n }\n\n for (\n let start = 0;\n start < currentBlockActivities.length;\n start += maxActivitiesPerReceiptProof\n ) {\n const chunkActivities = currentBlockActivities.slice(\n start,\n start + maxActivitiesPerReceiptProof,\n );\n const locatorsByReceipt = new Map<Hex, EthereumEventLocator>();\n\n for (const activity of chunkActivities) {\n const existing = locatorsByReceipt.get(activity.txHash);\n if (existing) {\n existing.logIndexes!.push(activity.logIndex);\n continue;\n }\n\n locatorsByReceipt.set(activity.txHash, {\n txHash: activity.txHash,\n logIndexes: [activity.logIndex],\n });\n }\n\n chunks.push({\n activities: chunkActivities,\n locatorBlock: [...locatorsByReceipt.values()],\n });\n }\n };\n\n for (const activity of activities) {\n if (currentBlockHash && activity.blockHash.toLowerCase() !== currentBlockHash.toLowerCase()) {\n flushBlock();\n currentBlockActivities = [];\n }\n\n currentBlockHash = activity.blockHash;\n currentBlockActivities.push(activity);\n }\n\n flushBlock();\n return chunks;\n}\n\nfunction getGatewayProofBounds(client: Pick<ArgonClient, 'consts'>): GatewayProofBounds {\n const activitiesPerReceiptProof =\n client.consts.crosschainTransfer.maxActivitiesPerReceiptProof.toNumber();\n if (!Number.isInteger(activitiesPerReceiptProof) || activitiesPerReceiptProof < 1) {\n throw new Error('Gateway proof requires maxActivitiesPerReceiptProof to be a positive integer');\n }\n\n const receiptProofsPerExtrinsic =\n client.consts.crosschainTransfer.maxReceiptProofsPerExtrinsic.toNumber();\n if (!Number.isInteger(receiptProofsPerExtrinsic) || receiptProofsPerExtrinsic < 1) {\n throw new Error('Gateway proof requires maxReceiptProofsPerExtrinsic to be a positive integer');\n }\n\n return {\n activitiesPerReceiptProof,\n receiptProofsPerExtrinsic,\n sharedHeaderDepth: client.consts.crosschainTransfer.maxProofExecutionHeaderDepth.toNumber(),\n };\n}\n\nasync function selectArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n executionClient: EthereumExecutionClient,\n earliestProofChunk: GatewayActivityProofChunk,\n sharedHeaderDepth: number,\n): Promise<ArgonFinalizedExecutionHeaderPlan | null> {\n const earliestBlockHash = earliestProofChunk.activities[0].blockHash;\n const earliestBlockNumber = earliestProofChunk.activities[0].blockNumber;\n const earliestTargetHeader = await loadExecutionHeader(executionClient, earliestBlockHash);\n const latestArgonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n\n if (earliestBlockNumber > latestArgonFinalizedExecutionHeader.blockNumber) {\n return null;\n }\n\n const maxArgonFinalizedExecutionHeaderBlockNumber =\n earliestBlockNumber + BigInt(sharedHeaderDepth);\n\n if (\n latestArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n try {\n return {\n argonFinalizedExecutionHeader: latestArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n latestArgonFinalizedExecutionHeader,\n ),\n };\n } catch (error) {\n if (!(error instanceof ArgonFinalizedExecutionHeaderPathError)) {\n throw error;\n }\n }\n }\n\n const scannedArgonFinalizedExecutionHeader =\n await loadRetainedExecutionHeaderAnchorAtOrAfterBlock(client, earliestBlockNumber);\n if (\n scannedArgonFinalizedExecutionHeader &&\n scannedArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n return {\n argonFinalizedExecutionHeader: scannedArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n scannedArgonFinalizedExecutionHeader,\n ),\n };\n }\n\n throw new Error(\n 'Oldest uncovered gateway activity exceeds the Argon finalized execution-header window',\n );\n}\n\nasync function loadRetainedExecutionHeaderAnchorAtOrAfterBlock(\n client: IArgonQueryable,\n earliestBlockNumber: bigint,\n): Promise<ArgonFinalizedExecutionHeader | null> {\n // The runtime stores this index under `block_number.to_be_bytes()`, so a fixed-width hex key\n // preserves the same big-endian ordering here. We first try the exact block number, then seek\n // to the first later retained key when that exact anchor is not present.\n const scanBlockNumberKey = toHex(earliestBlockNumber, { size: 8 });\n const executionHeaderAnchorsByBlockNumber =\n client.query.ethereumVerifier.executionHeaderAnchorsByBlockNumber;\n const exactAnchor = await executionHeaderAnchorsByBlockNumber(scanBlockNumberKey);\n const matchingEntry = exactAnchor.isSome\n ? exactAnchor\n : (\n await executionHeaderAnchorsByBlockNumber.entriesPaged({\n args: [],\n pageSize: 1,\n startKey: executionHeaderAnchorsByBlockNumber.key(scanBlockNumberKey),\n })\n )[0]?.[1];\n const scannedAnchor = matchingEntry?.isSome ? matchingEntry.unwrap() : null;\n\n if (!scannedAnchor) {\n return null;\n }\n\n return {\n blockHash: scannedAnchor.blockHash.toHex(),\n blockNumber: scannedAnchor.blockNumber.toBigInt(),\n };\n}\n\nasync function collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient: EthereumExecutionClient,\n proofChunks: GatewayActivityProofChunk[],\n plan: ArgonFinalizedExecutionHeaderPlan,\n receiptProofsPerExtrinsic: number,\n): Promise<GatewayActivityProofChunk[]> {\n const acceptedProofChunks: GatewayActivityProofChunk[] = [];\n const loadedTargetHeaders = [\n {\n blockHash: proofChunks[0].activities[0].blockHash,\n targetHeader: plan.earliestTargetHeader,\n },\n ];\n\n for (const proofChunk of proofChunks) {\n if (acceptedProofChunks.length === receiptProofsPerExtrinsic) {\n break;\n }\n\n const blockHash = proofChunk.activities[0].blockHash;\n const blockNumber = proofChunk.activities[0].blockNumber;\n\n if (blockNumber > plan.argonFinalizedExecutionHeader.blockNumber) {\n break;\n }\n\n let targetHeader = loadedTargetHeaders.find(\n loadedHeader => loadedHeader.blockHash.toLowerCase() === blockHash.toLowerCase(),\n )?.targetHeader;\n if (!targetHeader) {\n targetHeader = await loadExecutionHeader(executionClient, blockHash);\n loadedTargetHeaders.push({ blockHash, targetHeader });\n }\n\n if (targetHeader.number === plan.argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== plan.argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n break;\n }\n } else {\n const expectedTargetHeaderOnArgonFinalizedChain =\n plan.targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - plan.earliestTargetHeader.number)\n ];\n if (\n !expectedTargetHeaderOnArgonFinalizedChain ||\n expectedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !==\n blockHash.toLowerCase()\n ) {\n break;\n }\n }\n\n acceptedProofChunks.push(proofChunk);\n }\n\n return acceptedProofChunks;\n}\n","import camelcaseKeys from 'camelcase-keys';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type {\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumLightClientUpdatesResponse,\n} from './EthereumBeaconTypes';\nimport type { ArgonClient } from './index';\nimport { type Hex, hexToBytes } from 'viem';\n\ntype BeaconPreset = 'mainnet' | 'minimal';\ntype BeaconNetworkParams = {\n epochsPerSyncCommitteePeriod: bigint;\n preset: BeaconPreset;\n slotsPerEpoch: bigint;\n};\ntype EthereumBeaconSyncState =\n | {\n isBootstrapped: false;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n }\n | {\n isBootstrapped: true;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestFinalizedSlot: bigint;\n nextRecommendedFinalizedSlot: bigint;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n };\n\nconst lightClientUpdateRetryIntervalMs = 500;\nconst lightClientUpdateRetryTimeoutMs = 30_000;\nconst expectedBeaconPresetPromises = new WeakMap<ArgonClient, Promise<BeaconPreset | undefined>>();\nconst beaconNetworkParamsPromises = new Map<string, Promise<BeaconNetworkParams>>();\n\nexport async function getEthereumBeaconSyncBootstrapTx(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic> {\n const expectedPreset = await getExpectedBeaconPreset(client);\n const [genesis, spec] = await Promise.all([\n getBeaconJson<EthereumBeaconGenesisResponse>(beaconApiUrl, '/eth/v1/beacon/genesis'),\n getBeaconJson<EthereumBeaconConfigSpecResponse>(beaconApiUrl, '/eth/v1/config/spec'),\n ]);\n const specData = spec.data;\n parseBeaconNetworkParams(specData, expectedPreset);\n const startedAt = Date.now();\n let lastError: Error | undefined;\n let bootstrap: EthereumLightClientBootstrapResponse | undefined;\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n try {\n const finalizedHeader = await getBeaconJson<EthereumBeaconHeaderDetailsResponse>(\n beaconApiUrl,\n '/eth/v1/beacon/headers/finalized',\n );\n bootstrap = await getBeaconJson<EthereumLightClientBootstrapResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/bootstrap/${finalizedHeader.data.root}`,\n );\n lastError = undefined;\n break;\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n }\n }\n\n if (!bootstrap) {\n throw (\n lastError ??\n new Error('Unable to fetch ethereum beacon bootstrap before the retry timeout elapsed')\n );\n }\n\n return client.tx.ethereumVerifier.forceCheckpoint(\n {\n header: camelcaseKeys(bootstrap.data.header.beacon),\n currentSyncCommittee: camelcaseKeys(bootstrap.data.current_sync_committee),\n currentSyncCommitteeBranch: bootstrap.data.current_sync_committee_branch,\n validatorsRoot: genesis.data.genesis_validators_root,\n executionHeaderProof: buildExecutionHeaderProof(bootstrap.data.header),\n },\n {\n genesis: {\n version: genesis.data.genesis_fork_version,\n epoch: 0n,\n },\n altair: buildFork(specData, 'ALTAIR'),\n bellatrix: buildFork(specData, 'BELLATRIX'),\n capella: buildFork(specData, 'CAPELLA'),\n deneb: buildFork(specData, 'DENEB'),\n electra: buildFork(specData, 'ELECTRA'),\n fulu: buildFork(specData, 'FULU'),\n },\n );\n}\n\nexport async function getNextEthereumBeaconSyncTxs(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic[]> {\n const state = await getEthereumBeaconSyncState(client);\n\n if (!state.isBootstrapped) {\n return [];\n }\n\n const expectedPreset = await getExpectedBeaconPreset(client);\n const beaconNetworkParams = await getBeaconNetworkParams(beaconApiUrl, expectedPreset);\n const storedPeriod = computePeriod(state.latestFinalizedSlot, beaconNetworkParams);\n const txs: SubmittableExtrinsic[] = [];\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n let finalityUpdate: EthereumLightClientUpdate;\n\n try {\n finalityUpdate = (\n await getBeaconJson<{ data: EthereumLightClientUpdate }>(\n beaconApiUrl,\n '/eth/v1/beacon/light_client/finality_update',\n )\n ).data;\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const missingNextSyncCommittee = !state.hasNextSyncCommittee;\n const finalityFinalizedPeriod = computePeriod(\n BigInt(finalityUpdate.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n const requiredCommitteePeriod = getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod: state.latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n });\n const needsCommitteeData = requiredCommitteePeriod !== undefined;\n const finalityCarriesRequiredCommittee = updateCarriesCommitteeForPeriod(\n finalityUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n );\n const needsCurrentPeriodUpdate =\n requiredCommitteePeriod !== undefined &&\n (missingNextSyncCommittee || !finalityCarriesRequiredCommittee);\n let submitUpdate: EthereumLightClientUpdate | undefined = finalityUpdate;\n\n if (needsCommitteeData && needsCurrentPeriodUpdate) {\n let periodUpdates: EthereumLightClientUpdatesResponse;\n\n try {\n periodUpdates = await getBeaconJson<EthereumLightClientUpdatesResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/updates?count=1&start_period=${requiredCommitteePeriod}`,\n );\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const currentPeriodUpdate = periodUpdates[0]?.data;\n if (\n updateCarriesCommitteeForPeriod(\n currentPeriodUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n )\n ) {\n submitUpdate = currentPeriodUpdate;\n } else {\n submitUpdate = undefined;\n }\n }\n\n if (needsCommitteeData && needsCurrentPeriodUpdate && !submitUpdate) {\n return [];\n }\n\n // make sure the update we choose has a supermajority of sync committee participants\n if (\n submitUpdate &&\n !hasSyncCommitteeSupermajority(submitUpdate.sync_aggregate.sync_committee_bits)\n ) {\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n if (submitUpdate) {\n const finalizedSlot = BigInt(submitUpdate.finalized_header.beacon.slot);\n const attestedSlot = BigInt(submitUpdate.attested_header.beacon.slot);\n\n const finalizedPeriod = computePeriod(finalizedSlot, beaconNetworkParams);\n const attestedPeriod = computePeriod(attestedSlot, beaconNetworkParams);\n\n const isNewerThanStoredFinalized = finalizedSlot > state.latestFinalizedSlot;\n const hasReachedNextFinalizedWindow = finalizedSlot >= state.nextRecommendedFinalizedSlot;\n const canAdvanceFinalized = isNewerThanStoredFinalized && hasReachedNextFinalizedWindow;\n const advancesSyncCommitteePeriod = finalizedPeriod > state.latestSyncCommitteeUpdatePeriod;\n const canUseNextSyncCommittee = missingNextSyncCommittee || advancesSyncCommitteePeriod;\n const includesNextSyncCommittee =\n hasNextSyncCommitteeUpdate(submitUpdate) && canUseNextSyncCommittee;\n const fillsMissingNextSyncCommittee =\n missingNextSyncCommittee && includesNextSyncCommittee && attestedPeriod === storedPeriod;\n const advancesKnownSyncCommitteePeriod =\n !missingNextSyncCommittee && includesNextSyncCommittee;\n\n if (\n canAdvanceFinalized ||\n fillsMissingNextSyncCommittee ||\n advancesKnownSyncCommitteePeriod\n ) {\n const nextSyncCommitteeUpdate = includesNextSyncCommittee\n ? {\n nextSyncCommitteeUpdate: {\n nextSyncCommittee: camelcaseKeys(submitUpdate.next_sync_committee!),\n nextSyncCommitteeBranch: submitUpdate.next_sync_committee_branch!,\n },\n }\n : {};\n txs.push(\n client.tx.ethereumVerifier.submit({\n attestedHeader: camelcaseKeys(submitUpdate.attested_header.beacon),\n syncAggregate: camelcaseKeys(submitUpdate.sync_aggregate),\n signatureSlot: submitUpdate.signature_slot,\n ...nextSyncCommitteeUpdate,\n finalizedHeader: camelcaseKeys(submitUpdate.finalized_header.beacon),\n finalityBranch: submitUpdate.finality_branch,\n executionHeaderProof: buildExecutionHeaderProof(submitUpdate.finalized_header),\n }),\n );\n }\n }\n\n break;\n }\n\n return txs;\n}\n\nexport async function getEthereumBeaconSyncState(\n client: ArgonClient,\n): Promise<EthereumBeaconSyncState> {\n const latestFinalizedBlockRoot = (await client.query.ethereumVerifier.latestFinalizedBlockRoot())\n .toHex()\n .toLowerCase();\n const finalizedState =\n await client.query.ethereumVerifier.finalizedBeaconState(latestFinalizedBlockRoot);\n const latestSyncCommitteeUpdatePeriod = (\n await client.query.ethereumVerifier.latestSyncCommitteeUpdatePeriod()\n ).toBigInt();\n const headerInterval = client.consts.ethereumVerifier.freeHeadersInterval.toBigInt();\n const hasNextSyncCommittee = !(\n await client.query.ethereumVerifier.nextSyncCommittee.size()\n ).isZero();\n\n if (finalizedState.isNone) {\n return {\n isBootstrapped: false,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n }\n\n const latestFinalizedSlot = finalizedState.unwrap().slot.toBigInt();\n\n return {\n isBootstrapped: true,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestFinalizedSlot,\n nextRecommendedFinalizedSlot: latestFinalizedSlot + headerInterval,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n}\n\nfunction buildExecutionHeaderProof(finalizedHeader: EthereumLightClientHeader) {\n return {\n executionHeader: buildExecutionPayloadHeader(finalizedHeader.execution),\n executionBranch: finalizedHeader.execution_branch.map(witness => witness.toLowerCase() as Hex),\n };\n}\n\nfunction buildFork(spec: Record<string, string>, name: string) {\n const version = spec[`${name}_FORK_VERSION`];\n const epoch = spec[`${name}_FORK_EPOCH`];\n\n if (!version) throw new Error(`Missing beacon spec value for ${name}_FORK_VERSION`);\n if (!epoch) throw new Error(`Missing beacon spec value for ${name}_FORK_EPOCH`);\n\n return {\n version,\n epoch: BigInt(epoch),\n };\n}\n\nfunction hasNextSyncCommitteeUpdate(\n update?: Pick<EthereumLightClientUpdate, 'next_sync_committee' | 'next_sync_committee_branch'>,\n): boolean {\n return !!update?.next_sync_committee && !!update?.next_sync_committee_branch;\n}\n\nfunction getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n}: {\n storedPeriod: bigint;\n missingNextSyncCommittee: boolean;\n latestSyncCommitteeUpdatePeriod: bigint;\n finalityFinalizedPeriod: bigint;\n}): bigint | undefined {\n if (missingNextSyncCommittee) {\n return storedPeriod;\n }\n\n if (finalityFinalizedPeriod > latestSyncCommitteeUpdatePeriod) {\n return latestSyncCommitteeUpdatePeriod + 1n;\n }\n\n return undefined;\n}\n\nfunction updateCarriesCommitteeForPeriod(\n update: EthereumLightClientUpdate | undefined,\n requiredCommitteePeriod: bigint | undefined,\n beaconNetworkParams: BeaconNetworkParams,\n): boolean {\n if (!update || requiredCommitteePeriod === undefined || !hasNextSyncCommitteeUpdate(update)) {\n return false;\n }\n\n const attestedPeriod = computePeriod(\n BigInt(update.attested_header.beacon.slot),\n beaconNetworkParams,\n );\n const finalizedPeriod = computePeriod(\n BigInt(update.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n\n return attestedPeriod === requiredCommitteePeriod && finalizedPeriod === requiredCommitteePeriod;\n}\n\nfunction buildExecutionPayloadHeader(header: EthereumLightClientHeader['execution']) {\n const executionHeader = {\n parentHash: header.parent_hash,\n feeRecipient: header.fee_recipient,\n stateRoot: header.state_root,\n receiptsRoot: header.receipts_root,\n logsBloom: header.logs_bloom,\n prevRandao: header.prev_randao,\n blockNumber: header.block_number,\n gasLimit: header.gas_limit,\n gasUsed: header.gas_used,\n timestamp: header.timestamp,\n extraData: header.extra_data,\n baseFeePerGas: header.base_fee_per_gas,\n blockHash: header.block_hash,\n transactionsRoot: header.transactions_root,\n withdrawalsRoot: header.withdrawals_root,\n };\n\n if (header.blob_gas_used && header.excess_blob_gas) {\n return {\n Deneb: {\n ...executionHeader,\n blobGasUsed: header.blob_gas_used,\n excessBlobGas: header.excess_blob_gas,\n },\n };\n }\n\n return { Capella: executionHeader };\n}\n\nfunction detectBeaconPreset(spec: Record<string, string>): BeaconPreset {\n return spec.SLOTS_PER_HISTORICAL_ROOT === '64' ? 'minimal' : 'mainnet';\n}\n\nasync function getBeaconNetworkParams(\n beaconApiUrl: string,\n expectedPreset?: BeaconPreset,\n): Promise<BeaconNetworkParams> {\n let paramsPromise = beaconNetworkParamsPromises.get(beaconApiUrl);\n\n if (!paramsPromise) {\n paramsPromise = getBeaconJson<EthereumBeaconConfigSpecResponse>(\n beaconApiUrl,\n '/eth/v1/config/spec',\n ).then(({ data }) => parseBeaconNetworkParams(data));\n beaconNetworkParamsPromises.set(beaconApiUrl, paramsPromise);\n }\n\n const beaconNetworkParams = await paramsPromise;\n\n if (beaconNetworkParams.preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${beaconNetworkParams.preset}`,\n );\n }\n\n return beaconNetworkParams;\n}\n\nfunction parseBeaconNetworkParams(\n spec: Record<string, string>,\n expectedPreset?: BeaconPreset,\n): BeaconNetworkParams {\n const slotsPerEpoch = spec.SLOTS_PER_EPOCH;\n const epochsPerSyncCommitteePeriod = spec.EPOCHS_PER_SYNC_COMMITTEE_PERIOD;\n\n if (!slotsPerEpoch) {\n throw new Error('Missing beacon spec value for SLOTS_PER_EPOCH');\n }\n if (!epochsPerSyncCommitteePeriod) {\n throw new Error('Missing beacon spec value for EPOCHS_PER_SYNC_COMMITTEE_PERIOD');\n }\n\n const preset = detectBeaconPreset(spec);\n\n if (expectedPreset && preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${preset}`,\n );\n }\n\n return {\n preset,\n slotsPerEpoch: BigInt(slotsPerEpoch),\n epochsPerSyncCommitteePeriod: BigInt(epochsPerSyncCommitteePeriod),\n };\n}\n\nasync function getExpectedBeaconPreset(client: ArgonClient): Promise<BeaconPreset | undefined> {\n let presetPromise = expectedBeaconPresetPromises.get(client);\n\n if (!presetPromise) {\n const beaconPresetQuery = (\n client.query.ethereumVerifier as {\n beaconPreset?: () => Promise<{\n isMainnet: boolean;\n isMinimal: boolean;\n toString(): string;\n }>;\n }\n ).beaconPreset;\n\n if (!beaconPresetQuery) {\n return;\n }\n\n presetPromise = beaconPresetQuery.call(client.query.ethereumVerifier).then(preset => {\n if (preset.isMainnet) {\n return 'mainnet';\n }\n if (preset.isMinimal) {\n return 'minimal';\n }\n\n throw new Error(`Unknown ethereum verifier beacon preset: ${preset.toString()}`);\n });\n expectedBeaconPresetPromises.set(client, presetPromise);\n }\n\n try {\n return await presetPromise;\n } catch (error) {\n expectedBeaconPresetPromises.delete(client);\n throw error;\n }\n}\n\nfunction computePeriod(slot: bigint, beaconNetworkParams: BeaconNetworkParams) {\n return (\n slot / beaconNetworkParams.slotsPerEpoch / beaconNetworkParams.epochsPerSyncCommitteePeriod\n );\n}\n\nfunction hasSyncCommitteeSupermajority(syncCommitteeBits: string) {\n const bytes = hexToBytes(syncCommitteeBits as Hex);\n const totalBits = bytes.length * 8;\n const participants = bytes.reduce((total, byte) => {\n let count = 0;\n\n for (let value = byte; value > 0; value >>= 1) {\n count += value & 1;\n }\n\n return total + count;\n }, 0);\n\n return participants * 3 >= totalBits * 2;\n}\n\nasync function getBeaconJson<T>(beaconApiUrl: string, path: string): Promise<T> {\n const response = await fetch(\n new URL(path, beaconApiUrl.endsWith('/') ? beaconApiUrl : `${beaconApiUrl}/`),\n );\n\n if (!response.ok) {\n throw new Error(\n `Beacon API request failed for ${path}: ${response.status} ${response.statusText}`,\n );\n }\n\n return (await response.json()) as T;\n}\n\nfunction isRetryableBeaconLightClientError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n\n return (\n message.includes('/eth/v1/beacon/light_client/') &&\n (message.includes(': 404') || message.includes(': 500'))\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/mainchain/mainchain/client/nodejs/lib/index.cjs","../src/index.ts","../metadata.json","../runtime_version.json","../genesis.json","../src/WageProtector.ts","../src/utils.ts","../src/TxResult.ts","../src/TxSubmitter.ts","../src/keyringUtils.ts","../src/header.ts","../src/Vault.ts","../src/convert.ts","../src/BitcoinLock.ts","../src/PriceIndex.ts","../src/EvmContracts.ts","../../../chains/ethereum/contracts/artifacts/contracts/ArgonToken.sol/ArgonToken.json","../../../chains/ethereum/contracts/artifacts/contracts/ArgonotToken.sol/ArgonotToken.json","../../../chains/ethereum/contracts/artifacts/contracts/MintingGateway.sol/MintingGateway.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json","../../../chains/ethereum/contracts/artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json","../../../chains/ethereum/contracts/generated.ts","../../../chains/ethereum/contracts/hashing.ts","../../../chains/ethereum/contracts/index.ts","../src/EthereumProof.ts","../src/EthereumExecution.ts","../src/EthereumGatewayActivity.ts","../src/EthereumGatewayActivityProof.ts","../src/EthereumBeaconSync.ts"],"names":["result","BigNumber","SATS_PER_BTC","hashMintingGatewayTransferOutOfArgonRequest","hashMintingGatewayMintingAuthorization","receipts"],"mappings":"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A;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AhBo7CU;AACA;AiBnlEV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AjBqlEU;AACA;AkBpvFV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACgB,gBAAA;AACZ,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,gBAAA;AACA,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,gBAAA;AACA,kBAAA;AACkB,kBAAA;AACR,kBAAA;AACA,gBAAA;AACV,cAAA;AACF,cAAA;AACgB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AAAc,YAAA;AACZ,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AACV,YAAA;AACA,cAAA;AACkB,cAAA;AACR,cAAA;AACA,YAAA;AAEZ,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACE,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACF;AlBsvFU;AACA;AmB94IV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACF,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACA,EAAA;AACF;AnBg5IU;AACA;AoBvhJV;AACE,EAAA;AACA,EAAA;AACA,EAAA;AACO,EAAA;AACL,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACE,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACF,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACE,MAAA;AACA,MAAA;AACA,MAAA;AACF,IA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ACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACJ,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;AACI,MAAA;AACA,MAAA;AACA,MAAA;AACF,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACA,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACE,UAAA;AACA,UAAA;AACA,UAAA;AACA,UAAA;AACF,QAAA;AACA,QAAA;AACF,MAAA;AACF,IAAA;AACM,IAAA;AACR,EAAA;AACA,EAAA;AACQ,IAAA;AACN,IAAA;AACA,IAAA;A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AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAES;AACA,EAAA;AACT;AAEA;AAIM,EAAA;AAEC,EAAA;AACH,IAAA;AACE,MAAA;AACA,MAAA;AACA,IAAA;AACF,IAAA;AACF,EAAA;AAEM,EAAA;AAEF,EAAA;AACI,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAES;AAID,EAAA;AACA,EAAA;AAED,EAAA;AACG,IAAA;AACR,EAAA;AACK,EAAA;AACG,IAAA;AACR,EAAA;AAEM,EAAA;AAEF,EAAA;AACI,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEO,EAAA;AACL,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;AAEA;AACM,EAAA;AAEC,EAAA;AACG,IAAA;AAUD,IAAA;AACH,MAAA;AACF,IAAA;AAEA,IAAA;AACM,MAAA;AACF,QAAA;AACF,MAAA;AACI,MAAA;AACF,QAAA;AACF,MAAA;AAEA,MAAA;AACD,IAAA;AACD,IAAA;AACF,EAAA;AAEI,EAAA;AACF,IAAA;AACF,EAAA;AACE,IAAA;AACM,IAAA;AACR,EAAA;AACF;AAES;AAEL,EAAA;AAEJ;AAES;AACD,EAAA;AACA,EAAA;AACA,EAAA;AACA,IAAA;AAEJ,IAAA;AACE,MAAA;AACF,IAAA;AAEA,IAAA;AACE,EAAA;AAEG,EAAA;AACT;AAEA;AACQ,EAAA;AACA,IAAA;AACN,EAAA;AAEK,EAAA;AACG,IAAA;AACJ,MAAA;AACF,IAAA;AACF,EAAA;AAEQ,EAAA;AACV;AAES;AACD,EAAA;AAGJ,EAAA;AAGJ;A5BkzOU;AACA;ACxwPD;AAGA;AACT;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACK;AA+BP;AACQ,EAAA;AACR;AAQA;AACM,EAAA;AACA,EAAA;AACF,IAAA;AACK,EAAA;AACL,IAAA;AACF,EAAA;AAEA,EAAA;AACQ,EAAA;AAER,EAAA;AACE,IAAA;AACF,EAAA;AACO,EAAA;AACT;AAEM;AACG;AACH,EAAA;AACJ,EAAA;AACA,EAAA;AACA,EAAA;AACF;AAEgB;AACP,EAAA;AACT;AD+tPU;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/home/runner/work/mainchain/mainchain/client/nodejs/lib/index.cjs","sourcesContent":[null,"import './interfaces/augment-api';\nimport './interfaces/augment-types';\nimport './interfaces/types-lookup';\nimport type { KeyringPair, KeyringPair$Json } from '@polkadot/keyring/types';\nimport { ApiPromise, HttpProvider, Keyring, WsProvider } from '@polkadot/api';\nimport {\n cryptoWaitReady,\n decodeAddress,\n encodeAddress,\n isAddress,\n mnemonicGenerate,\n} from '@polkadot/util-crypto';\nimport type { InterfaceTypes } from '@polkadot/types/types/registry';\nimport type { KeypairType } from '@polkadot/util-crypto/types';\nimport type { ProviderInterface } from '@polkadot/rpc-provider/types';\nimport type { ApiDecoration, ApiOptions } from '@polkadot/api/types';\nimport { Metadata, TypeRegistry } from '@polkadot/types';\nimport { result as metadataBytes } from '../metadata.json';\nimport { specVersion } from '../runtime_version.json';\nimport Genesis from '../genesis.json';\nimport { HexString } from '@polkadot/util/types';\n\nexport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nexport { ApiDecoration };\nexport { WageProtector } from './WageProtector';\nexport { TxSubmitter, type ISubmittableOptions, type TxSigningAccount } from './TxSubmitter';\nexport { TxResult, type ITxProgressCallback } from './TxResult';\nexport * from './utils';\nexport * from './keyringUtils';\nexport * from './header';\nexport * from './Vault';\nexport * from './convert';\nexport * from './BitcoinLock';\nexport * from './PriceIndex';\nexport * as EvmContracts from './EvmContracts';\nexport * from './EthereumProof';\nexport type {\n EthereumBeaconBlockResponse,\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumVersionedLightClientUpdate,\n} from './EthereumBeaconTypes';\nexport {\n decodeEthereumGatewayActivityLog,\n decodeEthereumTransferToArgonStartedLog,\n findEthereumTransferToArgonStartedLogIndexes,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nexport {\n buildGatewayActivityProofPayload,\n type EthereumGatewayActivityProofPayload,\n} from './EthereumGatewayActivityProof';\nexport * from './EthereumBeaconSync';\nexport type {\n EthereumExecutionClient,\n EthereumExecutionSource,\n EthereumReceipt,\n} from './EthereumExecution';\nexport {\n Keyring,\n KeyringPair,\n KeyringPair$Json,\n KeypairType,\n mnemonicGenerate,\n decodeAddress,\n isAddress,\n encodeAddress,\n};\n\nexport { u8aToHex, hexToU8a, u8aEq } from '@polkadot/util';\n\nexport * from '@polkadot/types/lookup';\nexport { GenericEvent, GenericBlock, GenericAddress } from '@polkadot/types/generic';\nexport {\n BTreeMap,\n Bytes,\n Compact,\n Enum,\n Null,\n Option,\n Result,\n Bool,\n Tuple,\n Range,\n Struct,\n Text,\n U256,\n U8aFixed,\n Vec,\n bool,\n i128,\n u128,\n u16,\n u32,\n u64,\n u8,\n} from '@polkadot/types-codec';\nexport type {\n ISubmittableResult,\n IExtrinsic,\n SignerResult,\n Signer,\n ISignerPayload,\n} from '@polkadot/types/types/extrinsic';\nexport { type ITuple, type Codec } from '@polkadot/types-codec/types';\nexport {\n type AccountId32,\n type Call,\n type H160,\n type H256,\n type MultiAddress,\n type Permill,\n type AccountId,\n type Header,\n type Block,\n type SignedBlock,\n} from '@polkadot/types/interfaces/runtime';\nexport type { ExtrinsicOrHash, ExtrinsicStatus } from '@polkadot/types/interfaces/author';\nexport { type BlockHash } from '@polkadot/types/interfaces/chain';\nexport { InterfaceTypes as interfaces };\n\nexport type ArgonClient = ApiPromise;\nexport type IArgonQueryable = ArgonClient | ApiDecoration<'promise'>;\n\n/**\n * Wait for the crypto library to be ready (requires wasm, which needs async loading in commonjs)\n */\nexport async function waitForLoad(): Promise<void> {\n await cryptoWaitReady();\n}\n\n/**\n * Get a client for the given host\n * @param host The host to connect to\n * @param options Additional options for the API\n * @returns The client\n */\nexport async function getClient(host: string, options?: ApiOptions): Promise<ArgonClient> {\n let provider: ProviderInterface;\n if (host.startsWith('http')) {\n provider = new HttpProvider(host);\n } else {\n provider = new WsProvider(host);\n }\n\n options ??= {};\n options.metadata ??= {};\n\n for (const genesisHash of Object.values(Genesis)) {\n options.metadata[`${genesisHash}-${specVersion}`] = metadataBytes as HexString;\n }\n return await ApiPromise.create({ provider, noInitWarn: true, ...options });\n}\n\nconst registry = new TypeRegistry();\nregistry.setMetadata(\n new Metadata(registry, metadataBytes as HexString),\n undefined,\n undefined,\n true,\n);\n\nexport function getOfflineRegistry() {\n return registry;\n}\n","{\n \"jsonrpc\": \"2.0\",\n \"id\": \"1\",\n \"result\": \"0x6d6574610e3909000c1c73705f636f72651863727970746f2c4163636f756e7449643332000004000401205b75383b2033325d0000040000032000000008000800000503000c08306672616d655f73797374656d2c4163636f756e74496e666f08144e6f6e636501102c4163636f756e74446174610114001401146e6f6e63651001144e6f6e6365000124636f6e73756d657273100120526566436f756e7400012470726f766964657273100120526566436f756e7400012c73756666696369656e7473100120526566436f756e740001106461746114012c4163636f756e74446174610000100000050500140c3c70616c6c65745f62616c616e6365731474797065732c4163636f756e7444617461041c42616c616e63650118001001106672656518011c42616c616e6365000120726573657276656418011c42616c616e636500011866726f7a656e18011c42616c616e6365000114666c6167731c01284578747261466c61677300001800000507001c0c3c70616c6c65745f62616c616e636573147479706573284578747261466c61677300000400180110753132380000200000050000240c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540128000c01186e6f726d616c2801045400012c6f7065726174696f6e616c280104540001246d616e6461746f7279280104540000280c2873705f77656967687473247765696768745f76321857656967687400000801207265665f74696d652c010c75363400012870726f6f665f73697a652c010c75363400002c000006300030000005060034083c7072696d69746976655f74797065731048323536000004000401205b75383b2033325d00003800000208003c102873705f72756e74696d651c67656e65726963186469676573741844696765737400000401106c6f677340013c5665633c4469676573744974656d3e000040000002440044102873705f72756e74696d651c67656e6572696318646967657374284469676573744974656d0001142850726552756e74696d650800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e00060024436f6e73656e7375730800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000400105365616c0800480144436f6e73656e737573456e67696e654964000038011c5665633c75383e000500144f74686572040038011c5665633c75383e0000006452756e74696d65456e7669726f6e6d656e745570646174656400080000480000030400000008004c00000250005008306672616d655f73797374656d2c4576656e745265636f7264080445015404540134000c011470686173652902011450686173650001146576656e7454010445000118746f706963732d0201185665633c543e00005408346172676f6e5f72756e74696d653052756e74696d654576656e740001701853797374656d04005801706672616d655f73797374656d3a3a4576656e743c52756e74696d653e0000001c44696765737473040080017870616c6c65745f646967657374733a3a4576656e743c52756e74696d653e000100204d756c7469736967040084017c70616c6c65745f6d756c74697369673a3a4576656e743c52756e74696d653e0003001450726f7879040094017070616c6c65745f70726f78793a3a4576656e743c52756e74696d653e000400284d696e696e67536c6f740400a4018870616c6c65745f6d696e696e675f736c6f743a3a4576656e743c52756e74696d653e00060030426974636f696e5574786f730400c8019070616c6c65745f626974636f696e5f7574786f733a3a4576656e743c52756e74696d653e000700185661756c74730400dc017470616c6c65745f7661756c74733a3a4576656e743c52756e74696d653e00080030426974636f696e4c6f636b730400e4019070616c6c65745f626974636f696e5f6c6f636b733a3a4576656e743c52756e74696d653e000900204e6f7461726965730400f0017c70616c6c65745f6e6f7461726965733a3a4576656e743c52756e74696d653e000a00204e6f7465626f6f6b04001501017c70616c6c65745f6e6f7465626f6f6b3a3a4576656e743c52756e74696d653e000b00484c6f63616c636861696e5472616e736665720400310101a870616c6c65745f6c6f63616c636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e000c0034426c6f636b5365616c5370656304003501019870616c6c65745f626c6f636b5f7365616c5f737065633a3a4576656e743c52756e74696d653e000d001c446f6d61696e7304003901017870616c6c65745f646f6d61696e733a3a4576656e743c52756e74696d653e000e00285072696365496e64657804006101018870616c6c65745f70726963655f696e6465783a3a4576656e743c52756e74696d653e000f001c4772616e64706104006501015470616c6c65745f6772616e6470613a3a4576656e7400110030426c6f636b5265776172647304007101019070616c6c65745f626c6f636b5f726577617264733a3a4576656e743c52756e74696d653e001300104d696e7404008901016c70616c6c65745f6d696e743a3a4576656e743c52756e74696d653e0014002042616c616e6365730400990101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365313e001500244f776e6572736869700400c10101ec70616c6c65745f62616c616e6365733a3a4576656e743c52756e74696d652c2070616c6c65745f62616c616e6365733a3a496e7374616e6365323e0016001c547850617573650400c501017c70616c6c65745f74785f70617573653a3a4576656e743c52756e74696d653e001700485472616e73616374696f6e5061796d656e740400d10101a870616c6c65745f7472616e73616374696f6e5f7061796d656e743a3a4576656e743c52756e74696d653e0018001c5574696c6974790400d501015470616c6c65745f7574696c6974793a3a4576656e74001900105375646f0400d901016c70616c6c65745f7375646f3a3a4576656e743c52756e74696d653e001a002054726561737572790400dd01017c70616c6c65745f74726561737572793a3a4576656e743c52756e74696d653e001f0028466565436f6e74726f6c0400e501018870616c6c65745f6665655f636f6e74726f6c3a3a4576656e743c52756e74696d653e0020004c4f7065726174696f6e616c4163636f756e74730400f10101ac70616c6c65745f6f7065726174696f6e616c5f6163636f756e74733a3a4576656e743c52756e74696d653e00220040457468657265756d56657269666965720400f90101a070616c6c65745f657468657265756d5f76657269666965723a3a4576656e743c52756e74696d653e0023004843726f7373636861696e5472616e736665720400010201a870616c6c65745f63726f7373636861696e5f7472616e736665723a3a4576656e743c52756e74696d653e00240000580c306672616d655f73797374656d1870616c6c6574144576656e740404540001204045787472696e7369635375636365737304013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00000490416e2065787472696e73696320636f6d706c65746564207375636365737366756c6c792e3c45787472696e7369634661696c656408013864697370617463685f6572726f7268013444697370617463684572726f7200013464697370617463685f696e666f5c014444697370617463684576656e74496e666f00010450416e2065787472696e736963206661696c65642e2c436f64655570646174656400020450603a636f6465602077617320757064617465642e284e65774163636f756e7404011c6163636f756e74000130543a3a4163636f756e7449640003046841206e6577206163636f756e742077617320637265617465642e344b696c6c65644163636f756e7404011c6163636f756e74000130543a3a4163636f756e74496400040458416e206163636f756e7420776173207265617065642e2052656d61726b656408011873656e646572000130543a3a4163636f756e7449640001106861736834011c543a3a48617368000504704f6e206f6e2d636861696e2072656d61726b2068617070656e65642e4455706772616465417574686f72697a6564080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c00060468416e20757067726164652077617320617574686f72697a65642e8052656a6563746564496e76616c6964417574686f72697a656455706772616465080124636f64655f6861736834011c543a3a486173680001146572726f7268013444697370617463684572726f720007041101416e20696e76616c696420617574686f72697a65642075706772616465207761732072656a6563746564207768696c6520747279696e6720746f206170706c792069742e04704576656e7420666f72207468652053797374656d2070616c6c65742e5c08306672616d655f73797374656d4444697370617463684576656e74496e666f00000c0118776569676874280118576569676874000114636c6173736001344469737061746368436c617373000120706179735f666565640110506179730000600c346672616d655f737570706f7274206469737061746368344469737061746368436c61737300010c184e6f726d616c0000002c4f7065726174696f6e616c000100244d616e6461746f727900020000640c346672616d655f737570706f727420646973706174636810506179730001080c596573000000084e6f0001000068082873705f72756e74696d653444697370617463684572726f7200013c144f746865720000003043616e6e6f744c6f6f6b7570000100244261644f726967696e000200184d6f64756c6504006c012c4d6f64756c654572726f7200030044436f6e73756d657252656d61696e696e670004002c4e6f50726f76696465727300050040546f6f4d616e79436f6e73756d65727300060014546f6b656e0400700128546f6b656e4572726f720007002841726974686d65746963040074013c41726974686d657469634572726f72000800345472616e73616374696f6e616c04007801485472616e73616374696f6e616c4572726f7200090024457868617573746564000a0028436f7272757074696f6e000b002c556e617661696c61626c65000c0038526f6f744e6f74416c6c6f776564000d00105472696504007c0124547269654572726f72000e00006c082873705f72756e74696d652c4d6f64756c654572726f720000080114696e64657808010875380001146572726f7248018c5b75383b204d41585f4d4f44554c455f4552524f525f454e434f4445445f53495a455d000070082873705f72756e74696d6528546f6b656e4572726f720001284046756e6473556e617661696c61626c65000000304f6e6c7950726f76696465720001003042656c6f774d696e696d756d0002003043616e6e6f7443726561746500030030556e6b6e6f776e41737365740004001846726f7a656e0005002c556e737570706f727465640006004043616e6e6f74437265617465486f6c64000700344e6f74457870656e6461626c650008001c426c6f636b65640009000074083473705f61726974686d657469633c41726974686d657469634572726f7200010c24556e646572666c6f77000000204f766572666c6f77000100384469766973696f6e42795a65726f0002000078082873705f72756e74696d65485472616e73616374696f6e616c4572726f72000108304c696d6974526561636865640000001c4e6f4c61796572000100007c0c2873705f72756e74696d653070726f76696e675f7472696524547269654572726f7200013840496e76616c69645374617465526f6f7400000048496e636f6d706c65746544617461626173650001005056616c75654174496e636f6d706c6574654b6579000200304465636f6465724572726f720003002c496e76616c696448617368000400304475706c69636174654b65790005003845787472616e656f75734e6f64650006003c45787472616e656f757356616c75650007005c45787472616e656f7573486173685265666572656e636500080054496e76616c69644368696c645265666572656e63650009003456616c75654d69736d61746368000a003c496e636f6d706c65746550726f6f66000b0030526f6f744d69736d61746368000c002c4465636f64654572726f72000d0000800c3870616c6c65745f646967657374731870616c6c6574144576656e74040454000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574840c3c70616c6c65745f6d756c74697369671870616c6c6574144576656e740404540001142c4e65774d756c74697369670c0124617070726f76696e67000130543a3a4163636f756e7449640001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c486173680000048c41206e6577206d756c7469736967206f7065726174696f6e2068617320626567756e2e404d756c7469736967417070726f76616c100124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000104c841206d756c7469736967206f7065726174696f6e20686173206265656e20617070726f76656420627920736f6d656f6e652e404d756c74697369674578656375746564140124617070726f76696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000118726573756c748c01384469737061746368526573756c740002049c41206d756c7469736967206f7065726174696f6e20686173206265656e2065786563757465642e444d756c746973696743616e63656c6c656410012863616e63656c6c696e67000130543a3a4163636f756e74496400012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e0001206d756c7469736967000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c48617368000304a041206d756c7469736967206f7065726174696f6e20686173206265656e2063616e63656c6c65642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e74496400012463616c6c5f6861736804012043616c6c4861736800012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000404f0546865206465706f73697420666f722061206d756c7469736967206f7065726174696f6e20686173206265656e20757064617465642f706f6b65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657488083c70616c6c65745f6d756c74697369672454696d65706f696e74042c426c6f636b4e756d62657201100008011868656967687410012c426c6f636b4e756d626572000114696e64657810010c75333200008c0418526573756c740804540190044501680108084f6b040090000000000c4572720400680000010000900000040000940c3070616c6c65745f70726f78791870616c6c6574144576656e7404045400011c3450726f78794578656375746564040118726573756c748c01384469737061746368526573756c74000004bc412070726f78792077617320657865637574656420636f72726563746c792c20776974682074686520676976656e2e2c507572654372656174656418011070757265000130543a3a4163636f756e74496400010c77686f000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360001086174100144426c6f636b4e756d626572466f723c543e00013c65787472696e7369635f696e64657810010c753332000108dc412070757265206163636f756e7420686173206265656e2063726561746564206279206e65772070726f7879207769746820676976656e90646973616d626967756174696f6e20696e64657820616e642070726f787920747970652e28507572654b696c6c656410011070757265000130543a3a4163636f756e74496400011c737061776e6572000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f787954797065000150646973616d626967756174696f6e5f696e6465789c010c7531360002049c4120707572652070726f787920776173206b696c6c65642062792069747320737061776e65722e24416e6e6f756e6365640c01107265616c000130543a3a4163636f756e74496400011470726f7879000130543a3a4163636f756e74496400012463616c6c5f6861736834013443616c6c486173684f663c543e000304e0416e20616e6e6f756e63656d656e742077617320706c6163656420746f206d616b6520612063616c6c20696e20746865206675747572652e2850726f7879416464656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00040448412070726f7879207761732061646465642e3050726f787952656d6f76656410012464656c656761746f72000130543a3a4163636f756e74496400012464656c656761746565000130543a3a4163636f756e74496400012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00050450412070726f7879207761732072656d6f7665642e304465706f736974506f6b656410010c77686f000130543a3a4163636f756e7449640001106b696e64a0012c4465706f7369744b696e6400012c6f6c645f6465706f73697418013042616c616e63654f663c543e00012c6e65775f6465706f73697418013042616c616e63654f663c543e000604090141206465706f7369742073746f72656420666f722070726f78696573206f7220616e6e6f756e63656d656e74732077617320706f6b6564202f20757064617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749808346172676f6e5f72756e74696d652450726f7879547970650001200c416e790000002c4e6f6e5472616e73666572000100285072696365496e646578000200244d696e696e67426964000300504d696e696e674269645265616c506179734665650004001c426974636f696e000500285661756c7441646d696e00060050426974636f696e496e697469616c697a65466f72000700009c0000050400a0083070616c6c65745f70726f78792c4465706f7369744b696e640001081c50726f7869657300000034416e6e6f756e63656d656e747300010000a40c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144576656e7404045400011c244e65774d696e6572730c01286e65775f6d696e657273a801b4426f756e6465645665633c526567697374726174696f6e3c543e2c20543a3a4d6178436f686f727453697a653e00013c72656c65617365645f6d696e65727310010c7533320001206672616d655f696430011c4672616d6549640000003c536c6f7442696464657241646465640c01286163636f756e745f6964000130543a3a4163636f756e7449640001286269645f616d6f756e74180128543a3a42616c616e6365000114696e64657810010c75333200010044536c6f7442696464657244726f707065640801286163636f756e745f6964000130543a3a4163636f756e7449640001587072657365727665645f6172676f6e6f745f686f6c64200110626f6f6c0002005452656c656173654d696e6572536561744572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000300684d696e696e67436f6e66696775726174696f6e557064617465640c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73653001105469636b00014c7469636b735f6265747765656e5f736c6f74733001105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b733001105469636b000400404d696e696e6742696473436c6f7365640401206672616d655f696430011c4672616d654964000504f4426964732061726520636c6f7365642064756520746f20746865205652462072616e646f6d697a65642066756e6374696f6e2074726967676572696e673c52656c656173654269644572726f720801286163636f756e745f6964000130543a3a4163636f756e7449640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574a80c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ac045300000400c401185665633c543e0000ac0c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c484d696e696e67526567697374726174696f6e0c244163636f756e74496401001c42616c616e63650118104b65797301b0001c01286163636f756e745f69640001244163636f756e74496400016065787465726e616c5f66756e64696e675f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e00010c626964c0011c42616c616e63650001206172676f6e6f7473c0011c42616c616e6365000138617574686f726974795f6b657973b001104b6579730001447374617274696e675f6672616d655f69642c011c4672616d65496400012c6269645f61745f7469636b2c01105469636b0000b008346172676f6e5f72756e74696d652c53657373696f6e4b657973000008011c6772616e647061b401d03c4772616e647061206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c6963000150626c6f636b5f7365616c5f617574686f72697479b801dc3c4d696e696e67536c6f74206173202463726174653a3a426f756e64546f52756e74696d654170705075626c69633e3a3a5075626c69630000b40c5073705f636f6e73656e7375735f6772616e6470610c617070185075626c69630000040004013c656432353531393a3a5075626c69630000b810406172676f6e5f7072696d69746976657328626c6f636b5f7365616c0c617070185075626c69630000040004013c656432353531393a3a5075626c69630000bc04184f7074696f6e04045401000108104e6f6e6500000010536f6d650400000000010000c00000061800c4000002ac00c80c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144576656e7404045400011c305574786f566572696669656408011c7574786f5f69643001185574786f49640001447361746f736869735f72656365697665643001205361746f73686973000000305574786f52656a656374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600013c72656a65637465645f726561736f6ed80154426974636f696e52656a6563746564526561736f6e0001447361746f736869735f72656365697665643001205361746f73686973000100245574786f5370656e7408011c7574786f5f69643001185574786f4964000130626c6f636b5f686569676874300134426974636f696e486569676874000200345574786f556e7761746368656404011c7574786f5f69643001185574786f4964000300385574786f5370656e744572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000400445574786f56657269666965644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000500445574786f52656a65637465644572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000600047c54686520604576656e746020656e756d206f6620746869732070616c6c6574cc0c406172676f6e5f7072696d6974697665731c626974636f696e1c5574786f526566000008011074786964d00118483235364c650001306f75747075745f696e646578d4010c7533320000d00c406172676f6e5f7072696d6974697665731c626974636f696e18483235364c65000004000401205b75383b2033325d0000d40000061000d80c406172676f6e5f7072696d6974697665731c626974636f696e54426974636f696e52656a6563746564526561736f6e000110705361746f736869734f757473696465416363657074656452616e6765000000145370656e740001004c566572696669636174696f6e457870697265640002003c416c7265616479566572696669656400030000dc0c3470616c6c65745f7661756c74731870616c6c6574144576656e74040454000140305661756c74437265617465641401207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e74496400012c6f70656e65645f7469636b3001105469636b000000345661756c744d6f6469666965641001207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636504c0546865206e65772073656375726974697a6174696f6e20616d6f756e74206166746572206d6f64696669636174696f6e015473656375726974697a6174696f6e5f746172676574180128543a3a42616c616e63650449015468652073656375726974697a6174696f6e2074617267657420616d6f756e74206166746572206d6f64696669636174696f6e20287468697320697320746865206c6f6e67207465726d2074617267657429015073656375726974697a6174696f6e5f726174696fe00124466978656455313238000100645661756c745465726d734368616e67655363686564756c65640801207661756c745f696410011c5661756c74496400012c6368616e67655f7469636b3001105469636b000200445661756c745465726d734368616e6765640401207661756c745f696410011c5661756c7449640003002c5661756c74436c6f7365640c01207661756c745f696410011c5661756c74496400016073656375726974697a6174696f6e5f72656d61696e696e67180128543a3a42616c616e636500015c73656375726974697a6174696f6e5f72656c6561736564180128543a3a42616c616e6365000400585661756c74426974636f696e587075624368616e67650401207661756c745f696410011c5661756c7449640005005c5661756c74526576656e7565556e636f6c6c65637465640c01207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500060439015661756c7420726576656e756520776173206e6f7420636f6c6c65637465642077697468696e207468652072657175697265642077696e646f772c20736f20686173206265656e206275726e6564385661756c74436f6c6c65637465640801207661756c745f696410011c5661756c74496400011c726576656e7565180128543a3a42616c616e63650007040901546865207661756c7420636f6c6c656374656420726576656e756520616e6420636f7369676e656420616c6c2070656e64696e6720626974636f696e206c6f636b732c46756e64734c6f636b65641801207661756c745f696410011c5661756c7449640001186c6f636b6572000130543a3a4163636f756e7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500012869735f72617463686574200110626f6f6c00012c6665655f726576656e7565180128543a3a42616c616e63650001486469645f7573655f6665655f636f75706f6e200110626f6f6c0008004046756e644c6f636b43616e63656c65640801207661756c745f696410011c5661756c744964000118616d6f756e74180128543a3a42616c616e63650009006046756e64735363686564756c6564466f7252656c656173650c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500013872656c656173655f686569676874300134426974636f696e486569676874000a00584c6f7374426974636f696e436f6d70656e73617465641001207661756c745f696410011c5661756c74496400012c62656e6566696369617279000130543a3a4163636f756e744964000138746f5f62656e6566696369617279180128543a3a42616c616e63650001186275726e6564180128543a3a42616c616e6365000b003446756e647352656c65617365640801207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e6365000c004846756e647352656c65617365644572726f720801207661756c745f696410011c5661756c7449640001146572726f7268013444697370617463684572726f72000d005854726561737572795265636f7264696e674572726f721001207661756c745f696410011c5661756c7449640001206672616d655f696430011c4672616d6549640001387661756c745f6561726e696e6773180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f72000e0050436f6d6d69747465644172676f6e6f74735365740c01207661756c745f696410011c5661756c74496400014c6f70657261746f725f6163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e00c3473705f61726974686d657469632c66697865645f706f696e742446697865645531323800000400180110753132380000e40c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144576656e7404045400013848426974636f696e4c6f636b437265617465641c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e636500013873656375726974697a6174696f6e180128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013073656375726974795f666565180128543a3a42616c616e636500000050426974636f696e4c6f636b52617463686574656420011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001486c69717569646974795f70726f6d69736564180128543a3a42616c616e63650001406f6c645f7461726765745f7072696365180128543a3a42616c616e636500013073656375726974795f666565180128543a3a42616c616e63650001406e65775f7461726765745f7072696365180128543a3a42616c616e6365000134616d6f756e745f6275726e6564180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400010044426974636f696e4c6f636b4275726e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001387761735f7574786f5f7370656e74200110626f6f6c00020068426974636f696e5574786f436f7369676e52657175657374656408011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640003004c426974636f696e5574786f436f7369676e65640c011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001247369676e6174757265e80140426974636f696e5369676e617475726500040060426974636f696e5370656e74416674657252656c6561736508011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400050050426974636f696e436f7369676e5061737444756510011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c74496400014c636f6d70656e736174696f6e5f616d6f756e74180128543a3a42616c616e6365000158636f6d70656e73617465645f6163636f756e745f6964000130543a3a4163636f756e74496400060048436f7369676e4f7665726475654572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f720007040901416e206572726f72206f63637572726564207768696c6520726566756e64696e6720616e206f76657264756520636f7369676e656420626974636f696e206c6f636b4c4c6f636b45787069726174696f6e4572726f7208011c7574786f5f69643001185574786f49640001146572726f7268013444697370617463684572726f72000804a4416e206572726f72206f63637572726564207768696c6520636f6d706c6574696e672061206c6f636b504f727068616e65645574786f526563656976656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001207361746f736869733001205361746f73686973000900704f727068616e65645574786f52656c6561736552657175657374656410011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000a00504f727068616e65645574786f436f7369676e656414011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e7449640001247369676e6174757265e80140426974636f696e5369676e6174757265000b005c5574786f46756e64656446726f6d43616e64696461746510011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f5265660001207661756c745f696410011c5661756c7449640001286163636f756e745f6964000130543a3a4163636f756e744964000c005c53656375726974697a6174696f6e496e6372656173656410011c7574786f5f69643001185574786f49640001207661756c745f696410011c5661756c7449640001306e65775f7361746f736869733001205361746f736869730001286163636f756e745f6964000130543a3a4163636f756e744964000d00047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e80c406172676f6e5f7072696d6974697665731c626974636f696e40426974636f696e5369676e617475726500000400ec0170426f756e6465645665633c75382c20436f6e73745533323c37343e3e0000ec0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000f00c3c70616c6c65745f6e6f7461726965731870616c6c6574144576656e74040454000114384e6f7461727950726f706f7365640c01406f70657261746f725f6163636f756e74000130543a3a4163636f756e7449640001106d657461f4013c4e6f746172794d6574614f663c543e00011c65787069726573100144426c6f636b4e756d626572466f723c543e000004a4412075736572206861732070726f706f736564206f7065726174696e672061732061206e6f746172793c4e6f746172794163746976617465640401186e6f74617279110101444e6f746172795265636f72644f663c543e0001048c41206e6f746172792070726f706f73616c20686173206265656e206163636570746564584e6f746172794d6574615570646174655175657565640c01246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b3001105469636b000204844e6f74617279206d657461646174612071756575656420666f7220757064617465444e6f746172794d657461557064617465640801246e6f746172795f69641001204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0003045c4e6f74617279206d657461646174612075706461746564544e6f746172794d6574615570646174654572726f720c01246e6f746172795f69641001204e6f7461727949640001146572726f7268013444697370617463684572726f720001106d657461f4013c4e6f746172794d6574614f663c543e000404844572726f72207570646174696e6720717565756564206e6f7461727920696e666f047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f40c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794d65746104204d6178486f73747300000c01106e616d65f801284e6f746172794e616d650001187075626c69630401304e6f746172795075626c6963000114686f73747301010168426f756e6465645665633c486f73742c204d6178486f7374733e0000f80c406172676f6e5f7072696d697469766573186e6f74617279284e6f746172794e616d6500000400fc0170426f756e6465645665633c75382c20436f6e73745533323c35353e3e0000fc0c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000001010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540105010453000004000d0101185665633c543e000005010c406172676f6e5f7072696d69746976657310686f737410486f73740000040009010174426f756e6465645665633c75382c20436f6e73745533323c3235333e3e000009010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00000d0100000205010011010c406172676f6e5f7072696d697469766573186e6f74617279304e6f746172795265636f72640c244163636f756e74496401002c426c6f636b4e756d6265720110204d6178486f73747300001801246e6f746172795f6964d401204e6f74617279496400014c6f70657261746f725f6163636f756e745f69640001244163636f756e74496400013c6163746976617465645f626c6f636bd4012c426c6f636b4e756d6265720001486d6574615f757064617465645f626c6f636bd4012c426c6f636b4e756d6265720001446d6574615f757064617465645f7469636b2c01105469636b0001106d657461f401504e6f746172794d6574613c4d6178486f7374733e000015010c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144576656e7404045400010c444e6f7465626f6f6b5375626d69747465640801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000000504e6f7465626f6f6b41756469744661696c7572651001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001346e6f7465626f6f6b5f686173683401104832353600015066697273745f6661696c7572655f726561736f6e1901014c4e6f7465626f6f6b5665726966794572726f72000100644e6f7465626f6f6b5265616479466f72526570726f636573730801246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000200047c54686520604576656e746020656e756d206f6620746869732070616c6c657419010c486172676f6e5f6e6f746172795f6175646974146572726f722c5665726966794572726f720001ec504d697373696e674163636f756e744f726967696e0801286163636f756e745f696400012c4163636f756e74496433320001306163636f756e745f747970651d01012c4163636f756e745479706500000048486973746f72794c6f6f6b75704572726f72040118736f75726365210101644163636f756e74486973746f72794c6f6f6b75704572726f7200010060496e76616c69644163636f756e744368616e67656c69737400020064496e76616c6964436861696e5472616e73666572734c69737400030060496e76616c696442616c616e63654368616e6765526f6f7400040060496e76616c69644865616465725461785265636f7264656400050050496e76616c696450726576696f75734e6f6e636500060058496e76616c696450726576696f757342616c616e636500070070496e76616c696450726576696f75734163636f756e744f726967696e00080090496e76616c696450726576696f757342616c616e63654368616e67654e6f7465626f6f6b00090050496e76616c696442616c616e63654368616e6765000a0074496e76616c696442616c616e63654368616e67655369676e61747572650401306368616e67655f696e6465789c010c753136000b0054496e76616c69644e6f7465526563697069656e7473000c004842616c616e63654368616e67654572726f720c01306368616e67655f696e6465789c010c7531360001286e6f74655f696e6465789c010c75313600011c6d6573736167652501013c4d61784c656e677468537472696e67000d0068496e76616c69644e657442616c616e63654368616e6765736574000e004c496e73756666696369656e7442616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c753136000f004845786365656465644d617842616c616e636510011c62616c616e636518011075313238000118616d6f756e74180110753132380001286e6f74655f696e6465789c010c7531360001306368616e67655f696e6465789c010c7531360010005442616c616e63654368616e67654d69736d617463680c01306368616e67655f696e6465789c010c75313600014070726f76696465645f62616c616e63651801107531323800014863616c63756c617465645f62616c616e63652d010110693132380011005c42616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d65641801107531323800120070496e76616c6964446f6d61696e4c65617365416c6c6f636174696f6e0013006854617842616c616e63654368616e67654e6f744e65745a65726f08011073656e741801107531323800011c636c61696d6564180110753132380014004c4d697373696e6742616c616e636550726f6f660015006c496e76616c696450726576696f757342616c616e636550726f6f660016004c496e76616c69644e6f7465626f6f6b4861736800170064496e76616c69644e6f7465626f6f6b4865616465724861736800180058496e76616c69644e6f7465626f6f6b56657273696f6e001900584475706c6963617465436861696e5472616e73666572001a00684475706c6963617465644163636f756e744f726967696e556964001b0058496e76616c69644e6f746172795369676e6174757265001c0054496e76616c696453656372657450726f7669646564001d00384e6f7465626f6f6b546f6f4f6c64001e005c436174636875704e6f7465626f6f6b734d697373696e67001f002c4465636f64654572726f72002000744163636f756e744368616e6e656c486f6c64446f65736e744578697374002100704163636f756e74416c72656164794861734368616e6e656c486f6c640022006c4368616e6e656c486f6c644e6f745265616479466f72436c61696d08013063757272656e745f7469636b3001105469636b000128636c61696d5f7469636b3001105469636b002300344163636f756e744c6f636b6564002400584d697373696e674368616e6e656c486f6c644e6f746500250058496e76616c69644368616e6e656c486f6c644e6f746500260068496e76616c69644368616e6e656c486f6c64436c61696d6572730027006c4368616e6e656c486f6c644e6f746542656c6f774d696e696d756d00280054496e76616c69645461784e6f74654163636f756e740029004c496e76616c69645461784f7065726174696f6e002a005c496e73756666696369656e74546178496e636c756465640c01207461785f73656e74180110753132380001207461785f6f776564180110753132380001286163636f756e745f696400012c4163636f756e7449643332002b0060496e73756666696369656e74426c6f636b566f7465546178002c0048496e656c696769626c65546178566f746572002d0064426c6f636b566f7465496e76616c69645369676e6174757265002e0068496e76616c6964426c6f636b566f7465416c6c6f636174696f6e002f0050496e76616c6964426c6f636b566f7465526f6f7400300058496e76616c6964426c6f636b566f746573436f756e740031005c496e76616c6964426c6f636b566f74696e67506f77657200320050496e76616c6964426c6f636b566f74654c6973740033004c496e76616c6964436f6d7075746550726f6f6600340058496e76616c6964426c6f636b566f7465536f7572636500350070496e73756666696369656e74426c6f636b566f74654d696e696d756d00360050496e76616c6964426c6f636b566f74655469636b0801107469636b3001105469636b0001346e6f7465626f6f6b5f7469636b3001105469636b0037005c496e76616c696444656661756c74426c6f636b566f746500380074496e76616c696444656661756c74426c6f636b566f7465417574686f72080118617574686f7200012c4163636f756e7449643332000120657870656374656400012c4163636f756e7449643332003900484e6f44656661756c74426c6f636b566f7465003a00001d010c406172676f6e5f7072696d6974697665731c6163636f756e742c4163636f756e74547970650001080c5461780000001c4465706f73697400010000210108486172676f6e5f6e6f746172795f6175646974644163636f756e74486973746f72794c6f6f6b75704572726f7200011030526f6f744e6f74466f756e64000000484c6173744368616e67654e6f74466f756e640001006c496e76616c69645472616e73666572546f4c6f63616c636861696e00020068426c6f636b53706563696669636174696f6e4e6f74466f756e640003000025010c486172676f6e5f6e6f746172795f6175646974146572726f723c4d61784c656e677468537472696e670000040029010174426f756e6465645665633c75382c20436f6e73745533323c3130303e3e000029010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00002d010000050d0031010c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144576656e7404045400011c505472616e73666572546f4c6f63616c636861696e1401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e636500012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c65787069726174696f6e5f7469636b3001105469636b0000046846756e64732073656e7420746f2061206c6f63616c636861696e6c5472616e73666572546f4c6f63616c636861696e457870697265640c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f746172794964000104b85472616e7366657220746f206c6f63616c636861696e206578706972656420616e6420726f6c6c6564206261636b585472616e7366657246726f6d4c6f63616c636861696e0c01286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000204945472616e736665722066726f6d204c6f63616c636861696e20746f204d61696e636861696e6c5472616e7366657246726f6d4c6f63616c636861696e4572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e744964000118616d6f756e741801583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f720003049041207472616e7366657220696e746f20746865206d61696e636861696e206661696c65647c5472616e73666572546f4c6f63616c636861696e526566756e644572726f721401286163636f756e745f69640001983c54206173206672616d655f73797374656d3a3a436f6e6669673e3a3a4163636f756e74496400012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d6265720001146572726f7268013444697370617463684572726f72000404dc416e2065787069726564207472616e7366657220746f206c6f63616c636861696e206661696c656420746f20626520726566756e646564a0506f737369626c65496e76616c69644c6f63616c636861696e5472616e73666572416c6c6f7765640c012c7472616e736665725f69641001585472616e73666572546f4c6f63616c636861696e49640001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d626572000508450141206c6f63616c636861696e207472616e7366657220636f756c64206e6f7420626520636c65616e65642075702070726f7065726c792e20506f737369626c6520696e76616c6964207472616e73666572586e656564696e6720696e7665737469676174696f6e2e345461786174696f6e4572726f721001246e6f746172795f69641001204e6f74617279496400013c6e6f7465626f6f6b5f6e756d6265721001384e6f7465626f6f6b4e756d62657200010c7461781801583c5420617320436f6e6669673e3a3a42616c616e63650001146572726f7268013444697370617463684572726f720006043c5461786174696f6e206661696c6564047c54686520604576656e746020656e756d206f6620746869732070616c6c657435010c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144576656e740404540001084c566f74654d696e696d756d41646a757374656410015065787065637465645f626c6f636b5f766f7465731801107531323800014861637475616c5f626c6f636b5f766f7465731801107531323800014873746172745f766f74655f6d696e696d756d18012c566f74654d696e696d756d0001406e65775f766f74655f6d696e696d756d18012c566f74654d696e696d756d00000064436f6d70757465446966666963756c747941646a757374656410014c65787065637465645f626c6f636b5f74696d6530010c75363400014461637475616c5f626c6f636b5f74696d6530010c75363400014073746172745f646966666963756c7479180144436f6d70757465446966666963756c74790001386e65775f646966666963756c7479180144436f6d70757465446966666963756c7479000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657439010c3870616c6c65745f646f6d61696e731870616c6c6574144576656e74040454000118445a6f6e655265636f72645570646174656408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000004804120646f6d61696e207a6f6e65207265636f726420776173207570646174656440446f6d61696e5265676973746572656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e0001045c4120646f6d61696e20776173207265676973746572656434446f6d61696e52656e6577656404012c646f6d61696e5f68617368340128446f6d61696e486173680002045c4120646f6d61696e20776173207265676973746572656434446f6d61696e4578706972656404012c646f6d61696e5f68617368340128446f6d61696e48617368000304504120646f6d61696e20776173206578706972656468446f6d61696e526567697374726174696f6e43616e63656c656408012c646f6d61696e5f68617368340128446f6d61696e48617368000130726567697374726174696f6e5d010180446f6d61696e526567697374726174696f6e3c543a3a4163636f756e7449643e00040841014120646f6d61696e20726567697374726174696f6e207761732063616e63656c65642064756520746f206120636f6e666c696374696e6720726567697374726174696f6e20696e207468652073616d65107469636b5c446f6d61696e526567697374726174696f6e4572726f720c012c646f6d61696e5f68617368340128446f6d61696e486173680001286163636f756e745f696400012c4163636f756e74496433320001146572726f7268013444697370617463684572726f72000504b04120646f6d61696e20726567697374726174696f6e206661696c65642064756520746f20616e206572726f72047c54686520604576656e746020656e756d206f6620746869732070616c6c65743d010c406172676f6e5f7072696d69746976657318646f6d61696e285a6f6e655265636f726404244163636f756e7449640100000c013c7061796d656e745f6163636f756e740001244163636f756e7449640001246e6f746172795f69641001204e6f74617279496400012076657273696f6e73410101cc426f756e64656442547265654d61703c53656d7665722c2056657273696f6e486f73742c20436f6e73745533323c3530303e3e000041010c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01450104560149010453000004005101013842547265654d61703c4b2c20563e000045010c406172676f6e5f7072696d69746976657318646f6d61696e1853656d76657200000c01146d616a6f7210010c7533320001146d696e6f7210010c753332000114706174636810010c753332000049010c406172676f6e5f7072696d69746976657318646f6d61696e2c56657273696f6e486f737400000801306461746173746f72655f69644d010170426f756e6465645665633c75382c20436f6e73745533323c35303e3e000110686f737405010110486f737400004d010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00005101042042547265654d617008044b01450104560149010004005501000000550100000259010059010000040845014901005d01083870616c6c65745f646f6d61696e7348446f6d61696e526567697374726174696f6e04244163636f756e7449640100000801286163636f756e745f69640001244163636f756e744964000148726567697374657265645f61745f7469636b3001105469636b000061010c4870616c6c65745f70726963655f696e6465781870616c6c6574144576656e74040454000108204e6577496e646578000004c44576656e7420656d6974746564207768656e2061206e657720707269636520696e646578206973207375626d69747465643c4f70657261746f724368616e67656404012c6f70657261746f725f6964000130543a3a4163636f756e744964000100047c54686520604576656e746020656e756d206f6620746869732070616c6c657465010c3870616c6c65745f6772616e6470611870616c6c6574144576656e7400010c384e6577417574686f726974696573040134617574686f726974795f73657469010134417574686f726974794c6973740000048c4e657720617574686f726974792073657420686173206265656e206170706c6965642e185061757365640001049843757272656e7420617574686f726974792073657420686173206265656e207061757365642e1c526573756d65640002049c43757272656e7420617574686f726974792073657420686173206265656e20726573756d65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657469010000026d01006d0100000408b4300071010c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144576656e74040454000108345265776172644372656174656404011c72657761726473750101a85665633c426c6f636b5061796f75743c543a3a4163636f756e7449642c20543a3a42616c616e63653e3e000000445265776172644372656174654572726f721001286163636f756e745f6964000130543a3a4163636f756e7449640001186172676f6e73850101484f7074696f6e3c543a3a42616c616e63653e0001246f776e657273686970850101484f7074696f6e3c543a3a42616c616e63653e0001146572726f7268013444697370617463684572726f72000100047c54686520604576656e746020656e756d206f6620746869732070616c6c6574750100000279010079010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c2c426c6f636b5061796f757408244163636f756e74496401001c42616c616e63650118001401286163636f756e745f69640001244163636f756e7449640001246f776e657273686970c0011c42616c616e63650001186172676f6e73c0011c42616c616e636500012c7265776172645f747970657d01013c426c6f636b52657761726454797065000150626c6f636b5f7365616c5f617574686f72697479810101704f7074696f6e3c426c6f636b5365616c417574686f7269747949643e00007d010c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c3c426c6f636b5265776172645479706500010c144d696e657200000014566f7465720001002c50726f666974536861726500020000810104184f7074696f6e04045401b80108104e6f6e6500000010536f6d650400b80000010000850104184f7074696f6e04045401180108104e6f6e6500000010536f6d65040018000001000089010c2c70616c6c65745f6d696e741870616c6c6574144576656e7404045400010c2c426974636f696e4d696e740c01286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650000044c416e7920626974636f696e73206d696e746564284d696e696e674d696e74100118616d6f756e74180128543a3a42616c616e63650001247065725f6d696e6572180128543a3a42616c616e63650001246172676f6e5f637069910101204172676f6e4350490001246c6971756964697479180128543a3a42616c616e63650001084d0154686520616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e672e204e4f54453a206163636f756e74732062656c6f77204578697374656e7469616c204465706f7369746077696c6c206e6f742062652061626c6520746f206d696e74244d696e744572726f721401246d696e745f74797065950101204d696e74547970650001286163636f756e745f6964000130543a3a4163636f756e74496400011c7574786f5f69648d0101384f7074696f6e3c5574786f49643e000118616d6f756e74180128543a3a42616c616e63650001146572726f7268013444697370617463684572726f720002085d014572726f727320656e636f756e7465726564207768696c65206d696e74696e672e204d6f7374206f6674656e2064756520746f206d696e7420616d6f756e74207374696c6c2062656c6f77204578697374656e7469616c1c4465706f736974047c54686520604576656e746020656e756d206f6620746869732070616c6c65748d0104184f7074696f6e04045401300108104e6f6e6500000010536f6d65040030000001000091010c3473705f61726974686d657469632c66697865645f706f696e7424466978656449313238000004002d01011069313238000095010c2c70616c6c65745f6d696e741870616c6c6574204d696e74547970650001081c426974636f696e000000184d696e696e670001000099010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c65749d0114346672616d655f737570706f72741874726169747318746f6b656e73106d6973633442616c616e6365537461747573000108104672656500000020526573657276656400010000a10108346172676f6e5f72756e74696d654452756e74696d65486f6c64526561736f6e000118284d696e696e67536c6f740400a501017870616c6c65745f6d696e696e675f736c6f743a3a486f6c64526561736f6e000600185661756c74730400a901016470616c6c65745f7661756c74733a3a486f6c64526561736f6e00080030426974636f696e4c6f636b730400ad01018070616c6c65745f626974636f696e5f6c6f636b733a3a486f6c64526561736f6e00090030426c6f636b526577617264730400b101018070616c6c65745f626c6f636b5f726577617264733a3a486f6c64526561736f6e0013002054726561737572790400b501016c70616c6c65745f74726561737572793a3a486f6c64526561736f6e001f004843726f7373636861696e5472616e736665720400b901019870616c6c65745f63726f7373636861696e5f7472616e736665723a3a486f6c64526561736f6e00240000a5010c4870616c6c65745f6d696e696e675f736c6f741870616c6c657428486f6c64526561736f6e0001043c526567697374657241734d696e657200000000a9010c3470616c6c65745f7661756c74731870616c6c657428486f6c64526561736f6e00010c28456e7465725661756c74000000344f626c69676174696f6e4665650001003850656e64696e67436f6c6c65637400020000ad010c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c657428486f6c64526561736f6e0001044852656c65617365426974636f696e4c6f636b00000000b1010c5070616c6c65745f626c6f636b5f726577617264731870616c6c657428486f6c64526561736f6e000104404d617475726174696f6e506572696f6400000000b5010c3c70616c6c65745f74726561737572791870616c6c657428486f6c64526561736f6e00010454436f6e7472696275746564546f547265617375727900000000b9010c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657428486f6c64526561736f6e000108785472616e736665724f75744d696e74696e67417574686f726974795469700000008c4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7400010000bd010c3c70616c6c65745f62616c616e6365731870616c6c657438556e65787065637465644b696e640001083842616c616e636555706461746564000000544661696c6564546f4d75746174654163636f756e7400010000c1010c3c70616c6c65745f62616c616e6365731870616c6c6574144576656e740804540004490001781c456e646f77656408011c6163636f756e74000130543a3a4163636f756e744964000130667265655f62616c616e6365180128543a3a42616c616e6365000004b8416e206163636f756e74207761732063726561746564207769746820736f6d6520667265652062616c616e63652e20447573744c6f737408011c6163636f756e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650001083d01416e206163636f756e74207761732072656d6f7665642077686f73652062616c616e636520776173206e6f6e2d7a65726f206275742062656c6f77204578697374656e7469616c4465706f7369742c78726573756c74696e6720696e20616e206f75747269676874206c6f73732e205472616e736665720c011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650002044c5472616e73666572207375636365656465642e2842616c616e636553657408010c77686f000130543a3a4163636f756e74496400011066726565180128543a3a42616c616e636500030468412062616c616e6365207761732073657420627920726f6f742e20526573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000404e0536f6d652062616c616e63652077617320726573657276656420286d6f7665642066726f6d206672656520746f207265736572766564292e28556e726573657276656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000504e8536f6d652062616c616e63652077617320756e726573657276656420286d6f7665642066726f6d20726573657276656420746f2066726565292e4852657365727665526570617472696174656410011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014864657374696e6174696f6e5f7374617475739d0101185374617475730006084d01536f6d652062616c616e636520776173206d6f7665642066726f6d207468652072657365727665206f6620746865206669727374206163636f756e7420746f20746865207365636f6e64206163636f756e742ed846696e616c20617267756d656e7420696e64696361746573207468652064657374696e6174696f6e2062616c616e636520747970652e1c4465706f73697408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000704d8536f6d6520616d6f756e7420776173206465706f73697465642028652e672e20666f72207472616e73616374696f6e2066656573292e20576974686472617708010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650008041d01536f6d6520616d6f756e74207761732077697468647261776e2066726f6d20746865206163636f756e742028652e672e20666f72207472616e73616374696f6e2066656573292e1c536c617368656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e63650009040101536f6d6520616d6f756e74207761732072656d6f7665642066726f6d20746865206163636f756e742028652e672e20666f72206d69736265686176696f72292e184d696e74656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000a049c536f6d6520616d6f756e7420776173206d696e74656420696e746f20616e206163636f756e742e304d696e746564437265646974040118616d6f756e74180128543a3a42616c616e6365000b04e0536f6d6520637265646974207761732062616c616e63656420616e6420616464656420746f2074686520546f74616c49737375616e63652e184275726e656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000c049c536f6d6520616d6f756e7420776173206275726e65642066726f6d20616e206163636f756e742e284275726e656444656274040118616d6f756e74180128543a3a42616c616e6365000d04cc536f6d65206465627420686173206265656e2064726f707065642066726f6d2074686520546f74616c2049737375616e63652e2453757370656e64656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000e041501536f6d6520616d6f756e74207761732073757370656e6465642066726f6d20616e206163636f756e74202869742063616e20626520726573746f726564206c61746572292e20526573746f72656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365000f04a4536f6d6520616d6f756e742077617320726573746f72656420696e746f20616e206163636f756e742e20557067726164656404010c77686f000130543a3a4163636f756e74496400100460416e206163636f756e74207761732075706772616465642e18497373756564040118616d6f756e74180128543a3a42616c616e63650011042d01546f74616c2069737375616e63652077617320696e637265617365642062792060616d6f756e74602c206372656174696e6720612063726564697420746f2062652062616c616e6365642e2452657363696e646564040118616d6f756e74180128543a3a42616c616e63650012042501546f74616c2069737375616e636520776173206465637265617365642062792060616d6f756e74602c206372656174696e672061206465627420746f2062652062616c616e6365642e184c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500130460536f6d652062616c616e636520776173206c6f636b65642e20556e6c6f636b656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500140468536f6d652062616c616e63652077617320756e6c6f636b65642e1846726f7a656e08010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500150460536f6d652062616c616e6365207761732066726f7a656e2e1854686177656408010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500160460536f6d652062616c616e636520776173207468617765642e4c546f74616c49737375616e6365466f7263656408010c6f6c64180128543a3a42616c616e636500010c6e6577180128543a3a42616c616e6365001704ac5468652060546f74616c49737375616e6365602077617320666f72636566756c6c79206368616e6765642e1048656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500180480536f6d652062616c616e63652077617320706c61636564206f6e20686f6c642e284275726e656448656c640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001904a048656c642062616c616e636520776173206275726e65642066726f6d20616e206163636f756e742e385472616e736665724f6e486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001a04150141207472616e73666572206f662060616d6f756e7460206f6e20686f6c642066726f6d2060736f757263656020746f206064657374602077617320696e697469617465642e3c5472616e73666572416e64486f6c64100118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e000118736f75726365000130543a3a4163636f756e74496400011064657374000130543a3a4163636f756e74496400012c7472616e73666572726564180128543a3a42616c616e6365001b04090154686520607472616e73666572726564602062616c616e636520697320706c61636564206f6e20686f6c642061742074686520606465737460206163636f756e742e2052656c65617365640c0118726561736f6ea1010150543a3a52756e74696d65486f6c64526561736f6e00010c77686f000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e6365001c0490536f6d652062616c616e6365207761732072656c65617365642066726f6d20686f6c642e28556e65787065637465640400bd010138556e65787065637465644b696e64001d04b0416e20756e65787065637465642f646566656e73697665206576656e7420776173207472696767657265642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c5010c3c70616c6c65745f74785f70617573651870616c6c6574144576656e740404540001082843616c6c50617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000004b8546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f77207061757365642e3043616c6c556e70617573656404012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e000104c0546869732070616c6c65742c206f7220612073706563696669632063616c6c206973206e6f7720756e7061757365642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574c90100000408cd01cd0100cd010c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000d1010c6870616c6c65745f7472616e73616374696f6e5f7061796d656e741870616c6c6574144576656e74040454000104485472616e73616374696f6e466565506169640c010c77686f000130543a3a4163636f756e74496400012861637475616c5f66656518013042616c616e63654f663c543e00010c74697018013042616c616e63654f663c543e000008590141207472616e73616374696f6e20666565206061637475616c5f666565602c206f662077686963682060746970602077617320616464656420746f20746865206d696e696d756d20696e636c7573696f6e206665652c5c686173206265656e2070616964206279206077686f602e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d5010c3870616c6c65745f7574696c6974791870616c6c6574144576656e74000120404261746368496e746572727570746564080114696e64657810010c7533320001146572726f7268013444697370617463684572726f7200000855014261746368206f66206469737061746368657320646964206e6f7420636f6d706c6574652066756c6c792e20496e646578206f66206669727374206661696c696e6720646973706174636820676976656e2c2061734877656c6c20617320746865206572726f722e384261746368436f6d706c65746564000104c84261746368206f66206469737061746368657320636f6d706c657465642066756c6c792077697468206e6f206572726f722e604261746368436f6d706c65746564576974684572726f7273000204b44261746368206f66206469737061746368657320636f6d706c657465642062757420686173206572726f72732e344974656d436f6d706c657465640003041d01412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206e6f206572726f722e284974656d4661696c65640401146572726f7268013444697370617463684572726f720004041101412073696e676c65206974656d2077697468696e2061204261746368206f6620646973706174636865732068617320636f6d706c657465642077697468206572726f722e30446973706174636865644173040118726573756c748c01384469737061746368526573756c7400050458412063616c6c2077617320646973706174636865642e444966456c73654d61696e53756363657373000604644d61696e2063616c6c2077617320646973706174636865642e504966456c736546616c6c6261636b43616c6c65640401286d61696e5f6572726f7268013444697370617463684572726f72000704845468652066616c6c6261636b2063616c6c2077617320646973706174636865642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574d9010c2c70616c6c65745f7375646f1870616c6c6574144576656e7404045400011014537564696404012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e00047041207375646f2063616c6c206a75737420746f6f6b20706c6163652e284b65794368616e67656408010c6f6c64bc01504f7074696f6e3c543a3a4163636f756e7449643e04b4546865206f6c64207375646f206b657920286966206f6e65207761732070726576696f75736c7920736574292e010c6e6577000130543a3a4163636f756e7449640488546865206e6577207375646f206b657920286966206f6e652077617320736574292e010478546865207375646f206b657920686173206265656e20757064617465642e284b657952656d6f76656400020480546865206b657920776173207065726d616e656e746c792072656d6f7665642e285375646f4173446f6e6504012c7375646f5f726573756c748c01384469737061746368526573756c7404b454686520726573756c74206f66207468652063616c6c206d61646520627920746865207375646f20757365722e0304c841205b7375646f5f61735d2850616c6c65743a3a7375646f5f6173292063616c6c206a75737420746f6f6b20706c6163652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574dd010c3c70616c6c65745f74726561737572791870616c6c6574144576656e740404540001248c436f756c644e6f74446973747269627574654561726e696e6773546f426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f72000004f4416e206572726f72206f63637572726564207768696c6520706179696e67206672616d65206561726e696e677320666f72206120626f6e64206c6f742e88436f756c644e6f745472616e73666572546f547265617375727952657365727665730c01206672616d655f696430011c4672616d654964000118616d6f756e74180128543a3a42616c616e636500013864697370617463685f6572726f7268013444697370617463684572726f720001041501416e206572726f72206f63637572726564207768696c65206d6f76696e67206269642d706f6f6c2066756e647320696e746f2074726561737572792072657365727665732e604672616d654561726e696e677344697374726962757465641001206672616d655f696430011c4672616d6549640001506269645f706f6f6c5f6469737472696275746564180128543a3a42616c616e636500014474726561737572795f7265736572766573180128543a3a42616c616e636500015070617274696369706174696e675f7661756c747310010c753332000204804672616d65206561726e696e677320776572652064697374726962757465642e5c4672616d655661756c744361706974616c4c6f636b65640c01206672616d655f696430011c4672616d654964000150746f74616c5f656c696769626c655f626f6e64731801107531323800015070617274696369706174696e675f7661756c747310010c753332000304c05468652063757272656e74206672616d652773207661756c74206361706974616c20776173206c6f636b656420696e2e58436f756c644e6f7452656c65617365426f6e644c6f741801206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f744964000118616d6f756e74180128543a3a42616c616e63650001286163636f756e745f6964000130543a3a4163636f756e74496400013864697370617463685f6572726f7268013444697370617463684572726f72000404b4416e206572726f72206f63637572726564207768696c652072656c656173696e67206120626f6e64206c6f742e40426f6e644c6f745075726368617365641001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000504c04120626f6e6420707572636861736520656e74657265642061207661756c742773206163636570746564206c6973742e5c426f6e644c6f7452656c656173655363686564756c65641801207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e647300014072656c656173655f6672616d655f696430011c4672616d654964000118726561736f6ee1010144426f6e6452656c65617365526561736f6e00060411014120626f6e64206c6f74207761732072656d6f7665642066726f6d20667574757265206672616d657320616e64207363686564756c656420666f722072656c656173652e3c426f6e644c6f7452656c65617365641401206672616d655f696430011c4672616d6549640001207661756c745f696410011c5661756c74496400012c626f6e645f6c6f745f6964300124426f6e644c6f7449640001286163636f756e745f6964000130543a3a4163636f756e744964000114626f6e6473100114426f6e6473000704604120626f6e64206c6f74207761732072656c65617365642e74456e63756d6265726564426f6e644d6963726f676f6e734275726e65640c01286163636f756e745f6964000130543a3a4163636f756e7449640001346275726e65645f616d6f756e74180128543a3a42616c616e636500013c72656c65617365645f616d6f756e74180128543a3a42616c616e63650008084d01456e63756d6265726564207472656173757279206261636b696e6720776173206275726e656420616e6420616e79206e6f2d6c6f6e6765722d6e6565646564206672616374696f6e616c20686f6c64207761732472657475726e65642e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e1010c3c70616c6c65745f74726561737572791870616c6c657444426f6e6452656c65617365526561736f6e00010c3c557365724c69717569646174696f6e0000001842756d7065640001002c5661756c74436c6f73656400020000e5010c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144576656e7404045400010828466565536b69707065640401186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e0000047841207472616e73616374696f6e206665652077617320736b69707065642e3046656544656c6567617465640c01186f726967696ee90101c03c543a3a52756e74696d654f726967696e206173204f726967696e54726169743e3a3a50616c6c6574734f726967696e00011066726f6d000130543a3a4163636f756e744964000108746f000130543a3a4163636f756e7449640001047c41207472616e73616374696f6e20666565207761732064656c656761746564047c54686520604576656e746020656e756d206f6620746869732070616c6c6574e90108346172676f6e5f72756e74696d65304f726967696e43616c6c65720001041873797374656d0400ed0101746672616d655f73797374656d3a3a4f726967696e3c52756e74696d653e00000000ed010c346672616d655f737570706f7274206469737061746368245261774f726967696e04244163636f756e7449640100011010526f6f74000000185369676e656404000001244163636f756e744964000100104e6f6e6500020028417574686f72697a656400030000f1010c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144576656e7404045400011c704f7065726174696f6e616c4163636f756e745265676973746572656414014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e7449640001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e000004fc416e206f7065726174696f6e616c206163636f756e74207761732072656769737465726564207769746820697473206c696e6b6564206163636f756e74732e584163636f756e7457656e744f7065726174696f6e616c04011c6163636f756e74000130543a3a4163636f756e7449640001047c4163636f756e7420686173206265636f6d65206f7065726174696f6e616c2e5c4f7065726174696f6e616c5265776172644561726e65640c011c6163636f756e74000130543a3a4163636f756e74496400012c7265776172645f6b696e64f50101544f7065726174696f6e616c5265776172644b696e64000118616d6f756e74180128543a3a42616c616e63650002040d014120726577617264206973206561726e656420666f7220616e206f7065726174696f6e616c206163636f756e742c20627574206e6f742079657420636c61696d65642e644f7065726174696f6e616c52657761726473436c61696d656410014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000120636c61696d616e74000130543a3a4163636f756e744964000118616d6f756e74180128543a3a42616c616e636500014472656d61696e696e675f70656e64696e67180128543a3a42616c616e6365000304f4436c61696d61626c65206f7065726174696f6e616c20726577617264732077657265207061696420746f2061206d616e61676564206163636f756e742e5052657761726473436f6e6669675570646174656408016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e63650004048852657761726420636f6e6669672076616c756573207765726520757064617465642e644f7065726174696f6e616c50726f6772657373466f726365641c011c6163636f756e74000130543a3a4163636f756e74496400016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c0001586f627365727665645f626974636f696e5f746f74616c180128543a3a42616c616e63650001686f627365727665645f6d696e696e675f736561745f746f74616c10010c753332000504a04f7065726174696f6e616c2070726f67726573732077617320666f7263656420627920726f6f742e58456e637279707465645365727665725570646174656408011c73706f6e736f72000130543a3a4163636f756e74496400011c73706f6e736565000130543a3a4163636f756e744964000604f4412073706f6e736f7220757064617465642074686520656e6372797074656420736572766572207061796c6f616420666f7220612073706f6e7365652e047c54686520604576656e746020656e756d206f6620746869732070616c6c6574f5010c406172676f6e5f7072696d6974697665732470726f766964657273544f7065726174696f6e616c5265776172644b696e640001082841637469766174696f6e00000034526566657272616c426f6e757300010000f9010c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144576656e7404045400011050426561636f6e486561646572496d706f72746564080128626c6f636b5f6861736834011048323536000110736c6f7430010c75363400000074457865637574696f6e486561646572416e63686f72496d706f72746564080128626c6f636b5f68617368340148457865637574696f6e426c6f636b48617368000130626c6f636b5f6e756d626572300150457865637574696f6e426c6f636b4e756d6265720001005053796e63436f6d6d697474656555706461746564040118706572696f6430010c753634000200504f7065726174696e674d6f64654368616e6765640401106d6f6465fd01014842617369634f7065726174696e674d6f646500030444536574204f7065726174696e674d6f6465047c54686520604576656e746020656e756d206f6620746869732070616c6c6574fd010c6070616c6c65745f657468657265756d5f76657269666965721474797065734842617369634f7065726174696e674d6f6465000108184e6f726d616c0000001848616c7465640001000001020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144576656e74040454000158585472616e73666572546f4172676f6e536574746c6564080130736f757263655f636861696e0502012c536f75726365436861696e0001207472616e73666572090201685472616e73666572546f4172676f6e41637469766974793c543e0000040d014120605472616e73666572546f4172676f6e5374617274656460206163746976697479207761732070726f76656e20616e6420736574746c6564206c6f63616c6c792e6c476c6f62616c49737375616e6365436f756e63696c466f7263656408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e000130636f756e63696c5f68617368340110483235360001042901526f6f7420666f7263652d736574207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20666f7220612064657374696e6174696f6e20636861696e2e5c436f756e63696c5369676e6572526567697374657265640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300002040d01416e206163636f756e7420726567697374657265642069747320636f756e63696c207369676e657220666f72206f6e652064657374696e6174696f6e20636861696e2e6c436f756e63696c5369676e6572526f746174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d020110483136300003042d01416e206163636f756e74207175657565642061207265706c6163656d656e7420636f756e63696c207369676e657220666f7220746865206e65787420636f756e63696c207570646174652e684d696e74696e67417574686f726974795265676973746572656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001286163636f756e745f6964000130543a3a4163636f756e744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650004045901416e206f70657261746f72206163636f756e7420726567697374657265642061204d696e74696e6720417574686f7269747920616e642071756575656420697420666f7220636f756e63696c20617070726f76616c2e884d696e74696e67417574686f72697479446561637469766174696f6e5175657565640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e63650005045d01416e206f70657261746f722071756575656420746865207369676e65722d617574686f72697a656420457468657265756d20646561637469766174696f6e20666f722061204d696e74696e6720417574686f726974792e7c4d696e696d756d4d696e74696e67417574686f7269747956616c756553657408014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565180128543a3a42616c616e63650006084501526f6f74207570646174656420746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e678c417574686f72697479206f6e206f6e652064657374696e6174696f6e20636861696e2eb44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e6753657404014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0007085101526f6f742075706461746564207468652070726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f722061637469766174696f6e2062617463686573206f6e206f6e654864657374696e6174696f6e20636861696e2e685175657565456e747279417070726f76616c5265636f726465640c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500080415014120636f756e63696c206d656d626572207265636f7264656420617070726f76616c20666f7220612071756575656420636f756e63696c2075706461746520656e7472792e5c5175657565456e747279417070726f76616c52656164790c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001187461726765741902015c436f756e63696c417070726f76616c5461726765744964000150617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e6365000904d45468652071756575656420636f756e63696c2075706461746520656e7472792072656163686564206c6f63616c2071756f72756d2e8c4d696e74696e67417574686f7269747941637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000a042101412070726f76656e20457468657265756d2061637469766174696f6e2066696c6c6564207468652070656e64696e67206c6f63616c2061637469766174696f6e206669656c64732e8c4d696e74696e67417574686f7269747941637469766174696f6e436f6d706c6574656410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000016072656c617965725f6172676f6e5f6163636f756e745f6964000130543a3a4163636f756e74496400014072657061796d656e745f616d6f756e74180128543a3a42616c616e6365000b084101412070726f76656e2061637469766174696f6e2070616964206f722072656c6561736564207468652068656c642072656c61796572207265696d62757273656d656e7420616e64206d6164652074686544617574686f7269747920757361626c652e944d696e74696e67417574686f72697479446561637469766174696f6e46696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630000c084901412070726f76656e20457468657265756d20646561637469766174696f6e2072656c656173656420636f6c6c61746572616c20616e642072656d6f76656420746865206c6f63616c20617574686f726974791c7265636f72642e444761746577617953796e63506175736564080130736f757263655f636861696e0502012c536f75726365436861696e00011470617573651d0201404761746577617953796e635061757365000d044d01476174657761792070726f6f66206170706c69636174696f6e20706175736564206f6e6520736f7572636520636861696e20617420612073706563696669632063616e6f6e6963616c2061637469766974792e3c47617465776179556e706175736564040130736f757263655f636861696e0502012c536f75726365436861696e000e04a0526f6f74206d616e75616c6c7920756e706175736564206f6e6520736f7572636520636861696e2e50476174657761795374617465416476616e636564080130736f757263655f636861696e0502012c536f75726365436861696e000134676174657761795f73746174652502013c4761746577617953746174653c543e000f042d015468652073746f72656420676174657761792d737461746520736e617073686f7420616476616e63656420616674657220612070726f76656e20636f6e746967756f75732062617463682e485472616e736665724f75745374617274656418014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7472616e736665725f6964340110483235360001286163636f756e745f6964000130543a3a4163636f756e74496400011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650010046841207472616e73666572206f757420776173206f70656e65642e585472616e73666572436f6c6c61746572616c697a656410012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d0201104831363000014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365001104c041206d696e74696e6720617574686f726974792075706461746564207472616e7366657220636f6c6c61746572616c2e405472616e736665724f7574526561647904012c7472616e736665725f6964340110483235360012049441207472616e7366657220697320726561647920666f722066696e616c697a6174696f6e2e505472616e736665724f757446696e616c697a6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001304b441207472616e73666572207761732066696e616c697a6564206f6e2074686520736f7572636520636861696e2e4c5472616e736665724f757443616e63656c6564080130736f757263655f636861696e0502012c536f75726365436861696e00012c7472616e736665725f696434011048323536001404b041207472616e73666572207761732063616e63656c6564206f6e2074686520736f7572636520636861696e2e745472616e73666572436f6c6c61746572616c496e76616c69646174656408012c7472616e736665725f69643401104832353600015c64657374696e6174696f6e5f7369676e696e675f6b65790d02011048313630001504c4412070656e64696e6720636f6c6c61746572616c207265736572766174696f6e2077617320696e76616c6964617465642e047c54686520604576656e746020656e756d206f6620746869732070616c6c657405020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c536f75726365436861696e00010420457468657265756d0000000009020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c5472616e73666572546f4172676f6e41637469766974790404540000140158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500011066726f6d0d0201104831363000011461737365741502012441737365744b696e64000108746f000130543a3a4163636f756e744964000118616d6f756e74c00128543a3a42616c616e636500000d02083c7072696d69746976655f7479706573104831363000000400110201205b75383b2032305d0000110200000314000000080015020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742441737365744b696e64000108144172676f6e0000001c4172676f6e6f740001000019020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65745c436f756e63696c417070726f76616c546172676574496400010c684d696e74696e67417574686f7269747941637469766174696f6e04000d02011048313630000000704d696e74696e67417574686f72697479446561637469766174696f6e04000d0201104831363000010074476c6f62616c49737375616e6365436f756e63696c526f746174696f6e040034011048323536000200001d020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404761746577617953796e63506175736500000c01806c6173745f676f6f645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001746661696c65645f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e6365000118726561736f6e210201584761746577617953796e635061757365526561736f6e000021020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574584761746577617953796e635061757365526561736f6e000128184d616e75616c000000604d616c666f726d656447617465776179416374697669747900010040556e737570706f72746564546f6b656e000200604d696e74696e67417574686f726974794e6f74466f756e640003007c556e65787065637465644d696e74696e67417574686f726974795374617465000400604d696e74696e67417574686f726974794d69736d61746368000500c44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67000600ac4d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e744d69736d6174636800070074476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e640008004447617465776179537461746544726966740009000025020c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574304761746577617953746174650404540000100158676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e63650001546172676f6e5f617070726f76616c735f6e6f6e63652c014c4172676f6e417070726f76616c734e6f6e63650001446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000290208306672616d655f73797374656d14506861736500010c384170706c7945787472696e736963040010010c7533320000003046696e616c697a6174696f6e00010038496e697469616c697a6174696f6e000200002d0200000234003102000002350200350200000408101000390208306672616d655f73797374656d584c61737452756e74696d6555706772616465496e666f0000080130737065635f76657273696f6ed4014c636f6465633a3a436f6d706163743c7533323e000124737065635f6e616d653d020144436f773c277374617469632c207374723e00003d02040c436f77040454014102000400410200000041020000050200450208306672616d655f73797374656d60436f646555706772616465417574686f72697a6174696f6e0404540000080124636f64655f6861736834011c543a3a48617368000134636865636b5f76657273696f6e200110626f6f6c000049020c306672616d655f73797374656d1870616c6c65741043616c6c04045400012c1872656d61726b04011872656d61726b38011c5665633c75383e00000c684d616b6520736f6d65206f6e2d636861696e2072656d61726b2e008843616e20626520657865637574656420627920657665727920606f726967696e602e387365745f686561705f7061676573040114706167657330010c753634000104f853657420746865206e756d626572206f6620706167657320696e2074686520576562417373656d626c7920656e7669726f6e6d656e74277320686561702e207365745f636f6465040110636f646538011c5665633c75383e0002046453657420746865206e65772072756e74696d6520636f64652e5c7365745f636f64655f776974686f75745f636865636b73040110636f646538011c5665633c75383e000310190153657420746865206e65772072756e74696d6520636f646520776974686f757420646f696e6720616e7920636865636b73206f662074686520676976656e2060636f6465602e0051014e6f746520746861742072756e74696d652075706772616465732077696c6c206e6f742072756e20696620746869732069732063616c6c656420776974682061206e6f742d696e6372656173696e6720737065632076657273696f6e212c7365745f73746f726167650401146974656d734d0201345665633c4b657956616c75653e0004046853657420736f6d65206974656d73206f662073746f726167652e306b696c6c5f73746f726167650401106b657973550201205665633c4b65793e000504744b696c6c20736f6d65206974656d732066726f6d2073746f726167652e2c6b696c6c5f70726566697808011870726566697838010c4b657900011c7375626b65797310010c75333200061011014b696c6c20616c6c2073746f72616765206974656d7320776974682061206b657920746861742073746172747320776974682074686520676976656e207072656669782e0039012a2a4e4f54453a2a2a2057652072656c79206f6e2074686520526f6f74206f726967696e20746f2070726f7669646520757320746865206e756d626572206f66207375626b65797320756e6465723d0174686520707265666978207765206172652072656d6f76696e6720746f2061636375726174656c792063616c63756c6174652074686520776569676874206f6620746869732066756e6374696f6e2e4472656d61726b5f776974685f6576656e7404011872656d61726b38011c5665633c75383e000704a44d616b6520736f6d65206f6e2d636861696e2072656d61726b20616e6420656d6974206576656e742e44617574686f72697a655f75706772616465040124636f64655f6861736834011c543a3a486173680009106101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e80617574686f72697a655f757067726164655f776974686f75745f636865636b73040124636f64655f6861736834011c543a3a48617368000a206101417574686f72697a6520616e207570677261646520746f206120676976656e2060636f64655f686173686020666f72207468652072756e74696d652e205468652072756e74696d652063616e20626520737570706c696564186c617465722e005d015741524e494e473a205468697320617574686f72697a657320616e207570677261646520746861742077696c6c2074616b6520706c61636520776974686f757420616e792073616665747920636865636b732c20666f7259016578616d706c652074686174207468652073706563206e616d652072656d61696e73207468652073616d6520616e642074686174207468652076657273696f6e206e756d62657220696e637265617365732e204e6f74f07265636f6d6d656e64656420666f72206e6f726d616c207573652e205573652060617574686f72697a655f757067726164656020696e73746561642e007c546869732063616c6c20726571756972657320526f6f74206f726967696e2e606170706c795f617574686f72697a65645f75706772616465040110636f646538011c5665633c75383e000b24550150726f766964652074686520707265696d616765202872756e74696d652062696e617279292060636f64656020666f7220616e2075706772616465207468617420686173206265656e20617574686f72697a65642e00490149662074686520617574686f72697a6174696f6e20726571756972656420612076657273696f6e20636865636b2c20746869732063616c6c2077696c6c20656e73757265207468652073706563206e616d65e872656d61696e7320756e6368616e67656420616e6420746861742074686520737065632076657273696f6e2068617320696e637265617365642e005901446570656e64696e67206f6e207468652072756e74696d65277320604f6e536574436f64656020636f6e66696775726174696f6e2c20746869732066756e6374696f6e206d6179206469726563746c79206170706c791101746865206e65772060636f64656020696e207468652073616d6520626c6f636b206f7220617474656d707420746f207363686564756c652074686520757067726164652e0060416c6c206f726967696e732061726520616c6c6f7765642e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e4d020000025102005102000004083838005502000002380059020c306672616d655f73797374656d186c696d69747330426c6f636b5765696768747300000c0128626173655f626c6f636b2801185765696768740001246d61785f626c6f636b2801185765696768740001247065725f636c6173735d0201845065724469737061746368436c6173733c57656967687473506572436c6173733e00005d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c617373040454016102000c01186e6f726d616c610201045400012c6f7065726174696f6e616c61020104540001246d616e6461746f72796102010454000061020c306672616d655f73797374656d186c696d6974733c57656967687473506572436c6173730000100138626173655f65787472696e7369632801185765696768740001346d61785f65787472696e736963650201384f7074696f6e3c5765696768743e0001246d61785f746f74616c650201384f7074696f6e3c5765696768743e0001207265736572766564650201384f7074696f6e3c5765696768743e0000650204184f7074696f6e04045401280108104e6f6e6500000010536f6d65040028000001000069020c306672616d655f73797374656d186c696d6974732c426c6f636b4c656e677468000008010c6d61786d0201545065724469737061746368436c6173733c7533323e00013c6d61785f6865616465725f73697a657102012c4f7074696f6e3c7533323e00006d020c346672616d655f737570706f7274206469737061746368405065724469737061746368436c6173730404540110000c01186e6f726d616c1001045400012c6f7065726174696f6e616c100104540001246d616e6461746f7279100104540000710204184f7074696f6e04045401100108104e6f6e6500000010536f6d6504001000000100007502082873705f776569676874733c52756e74696d65446257656967687400000801107265616430010c753634000114777269746530010c75363400007902082873705f76657273696f6e3852756e74696d6556657273696f6e0000200124737065635f6e616d653d020144436f773c277374617469632c207374723e000124696d706c5f6e616d653d020144436f773c277374617469632c207374723e000144617574686f72696e675f76657273696f6e10010c753332000130737065635f76657273696f6e10010c753332000130696d706c5f76657273696f6e10010c753332000110617069737d02011c4170697356656300014c7472616e73616374696f6e5f76657273696f6e10010c75333200013873797374656d5f76657273696f6e080108753800007d02040c436f77040454018102000400810200000081020000028502008502000004088902100089020000030800000008008d020c306672616d655f73797374656d1870616c6c6574144572726f720404540001243c496e76616c6964537065634e616d650000081101546865206e616d65206f662073706563696669636174696f6e20646f6573206e6f74206d61746368206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e685370656356657273696f6e4e65656473546f496e63726561736500010841015468652073706563696669636174696f6e2076657273696f6e206973206e6f7420616c6c6f77656420746f206465637265617365206265747765656e207468652063757272656e742072756e74696d6550616e6420746865206e65772072756e74696d652e744661696c6564546f4578747261637452756e74696d6556657273696f6e00020cec4661696c656420746f2065787472616374207468652072756e74696d652076657273696f6e2066726f6d20746865206e65772072756e74696d652e0009014569746865722063616c6c696e672060436f72655f76657273696f6e60206f72206465636f64696e67206052756e74696d6556657273696f6e60206661696c65642e4c4e6f6e44656661756c74436f6d706f73697465000304fc537569636964652063616c6c6564207768656e20746865206163636f756e7420686173206e6f6e2d64656661756c7420636f6d706f7369746520646174612e3c4e6f6e5a65726f526566436f756e74000404350154686572652069732061206e6f6e2d7a65726f207265666572656e636520636f756e742070726576656e74696e6720746865206163636f756e742066726f6d206265696e67207075726765642e3043616c6c46696c7465726564000504d0546865206f726967696e2066696c7465722070726576656e74207468652063616c6c20746f20626520646973706174636865642e6c4d756c7469426c6f636b4d6967726174696f6e734f6e676f696e67000604550141206d756c74692d626c6f636b206d6967726174696f6e206973206f6e676f696e6720616e642070726576656e7473207468652063757272656e7420636f64652066726f6d206265696e67207265706c616365642e444e6f7468696e67417574686f72697a6564000704584e6f207570677261646520617574686f72697a65642e30556e617574686f72697a656400080494546865207375626d697474656420636f6465206973206e6f7420617574686f72697a65642e046c4572726f7220666f72207468652053797374656d2070616c6c657491020c406172676f6e5f7072696d6974697665731c6469676573747324446967657374736574084c4e6f7465626f6f6b5665726966794572726f72011901244163636f756e7449640100001c0118617574686f720001244163636f756e744964000128626c6f636b5f766f74659502013c426c6f636b566f7465446967657374000128766f74696e675f6b6579990201744f7074696f6e3c506172656e74566f74696e674b65794469676573743e000128666f726b5f706f776572a50201444f7074696f6e3c466f726b506f7765723e0001286672616d655f696e666fb90201444f7074696f6e3c4672616d65496e666f3e0001107469636bc10201285469636b4469676573740001246e6f7465626f6f6b73c502018c4e6f7465626f6f6b4469676573743c4e6f7465626f6f6b5665726966794572726f723e000095020c406172676f6e5f7072696d6974697665731c646967657374733c426c6f636b566f74654469676573740000080130766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c766f7465735f636f756e74d4010c7533320000990204184f7074696f6e040454019d020108104e6f6e6500000010536f6d6504009d0200000100009d020c406172676f6e5f7072696d6974697665731c6469676573747354506172656e74566f74696e674b65794469676573740000040144706172656e745f766f74696e675f6b6579a10201444f7074696f6e3c566f74696e674b65793e0000a10204184f7074696f6e04045401340108104e6f6e6500000010536f6d650400340000010000a50204184f7074696f6e04045401a9020108104e6f6e6500000010536f6d650400a9020000010000a9020c406172676f6e5f7072696d69746976657328666f726b5f706f77657224466f726b506f77657200001c013869735f6c61746573745f766f7465200110626f6f6c0001246e6f7465626f6f6b732c010c753634000130766f74696e675f706f776572ad020110553235360001347365616c5f737472656e677468ad02011055323536000160746f74616c5f636f6d707574655f646966666963756c7479ad0201105532353600014c766f74655f637265617465645f626c6f636b73c00110753132380001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000ad02083c7072696d69746976655f7479706573105532353600000400b10201205b7536343b20345d0000b102000003040000003000b50204184f7074696f6e04045401ad020108104e6f6e6500000010536f6d650400ad020000010000b90204184f7074696f6e04045401bd020108104e6f6e6500000010536f6d650400bd020000010000bd020c406172676f6e5f7072696d6974697665731c64696765737473244672616d65496e666f00000c01206672616d655f69642c011c4672616d6549640001706672616d655f7265776172645f7469636b735f72656d61696e696e67d4010c75333200013069735f6e65775f6672616d65200110626f6f6c0000c1020c406172676f6e5f7072696d697469766573107469636b285469636b446967657374000004003001105469636b0000c5020c406172676f6e5f7072696d6974697665731c64696765737473384e6f7465626f6f6b446967657374042c5665726966794572726f72011901000401246e6f7465626f6f6b73c90201ec426f756e6465645665633c4e6f7465626f6f6b4175646974526573756c743c5665726966794572726f723e2c20436f6e73745533323c3235363e3e0000c9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401cd02045300000400d50201185665633c543e0000cd020c406172676f6e5f7072696d697469766573206e6f7465626f6f6b4c4e6f7465626f6f6b4175646974526573756c74042c5665726966794572726f72011901001001246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00014c61756469745f66697273745f6661696c757265d102014c4f7074696f6e3c5665726966794572726f723e0000d10204184f7074696f6e0404540119010108104e6f6e6500000010536f6d65040019010000010000d502000002cd0200d9020c3870616c6c65745f646967657374731870616c6c6574144572726f72040454000134604475706c6963617465426c6f636b566f74654469676573740000047c4475706c696361746520426c6f636b566f746544696765737420666f756e64544475706c6963617465417574686f72446967657374000104704475706c696361746520417574686f7244696765737420666f756e644c4475706c69636174655469636b446967657374000204684475706c6963617465205469636b44696765737420666f756e64784475706c6963617465506172656e74566f74696e674b6579446967657374000304944475706c696361746520506172656e74566f74696e674b657944696765737420666f756e645c4475706c69636174654e6f7465626f6f6b446967657374000404784475706c6963617465204e6f7465626f6f6b44696765737420666f756e64604475706c6963617465466f726b506f7765724469676573740005047c4475706c696361746520466f726b506f77657244696765737420666f756e64584d697373696e67426c6f636b566f74654469676573740006045c4d697373696e6720426c6f636b566f74654469676573744c4d697373696e67417574686f72446967657374000704504d697373696e6720417574686f72446967657374444d697373696e675469636b446967657374000804484d697373696e67205469636b446967657374704d697373696e67506172656e74566f74696e674b6579446967657374000904744d697373696e6720506172656e74566f74696e674b6579446967657374544d697373696e674e6f7465626f6f6b446967657374000a04584d697373696e67204e6f7465626f6f6b44696765737450436f756c644e6f744465636f6465446967657374000b04604661696c656420746f206465636f64652064696765737473604475706c69636174654672616d65496e666f446967657374000c04644475706c6963617465204672616d65496e666f20666f756e64048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd020c4070616c6c65745f74696d657374616d701870616c6c65741043616c6c0404540001040c73657404010c6e6f772c0124543a3a4d6f6d656e7400004c54536574207468652063757272656e742074696d652e005501546869732063616c6c2073686f756c6420626520696e766f6b65642065786163746c79206f6e63652070657220626c6f636b2e2049742077696c6c2070616e6963206174207468652066696e616c697a6174696f6ed470686173652c20696620746869732063616c6c206861736e2774206265656e20696e766f6b656420627920746861742074696d652e0041015468652074696d657374616d702073686f756c642062652067726561746572207468616e207468652070726576696f7573206f6e652062792074686520616d6f756e7420737065636966696564206279685b60436f6e6669673a3a4d696e696d756d506572696f64605d2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f4e6f6e655f2e0051015468697320646973706174636820636c617373206973205f4d616e6461746f72795f20746f20656e73757265206974206765747320657865637574656420696e2074686520626c6f636b2e204265206177617265510174686174206368616e67696e672074686520636f6d706c6578697479206f6620746869732063616c6c20636f756c6420726573756c742065786861757374696e6720746865207265736f757263657320696e206184626c6f636b20746f206578656375746520616e79206f746865722063616c6c732e0034232320436f6d706c657869747931012d20604f2831296020284e6f7465207468617420696d706c656d656e746174696f6e73206f6620604f6e54696d657374616d7053657460206d75737420616c736f20626520604f283129602955012d20312073746f72616765207265616420616e6420312073746f72616765206d75746174696f6e2028636f64656320604f283129602062656361757365206f6620604469645570646174653a3a74616b656020696e402020606f6e5f66696e616c697a656029d42d2031206576656e742068616e646c657220606f6e5f74696d657374616d705f736574602e204d75737420626520604f283129602e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ee10200000408000400e502083c70616c6c65745f6d756c7469736967204d756c7469736967102c426c6f636b4e756d62657201101c42616c616e63650118244163636f756e7449640100304d6178417070726f76616c7300001001107768656e88015854696d65706f696e743c426c6f636b4e756d6265723e00011c6465706f73697418011c42616c616e63650001246465706f7369746f720001244163636f756e744964000124617070726f76616c73e902018c426f756e6465645665633c4163636f756e7449642c204d6178417070726f76616c733e0000e9020c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000ed020000020000f1020c3c70616c6c65745f6d756c74697369671870616c6c65741043616c6c0404540001145061735f6d756c74695f7468726573686f6c645f310801446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000305101496d6d6564696174656c792064697370617463682061206d756c74692d7369676e61747572652063616c6c207573696e6720612073696e676c6520617070726f76616c2066726f6d207468652063616c6c65722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e003d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f662074686501016d756c74692d7369676e61747572652c2062757420646f206e6f7420706172746963697061746520696e2074686520617070726f76616c2070726f636573732e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e00b8526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c742e0034232320436f6d706c657869747919014f285a202b204329207768657265205a20697320746865206c656e677468206f66207468652063616c6c20616e6420432069747320657865637574696f6e207765696768742e2061735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0001286d61785f7765696768742801185765696768740001a85501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e003d012a2a49662074686520617070726f76616c207468726573686f6c64206973206d65742028696e636c7564696e67207468652073656e646572277320617070726f76616c292c20746869732077696c6c4501696d6d6564696174656c792065786563757465207468652063616c6c2e2a2a205468697320697320746865206f6e6c792077617920746f20657865637574652061206d756c74697369672063616c6c202dc060617070726f76655f61735f6d756c7469602077696c6c206e65766572207472696767657220657865637574696f6e2e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2e882d206063616c6c603a205468652063616c6c20746f2062652065786563757465642e004d014e4f54453a20466f7220696e7465726d65646961746520617070726f76616c7320286e6f74207468652066696e616c20617070726f76616c292c20796f752073686f756c642067656e6572616c6c7920757365450160617070726f76655f61735f6d756c74696020696e73746561642c2073696e6365206974206f6e6c7920726571756972657320612068617368206f66207468652063616c6c20616e64206973206d6f726528656666696369656e742e005901526573756c74206973206571756976616c656e7420746f20746865206469737061746368656420726573756c7420696620607468726573686f6c64602069732065786163746c79206031602e204f746865727769736555016f6e20737563636573732c20726573756c7420697320604f6b6020616e642074686520726573756c742066726f6d2074686520696e746572696f722063616c6c2c206966206974207761732065786563757465642cdc6d617920626520666f756e6420696e20746865206465706f736974656420604d756c7469736967457865637574656460206576656e742e0034232320436f6d706c6578697479502d20604f2853202b205a202b2043616c6c29602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2e21012d204f6e652063616c6c20656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285a296020776865726520605a602069732074782d6c656e2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e6c2d2054686520776569676874206f6620746865206063616c6c602e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e40617070726f76655f61735f6d756c74691401247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00013c6d617962655f74696d65706f696e742d0501904f7074696f6e3c54696d65706f696e743c426c6f636b4e756d626572466f723c543e3e3e00012463616c6c5f686173680401205b75383b2033325d0001286d61785f7765696768742801185765696768740002985501526567697374657220617070726f76616c20666f72206120646973706174636820746f206265206d6164652066726f6d20612064657465726d696e697374696320636f6d706f73697465206163636f756e74206966f8617070726f766564206279206120746f74616c206f6620607468726573686f6c64202d203160206f6620606f746865725f7369676e61746f72696573602e0039012a2a546869732066756e6374696f6e2077696c6c204e455645522065786563757465207468652063616c6c2c206576656e2069662074686520617070726f76616c207468726573686f6c642069735101726561636865642e2a2a204974206f6e6c792072656769737465727320617070726f76616c2e20546f2061637475616c6c792065786563757465207468652063616c6c2c206061735f6d756c746960206d757374f062652063616c6c65642077697468207468652066756c6c2063616c6c206461746120627920616e79206f6620746865207369676e61746f726965732e004d01546869732066756e6374696f6e206973206d6f726520656666696369656e74207468616e206061735f6d756c74696020666f7220696e7465726d65646961746520617070726f76616c732073696e6365206974d06f6e6c79207265717569726573207468652063616c6c20686173682c206e6f74207468652066756c6c2063616c6c20646174612e002d015061796d656e743a20604465706f73697442617365602077696c6c20626520726573657276656420696620746869732069732074686520666972737420617070726f76616c2c20706c75733d01607468726573686f6c64602074696d657320604465706f736974466163746f72602e2049742069732072657475726e6564206f6e636520746869732064697370617463682068617070656e73206f723469732063616e63656c6c65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e59012d20606d617962655f74696d65706f696e74603a20496620746869732069732074686520666972737420617070726f76616c2c207468656e2074686973206d75737420626520604e6f6e65602e20496620697420697351016e6f742074686520666972737420617070726f76616c2c207468656e206974206d7573742062652060536f6d65602c2077697468207468652074696d65706f696e742028626c6f636b206e756d62657220616e64d47472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c207472616e73616374696f6e2ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e003d014e4f54453a20546f2065786563757465207468652063616c6c20616674657220617070726f76616c73206172652067617468657265642c20616e79207369676e61746f7279206d7573742063616c6c29016061735f6d756c7469602077697468207468652066756c6c2063616c6c20646174612e20546869732066756e6374696f6e2063616e6e6f742065786563757465207468652063616c6c2e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602ed42d20557020746f206f6e652062696e6172792073656172636820616e6420696e736572742028604f286c6f6753202b20532960292ef82d20492f4f3a2031207265616420604f285329602c20757020746f2031206d757461746520604f285329602e20557020746f206f6e652072656d6f76652e302d204f6e65206576656e742e4d012d2053746f726167653a20696e7365727473206f6e65206974656d2c2076616c75652073697a6520626f756e64656420627920604d61785369676e61746f72696573602c20776974682061206465706f7369741901202074616b656e20666f7220697473206c69666574696d65206f6620604465706f73697442617365202b207468726573686f6c64202a204465706f736974466163746f72602e3c63616e63656c5f61735f6d756c74691001247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012474696d65706f696e7488017054696d65706f696e743c426c6f636b4e756d626572466f723c543e3e00012463616c6c5f686173680401205b75383b2033325d000354550143616e63656c2061207072652d6578697374696e672c206f6e2d676f696e67206d756c7469736967207472616e73616374696f6e2e20416e79206465706f7369742072657365727665642070726576696f75736c79c4666f722074686973206f7065726174696f6e2077696c6c20626520756e7265736572766564206f6e20737563636573732e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e0055012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c7320666f722074686973206469737061746368206265666f72652069742069732065786563757465642e41012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f2063616e20617070726f766520746869736c64697370617463682e204d6179206e6f7420626520656d7074792e5d012d206074696d65706f696e74603a205468652074696d65706f696e742028626c6f636b206e756d62657220616e64207472616e73616374696f6e20696e64657829206f662074686520666972737420617070726f76616c787472616e73616374696f6e20666f7220746869732064697370617463682ecc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f2062652065786563757465642e0034232320436f6d706c6578697479242d20604f285329602ecc2d20557020746f206f6e652062616c616e63652d72657365727665206f7220756e72657365727665206f7065726174696f6e2e3d012d204f6e6520706173737468726f756768206f7065726174696f6e2c206f6e6520696e736572742c20626f746820604f285329602077686572652060536020697320746865206e756d626572206f66450120207369676e61746f726965732e206053602069732063617070656420627920604d61785369676e61746f72696573602c207769746820776569676874206265696e672070726f706f7274696f6e616c2ebc2d204f6e6520656e636f6465202620686173682c20626f7468206f6620636f6d706c657869747920604f285329602e302d204f6e65206576656e742e842d20492f4f3a2031207265616420604f285329602c206f6e652072656d6f76652e702d2053746f726167653a2072656d6f766573206f6e65206974656d2e30706f6b655f6465706f7369740c01247468726573686f6c649c010c7531360001446f746865725f7369676e61746f72696573ed0201445665633c543a3a4163636f756e7449643e00012463616c6c5f686173680401205b75383b2033325d000434f4506f6b6520746865206465706f73697420726573657276656420666f7220616e206578697374696e67206d756c7469736967206f7065726174696f6e2e006101546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e64206d75737420626520746865206f726967696e616c206465706f7369746f72206f665c746865206d756c7469736967206f7065726174696f6e2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e0019012d20607468726573686f6c64603a2054686520746f74616c206e756d626572206f6620617070726f76616c73206e656564656420666f722074686973206d756c74697369672e3d012d20606f746865725f7369676e61746f72696573603a20546865206163636f756e747320286f74686572207468616e207468652073656e646572292077686f206172652070617274206f66207468652c20206d756c74697369672e05012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c2074686973206465706f73697420697320726573657276656420666f722e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ef50208346172676f6e5f72756e74696d652c52756e74696d6543616c6c0001701853797374656d0400490201ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c53797374656d2c2052756e74696d653e0000002454696d657374616d700400dd0201b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54696d657374616d702c2052756e74696d653e000200204d756c74697369670400f10201b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d756c74697369672c2052756e74696d653e0003001450726f78790400f90201a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c50726f78792c2052756e74696d653e000400145469636b730400090301a90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5469636b732c2052756e74696d653e000500284d696e696e67536c6f7404000d0301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e696e67536c6f742c2052756e74696d653e00060030426974636f696e5574786f730400110301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e5574786f732c2052756e74696d653e000700185661756c74730400310301ad0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5661756c74732c2052756e74696d653e00080030426974636f696e4c6f636b730400590301c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426974636f696e4c6f636b732c2052756e74696d653e000900204e6f7461726965730400750301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7461726965732c2052756e74696d653e000a00204e6f7465626f6f6b0400790301b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4e6f7465626f6f6b2c2052756e74696d653e000b00484c6f63616c636861696e5472616e736665720400b90301dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4c6f63616c636861696e5472616e736665722c2052756e74696d653e000c0034426c6f636b5365616c537065630400bd0301c90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c537065632c2052756e74696d653e000d001c446f6d61696e730400c10301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c446f6d61696e732c2052756e74696d653e000e00285072696365496e6465780400c50301bd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5072696365496e6465782c2052756e74696d653e000f001c4772616e6470610400cd0301b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4772616e6470612c2052756e74696d653e00110024426c6f636b5365616c0400f90301b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b5365616c2c2052756e74696d653e00120030426c6f636b526577617264730400150401c50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c426c6f636b526577617264732c2052756e74696d653e001300104d696e740400190401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4d696e742c2052756e74696d653e0014002042616c616e63657304001d0401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c42616c616e6365732c2052756e74696d653e001500244f776e6572736869700400250401b90173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f776e6572736869702c2052756e74696d653e0016001c547850617573650400290401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c547850617573652c2052756e74696d653e0017001c5574696c69747904002d0401b10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5574696c6974792c2052756e74696d653e001900105375646f0400350401a50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c5375646f2c2052756e74696d653e001a002054726561737572790400390401b50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c54726561737572792c2052756e74696d653e001f004c4f7065726174696f6e616c4163636f756e747304003d0401e10173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c4f7065726174696f6e616c4163636f756e74732c2052756e74696d653e00220040457468657265756d56657269666965720400610401d50173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c457468657265756d56657269666965722c2052756e74696d653e0023004843726f7373636861696e5472616e736665720400b90401dd0173656c663a3a73705f6170695f68696464656e5f696e636c756465735f636f6e7374727563745f72756e74696d653a3a68696464656e5f696e636c7564653a3a64697370617463680a3a3a43616c6c61626c6543616c6c466f723c43726f7373636861696e5472616e736665722c2052756e74696d653e00240000f9020c3070616c6c65745f70726f78791870616c6c65741043616c6c04045400012c1470726f78790c01107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000244d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f726973656420666f72207468726f75676830606164645f70726f7879602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e246164645f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e0001244501526567697374657220612070726f7879206163636f756e7420666f72207468652073656e64657220746861742069732061626c6520746f206d616b652063616c6c73206f6e2069747320626568616c662e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a11012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f206d616b6520612070726f78792efc2d206070726f78795f74797065603a20546865207065726d697373696f6e7320616c6c6f77656420666f7220746869732070726f7879206163636f756e742e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e3072656d6f76655f70726f78790c012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e00021ca8556e726567697374657220612070726f7879206163636f756e7420666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a25012d206070726f7879603a20546865206163636f756e74207468617420746865206063616c6c65726020776f756c64206c696b6520746f2072656d6f766520617320612070726f78792e41012d206070726f78795f74797065603a20546865207065726d697373696f6e732063757272656e746c7920656e61626c656420666f72207468652072656d6f7665642070726f7879206163636f756e742e3872656d6f76655f70726f78696573000318b4556e726567697374657220616c6c2070726f7879206163636f756e747320666f72207468652073656e6465722e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e005d015741524e494e473a2054686973206d61792062652063616c6c6564206f6e206163636f756e7473206372656174656420627920606372656174655f70757265602c20686f776576657220696620646f6e652c207468656e590174686520756e726573657276656420666565732077696c6c20626520696e61636365737369626c652e202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a2c6372656174655f707572650c012870726f78795f74797065980130543a3a50726f78795479706500011464656c6179100144426c6f636b4e756d626572466f723c543e000114696e6465789c010c7531360004483901537061776e2061206672657368206e6577206163636f756e7420746861742069732067756172616e7465656420746f206265206f746865727769736520696e61636365737369626c652c20616e64fc696e697469616c697a65206974207769746820612070726f7879206f66206070726f78795f747970656020666f7220606f726967696e602073656e6465722e006c5265717569726573206120605369676e656460206f726967696e2e0051012d206070726f78795f74797065603a205468652074797065206f66207468652070726f78792074686174207468652073656e6465722077696c6c2062652072656769737465726564206173206f766572207468654d016e6577206163636f756e742e20546869732077696c6c20616c6d6f737420616c7761797320626520746865206d6f7374207065726d697373697665206050726f7879547970656020706f737369626c6520746f78616c6c6f7720666f72206d6178696d756d20666c65786962696c6974792e51012d2060696e646578603a204120646973616d626967756174696f6e20696e6465782c20696e206361736520746869732069732063616c6c6564206d756c7469706c652074696d657320696e207468652073616d655d017472616e73616374696f6e2028652e672e207769746820607574696c6974793a3a626174636860292e20556e6c65737320796f75277265207573696e67206062617463686020796f752070726f6261626c79206a7573744077616e7420746f20757365206030602e4d012d206064656c6179603a2054686520616e6e6f756e63656d656e7420706572696f64207265717569726564206f662074686520696e697469616c2070726f78792e2057696c6c2067656e6572616c6c79206265147a65726f2e0051014661696c73207769746820604475706c69636174656020696620746869732068617320616c7265616479206265656e2063616c6c656420696e2074686973207472616e73616374696f6e2c2066726f6d207468659873616d652073656e6465722c2077697468207468652073616d6520706172616d65746572732e00e44661696c732069662074686572652061726520696e73756666696369656e742066756e647320746f2070617920666f72206465706f7369742e246b696c6c5f7075726514011c737061776e6572fd0201504163636f756e7449644c6f6f6b75704f663c543e00012870726f78795f74797065980130543a3a50726f787954797065000114696e6465789c010c753136000118686569676874d40144426c6f636b4e756d626572466f723c543e0001246578745f696e646578d4010c753332000540a052656d6f76657320612070726576696f75736c7920737061776e656420707572652070726f78792e0049015741524e494e473a202a2a416c6c2061636365737320746f2074686973206163636f756e742077696c6c206265206c6f73742e2a2a20416e792066756e64732068656c6420696e2069742077696c6c20626534696e61636365737369626c652e0059015265717569726573206120605369676e656460206f726967696e2c20616e64207468652073656e646572206163636f756e74206d7573742068617665206265656e206372656174656420627920612063616c6c20746fb0606372656174655f7075726560207769746820636f72726573706f6e64696e6720706172616d65746572732e0055012d2060737061776e6572603a20546865206163636f756e742074686174206f726967696e616c6c792063616c6c656420606372656174655f707572656020746f206372656174652074686973206163636f756e742e55012d2060696e646578603a2054686520646973616d626967756174696f6e20696e646578206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e2050726f6261626c79206030602e09012d206070726f78795f74797065603a205468652070726f78792074797065206f726967696e616c6c792070617373656420746f20606372656174655f70757265602e45012d2060686569676874603a2054686520686569676874206f662074686520636861696e207768656e207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e51012d20606578745f696e646578603a205468652065787472696e73696320696e64657820696e207768696368207468652063616c6c20746f20606372656174655f7075726560207761732070726f6365737365642e0035014661696c73207769746820604e6f5065726d697373696f6e6020696e2063617365207468652063616c6c6572206973206e6f7420612070726576696f75736c7920637265617465642070757265f86163636f756e742077686f736520606372656174655f70757265602063616c6c2068617320636f72726573706f6e64696e6720706172616d65746572732e20616e6e6f756e63650801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e00063c05015075626c697368207468652068617368206f6620612070726f78792d63616c6c20746861742077696c6c206265206d61646520696e20746865206675747572652e005d0154686973206d7573742062652063616c6c656420736f6d65206e756d626572206f6620626c6f636b73206265666f72652074686520636f72726573706f6e64696e67206070726f78796020697320617474656d7074656425016966207468652064656c6179206173736f6369617465642077697468207468652070726f78792072656c6174696f6e736869702069732067726561746572207468616e207a65726f2e0011014e6f206d6f7265207468616e20604d617850656e64696e676020616e6e6f756e63656d656e7473206d6179206265206d61646520617420616e79206f6e652074696d652e000901546869732077696c6c2074616b652061206465706f736974206f662060416e6e6f756e63656d656e744465706f736974466163746f72602061732077656c6c206173190160416e6e6f756e63656d656e744465706f736974426173656020696620746865726520617265206e6f206f746865722070656e64696e6720616e6e6f756e63656d656e74732e002501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f20616e6420612070726f7879206f6620607265616c602e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656d6f76655f616e6e6f756e63656d656e740801107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e0007287052656d6f7665206120676976656e20616e6e6f756e63656d656e742e0059014d61792062652063616c6c656420627920612070726f7879206163636f756e7420746f2072656d6f766520612063616c6c20746865792070726576696f75736c7920616e6e6f756e63656420616e642072657475726e30746865206465706f7369742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e15012d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e4c72656a6563745f616e6e6f756e63656d656e7408012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e00012463616c6c5f6861736834013443616c6c486173684f663c543e000828b052656d6f76652074686520676976656e20616e6e6f756e63656d656e74206f6620612064656c65676174652e0061014d61792062652063616c6c6564206279206120746172676574202870726f7869656429206163636f756e7420746f2072656d6f766520612063616c6c2074686174206f6e65206f662074686569722064656c6567617465732501286064656c656761746560292068617320616e6e6f756e63656420746865792077616e7420746f20657865637574652e20546865206465706f7369742069732072657475726e65642e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733af42d206064656c6567617465603a20546865206163636f756e7420746861742070726576696f75736c7920616e6e6f756e636564207468652063616c6c2ebc2d206063616c6c5f68617368603a205468652068617368206f66207468652063616c6c20746f206265206d6164652e3c70726f78795f616e6e6f756e63656410012064656c6567617465fd0201504163636f756e7449644c6f6f6b75704f663c543e0001107265616cfd0201504163636f756e7449644c6f6f6b75704f663c543e000140666f7263655f70726f78795f74797065050301504f7074696f6e3c543a3a50726f7879547970653e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00092c4d0144697370617463682074686520676976656e206063616c6c602066726f6d20616e206163636f756e742074686174207468652073656e64657220697320617574686f72697a656420666f72207468726f75676830606164645f70726f7879602e00a852656d6f76657320616e7920636f72726573706f6e64696e6720616e6e6f756e63656d656e742873292e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e002c506172616d65746572733a0d012d20607265616c603a20546865206163636f756e742074686174207468652070726f78792077696c6c206d616b6520612063616c6c206f6e20626568616c66206f662e61012d2060666f7263655f70726f78795f74797065603a2053706563696679207468652065786163742070726f7879207479706520746f206265207573656420616e6420636865636b656420666f7220746869732063616c6c2ed02d206063616c6c603a205468652063616c6c20746f206265206d6164652062792074686520607265616c60206163636f756e742e30706f6b655f6465706f736974000a204901506f6b65202f2041646a757374206465706f73697473206d61646520666f722070726f7869657320616e6420616e6e6f756e63656d656e7473206261736564206f6e2063757272656e742076616c7565732e0d01546869732063616e2062652075736564206279206163636f756e747320746f20706f737369626c79206c6f776572207468656972206c6f636b656420616d6f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e000101546865207472616e73616374696f6e206665652069732077616976656420696620746865206465706f73697420616d6f756e7420686173206368616e6765642e008c456d69747320604465706f736974506f6b656460206966207375636365737366756c2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd020c2873705f72756e74696d65306d756c746961646472657373304d756c74694164647265737308244163636f756e7449640100304163636f756e74496e6465780190011408496404000001244163636f756e74496400000014496e6465780400010301304163636f756e74496e6465780001000c526177040038011c5665633c75383e0002002441646472657373333204000401205b75383b2033325d000300244164647265737332300400110201205b75383b2032305d0004000001030000069000050304184f7074696f6e04045401980108104e6f6e6500000010536f6d65040098000001000009030c3070616c6c65745f7469636b731870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e0d030c4870616c6c65745f6d696e696e675f736c6f741870616c6c65741043616c6c0404540001080c6269640c010c626964180128543a3a42616c616e63650001106b657973b0011c543a3a4b6579730001446d696e696e675f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e00005861015375626d697420612062696420666f722061206d696e696e6720736c6f7420696e20746865206e65787420636f686f72742e204f6e636520616c6c2073706f7473206172652066696c6c656420696e20746865206e657874f4636f686f72742c2061206269646465722063616e20626520737570706c616e74656420627920737570706c79696e67206120686967686572206269642e00b84561636820736c6f742068617320604d6178436f686f727453697a65602073706f747320617661696c61626c652e005101546f20626520656c696769626c6520666f72206120736c6f742c20796f75206d757374206861766520746865207265717569726564206f776e65727368697020746f6b656e7320286172676f6e6f74732920696e590174686973206163636f756e742e2054686520726571756972656420616d6f756e742069732063616c63756c6174656420617320612070657263656e74616765206f662074686520746f74616c206f776e6572736869705501746f6b656e7320696e20746865206e6574776f726b2e20546869732070657263656e746167652069732061646a7573746564206265666f72652074686520626567696e6e696e67206f66206561636820736c6f742e004501496620796f757220626964206973206e6f206c6f6e6765722077696e6e696e672c20612060536c6f7442696464657244726f7070656460206576656e742077696c6c20626520656d69747465642e2042792d016d6f6e69746f72696e6720666f722074686973206576656e742c20796f752077696c6c2062652061626c6520746f20656e7375726520796f7572206269642069732061636365707465642e000d014e4f54453a2062696464696e6720666f72206561636820736c6f742077696c6c20626520636c6f73656420617420612072616e646f6d20626c6f636b2077697468696e3d01606d696e696e675f636f6e6669672e7469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73656020626c6f636b73206f662074686520736c6f7420656e642074696d652e00610154686520736c6f74206475726174696f6e2063616e2062652063616c63756c617465642061732060426c6f636b734265747765656e536c6f7473202a204d61784d696e657273202f204d6178436f686f727453697a65602e002c506172616d65746572733a902d2060626964603a2054686520616d6f756e74206f66206172676f6e7320746f206269644d012d20606b657973603a205468652073657373696f6e2022686f7422206b65797320666f722074686520736c6f742028426c6f636b5365616c417574686f72697479496420616e64204772616e6470614964292e59012d20606d696e696e675f6163636f756e745f6964603a2054686973206163636f756e745f696420616c6c6f777320796f7520746f206f7065726174652061732074686973206d696e6572206163636f756e742069642c01012020627574207573652066756e64696e6720286172676f6e6f747320616e6420626964292066726f6d20746865207375626d697474696e67206163636f756e746c636f6e6669677572655f6d696e696e675f736c6f745f64656c61790801446d696e696e675f736c6f745f64656c61798d0101304f7074696f6e3c5469636b3e0001887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73658d0101304f7074696f6e3c5469636b3e000104bc41646d696e2066756e6374696f6e20746f2075706461746520746865206d696e696e6720736c6f742064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e11030c5070616c6c65745f626974636f696e5f7574786f731870616c6c65741043616c6c0404540001141073796e630401247574786f5f73796e631503013c426974636f696e5574786f53796e63000004e85375626d6974746564207768656e206120626974636f696e205554584f20686173206265656e206d6f766564206f7220636f6e6669726d65642e4c7365745f636f6e6669726d65645f626c6f636b080138626974636f696e5f686569676874300134426974636f696e486569676874000148626974636f696e5f626c6f636b5f68617368d00140426974636f696e426c6f636b4861736800011449015365747320746865206d6f737420726563656e7420636f6e6669726d656420626974636f696e20626c6f636b2068656967687420286f6e6c792065786563757461626c6520627920746865204f7261636c65444f70657261746f72206163636f756e7429002c2320417267756d656e747311012a2060626974636f696e5f68656967687460202d20746865206c617465737420626974636f696e20626c6f636b2068656967687420746f20626520636f6e6669726d6564307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400021025015365747320746865206f7261636c65206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f726066756e645f776974685f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f52656600030cec42696e6420612063616e646964617465205554584f20726566206173207468652066756e64696e67205554584f20666f7220697473206c6f636b2e3d01546865206c6f636b732070616c6c657420617574686f72697a6573207468652070726f6d6f74696f6e3b20746869732070616c6c65742062696e6473207468652072656620616e6420626567696e7324747261636b696e672e5472656a6563745f7574786f5f63616e64696461746508011c7574786f5f69643001185574786f49640001207574786f5f726566cc011c5574786f526566000408450152656a65637420612070656e64696e672063616e646964617465205554584f20616e64206d6174657269616c697a6520697420617320616e206f727068616e207468726f75676820746865206c6f636b731c70616c6c65742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e15030c406172676f6e5f7072696d69746976657324696e686572656e74733c426974636f696e5574786f53796e6300000c01147370656e74190301545665633c426974636f696e5574786f5370656e643e00011866756e6465642503015c5665633c426974636f696e5574786f46756e64696e673e00013473796e635f746f5f626c6f636b2d030130426974636f696e426c6f636b000019030000021d03001d030c406172676f6e5f7072696d69746976657324696e686572656e747340426974636f696e5574786f5370656e6400000c011c7574786f5f69642c01185574786f49640001207574786f5f7265662103013c4f7074696f6e3c5574786f5265663e000138626974636f696e5f6865696768742c0134426974636f696e4865696768740000210304184f7074696f6e04045401cc0108104e6f6e6500000010536f6d650400cc0000010000250300000229030029030c406172676f6e5f7072696d69746976657324696e686572656e747348426974636f696e5574786f46756e64696e67000014011c7574786f5f69642c01185574786f49640001207574786f5f726566cc011c5574786f5265660001207361746f736869732c01205361746f7368697300014465787065637465645f7361746f736869732c01205361746f73686973000138626974636f696e5f6865696768742c0134426974636f696e48656967687400002d030c406172676f6e5f7072696d6974697665731c626974636f696e30426974636f696e426c6f636b0000080130626c6f636b5f6865696768742c0134426974636f696e486569676874000128626c6f636b5f68617368d00140426974636f696e426c6f636b48617368000031030c3470616c6c65745f7661756c74731870616c6c65741043616c6c040454000124186372656174650401307661756c745f636f6e6669673503015c5661756c74436f6e6669673c543a3a42616c616e63653e000000386d6f646966795f66756e64696e670c01207661756c745f696410011c5661756c74496400013873656375726974697a6174696f6e180128543a3a42616c616e636500015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800012061014d6f646966792066756e647320616c6c6f636174656420627920746865207661756c742e20546869732077696c6c206e6f74206166666563742069737375656420626974636f696e206c6f636b732c206275742077696c6cc86166666563742074686520616d6f756e74206f662066756e647320617661696c61626c6520666f72206e6577206f6e65732e00ec5468652073656375726974697a6174696f6e2070657263656e74206d757374206265206d61696e7461696e6564206f7220696e637265617365642e00610154686520616d6f756e7420616c6c6f6361746564206d6179206e6f7420676f2062656c6f7720746865206578697374696e6720726573657276656420616d6f756e74732c2062757420796f752063616e2072656c656173654d0166756e647320696e2074686973207661756c7420617320626974636f696e206c6f636b73206172652072656c65617365642e20546f2073746f702069737375696e6720616e79206d6f726520626974636f696e6c6c6f636b732c20757365207468652060636c6f736560206170692e306d6f646966795f7465726d730801207661756c745f696410011c5661756c7449640001147465726d73390301585661756c745465726d733c543a3a42616c616e63653e0002084d014368616e676520746865207465726d73206f662074686973207661756c742e20546865206368616e67652077696c6c206265206170706c69656420617420746865206e657874206d696e696e67206672616d6515016368616e67652074686174206973206174206c6561737420604d696e5465726d734d6f64696669636174696f6e426c6f636b44656c61796020626c6f636b7320617761792e14636c6f73650401207661756c745f696410011c5661756c744964000308410153746f70206f66666572696e67206164646974696f6e616c20626974636f696e206c6f636b732066726f6d2074686973207661756c742e2057696c6c206e6f7420616666656374206578697374696e671d016c6f636b732e2041732066756e6473206172652072657475726e65642c20746865792077696c6c2062652072656c656173656420746f20746865207661756c74206f776e65722e507265706c6163655f626974636f696e5f787075620801207661756c745f696410011c5661756c744964000130626974636f696e5f78707562510301444f7061717565426974636f696e5870756200040c61015265706c6163652074686520626974636f696e20787075626b657920666f722074686973207661756c742e20546869732077696c6c206e6f7420616666656374206578697374696e6720626974636f696e206c6f636b732c31016275742077696c6c206265207573656420666f7220616e79206c6f636b73206166746572207468697320706f696e742e2057696c6c2062652072656a656374656420696620616c726561647914757365642e1c636f6c6c6563740401207661756c745f696410011c5661756c744964000500647365745f626974636f696e5f6c6f636b5f64656c656761746504014c64656c65676174655f6163636f756e745f6964bc01504f7074696f6e3c543a3a4163636f756e7449643e000600207365745f6e616d650401106e616d65490301444f7074696f6e3c5661756c744e616d653e000700587365745f636f6d6d69747465645f6172676f6e6f7473040118616d6f756e74c00128543a3a42616c616e6365000800040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e35030c3470616c6c65745f7661756c74731870616c6c65742c5661756c74436f6e666967041c42616c616e63650118001401147465726d733903014c5661756c745465726d733c42616c616e63653e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e00013873656375726974697a6174696f6ec0011c42616c616e636500013c626974636f696e5f787075626b6579510301444f7061717565426974636f696e5870756200015073656375726974697a6174696f6e5f726174696f3d030124466978656455313238000039030c406172676f6e5f7072696d697469766573147661756c74285661756c745465726d73041c42616c616e63650118000c016c626974636f696e5f616e6e75616c5f70657263656e745f726174653d030124466978656455313238000140626974636f696e5f626173655f666565c0011c42616c616e636500015c74726561737572795f70726f6669745f73686172696e674103011c5065726d696c6c00003d03000006e000410300000645030045030c3473705f61726974686d65746963287065725f7468696e67731c5065726d696c6c0000040010010c7533320000490304184f7074696f6e040454014d030108104e6f6e6500000010536f6d6504004d0300000100004d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000051030c406172676f6e5f7072696d6974697665731c626974636f696e444f7061717565426974636f696e5870756200000400550301205b75383b2037385d000055030000034e000000080059030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65741043616c6c04045400012428696e697469616c697a651001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0000205901496e697469616c697a65206120626974636f696e206c6f636b2e20546869732077696c6c206372656174652061204c6f636b6564426974636f696e20666f7220746865207375626d697474696e67206163636f756e74a8616e64206c6f672074686520426974636f696e20536372697074206861736820746f204576656e74732e005d01546865207075626b6579207375626d697474656420686572652077696c6c206265207573656420746f20637265617465206120736372697074207075626b657920746861742077696c6c206265207573656420696e2061b474696d656c6f636b206d756c74697369672073637269707420746f206c6f636b2074686520626974636f696e2e0039014e4f54453a204120226c6f636b2d657222206d7573742073656e642062746320746f2074686520636f7369676e6572205554584f206164647265737320746f2022636f6d706c6574652220746865d04c6f636b6564426974636f696e20616e6420626520616464656420746f2074686520426974636f696e204d696e74206c696e652e3c726571756573745f72656c656173650c011c7574786f5f69643001185574786f4964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300011851015375626d6974746564206279206120426974636f696e20686f6c64657220746f2074726967676572207468652072656c65617365206f66207468656972205574786f206f7574206f662074686520636f7369676e45017363726970742e2041207472616e73616374696f6e207370656e64696e6720746865205554584f2073686f756c64206265207072652d6372656174656420736f20746861742074686520736967686173683d0163616e206265207375626d697474656420686572652e20546865207661756c74206f70657261746f722077696c6c2068617665203130206461797320746f20636f756e7465722d7369676e2074686555017472616e73616374696f6e2e2049742077696c6c206265207075626c6973686564207769746820746865207075626c6963206b6579206173206120426974636f696e5574786f436f7369676e6564204576656e742e003d014f776e6572206d757374207375626d6974206120736372697074207075626b657920616e6420616c736f20612066656520746f2070617920746f2074686520626974636f696e206e6574776f726b2e38636f7369676e5f72656c6561736508011c7574786f5f69643001185574786f49640001247369676e6174757265e80140426974636f696e5369676e617475726500021461015375626d69747465642062792061205661756c74206f70657261746f7220746f20636f7369676e207468652072656c65617365206f66206120626974636f696e207574786f2e2054686520426974636f696e206f776e6572550172656c65617365206665652077696c6c206265206275726e65642c20616e6420746865206c6f636b2077696c6c20626520616c6c6f77656420746f2065787069726520776974686f757420612070656e616c74792e004d0154686973206973207375626d69747465642061732061206e6f2d666565207472616e73616374696f6e206f666620636861696e20746f20616c6c6f77206b65797320746f2072656d61696e20696e20636f6c642077616c6c6574732e1c7261746368657408011c7574786f5f69643001185574786f496400011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e000338410152617463686574696e6720616c6c6f77732061207573657220746f206368616e676520746865206c6f636b207072696365206f6620746865697220626974636f696e206c6f636b2e2054686973206973510166756e6374696f6e616c6c79207468652073616d652061732072656c656173696e6720616e642072652d696e697469616c697a696e672c2062757420697420616c6c6f77732061207573657220746f20736b6970610173656e64696e67207472616e73616374696f6e73207468726f75676820626974636f696e20616e6420616e79206173736f63696174656420666565732e20497420616c736f20616c6c6f777320796f7520746f20737461794d016f6e20796f7572206f726967696e616c206c6f636b2065787069726174696f6e20776974686f757420686176696e6720746f20706179207468652066756c6c2079656172206f66206665657320616761696e2e00610152617463686574696e672022646f776e22202d207768656e20746865207072696365206f6620626974636f696e206973206c6f776572207468616e20796f7572206c6f636b2070726963652c20796f7520706179207468655d0166756c6c2072656c6561736520707269636520616e6420676574206164646564206261636b20746f20746865206d696e74207175657565206174207468652063757272656e74206d61726b657420726174652e20596f755901706f636b65742074686520646966666572656e6365206265747765656e2074686520616c7265616479206d696e74656420226c6f636b2070726963652220616e6420746865206e6577206d61726b65742076616c7565550128776869636820796f75206a75737420686164206275726e6564292e20596f7572206e6577206c6f636b2070726963652069732073657420746f20746865206d61726b6574206c6f772c20736f20796f752063616eb874616b6520616476616e74616765206f66207261746368657473202275702220696e20746865206675747572652e00550152617463686574696e672022757022202d207768656e20746865207072696365206f6620626974636f696e20697320686967686572207468616e20796f7572206c6f636b2070726963652c20796f75207061792061610170726f72617465642066656520666f72207468652072656d61696e646572206f6620796f7572206578697374696e67206c6f636b206475726174696f6e2e20596f752061726520616464656420746f20746865206d696e742d01717565756520666f722074686520646966666572656e636520696e20796f7572206e6577206c6f636b207072696365207673207468652070726576696f7573206c6f636b2070726963652e8061646d696e5f6d6f646966795f6d696e696d756d5f6c6f636b65645f736174730401207361746f736869733001205361746f7368697300040074726571756573745f6f727068616e65645f7574786f5f72656c656173650c01207574786f5f726566cc011c5574786f526566000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b657900014c626974636f696e5f6e6574776f726b5f6665653001205361746f7368697300050070636f7369676e5f6f727068616e65645f7574786f5f72656c656173650c01306f727068616e5f6f776e6572000130543a3a4163636f756e7449640001207574786f5f726566cc011c5574786f5265660001247369676e6174757265e80140426974636f696e5369676e617475726500061c41014e4f54453a2054686520607369676e61747572656020706172616d65746572206973204e4f54207665726966696564206f6e2d636861696e2e20546865206f727068616e207265636f726420646f657339016e6f742072657461696e2074686520636f7369676e207363726970742061726773206e656564656420666f7220766572696669636174696f6e2028746865792061726520636c65616e6564207570f4776974682074686520426974636f696e4c6f636b292e20546865207369676e617475726520697320706173736564207468726f75676820746f207468654101604f727068616e65645574786f436f7369676e656460206576656e7420736f20746865206c6f636b206f776e65722063616e20636f6e7374727563742074686520426974636f696e2072656c6561736535017472616e73616374696f6e206f66662d636861696e2e20412067617262616765207369676e6174757265206d65616e7320746865206f776e65722063616e2774207370656e6420e28094206e6f41016f6e2d636861696e2064616d6167652e20546f20616464206f6e2d636861696e20766572696669636174696f6e2c2074686520636f7369676e20736372697074206172677320776f756c64206e656564f0746f2062652073746f72656420696e20604f727068616e65645574786f60202873746f72616765206d6967726174696f6e207265717569726564292e38696e697469616c697a655f666f721401286163636f756e745f6964000130543a3a4163636f756e7449640001207661756c745f696410011c5661756c7449640001207361746f736869732c01205361746f73686973000138626974636f696e5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b657900011c6f7074696f6e73650301584f7074696f6e3c4c6f636b4f7074696f6e733c543e3e0008005c696e6372656173655f73656375726974697a6174696f6e08011c7574786f5f69643001185574786f49640001306e65775f7361746f736869732c01205361746f73686973000900040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e5d030c406172676f6e5f7072696d6974697665731c626974636f696e5c436f6d70726573736564426974636f696e5075626b657900000400610301205b75383b2033335d00006103000003210000000800650304184f7074696f6e0404540169030108104e6f6e6500000010536f6d6504006903000001000069030c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c65742c4c6f636b4f7074696f6e7304045400010408563104016c6d6963726f676f6e735f61745f7461726765745f7065725f627463850101484f7074696f6e3c543a3a42616c616e63653e000000006d030c406172676f6e5f7072696d6974697665731c626974636f696e4c426974636f696e5363726970745075626b65790000040071030170426f756e6465645665633c75382c20436f6e73745533323c33343e3e000071030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000075030c3c70616c6c65745f6e6f7461726965731870616c6c65741043616c6c04045400010c1c70726f706f73650401106d657461f4013c4e6f746172794d6574614f663c543e0000002061637469766174650401406f70657261746f725f6163636f756e74000130543a3a4163636f756e744964000100187570646174650c01246e6f746172795f6964d401204e6f7461727949640001106d657461f4013c4e6f746172794d6574614f663c543e0001386566666563746976655f7469636b2c01105469636b000208610155706461746520746865206d65746164617461206f662061206e6f746172792c20746f206265206566666563746976652061742074686520676976656e207469636b206865696768742c207768696368206d757374206265b03e3d204d6574614368616e6765735469636b44656c6179207469636b7320696e20746865206675747572652e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e79030c3c70616c6c65745f6e6f7465626f6f6b1870616c6c65741043616c6c040454000108187375626d69740401246e6f7465626f6f6b737d0301645665633c5369676e65644e6f7465626f6f6b4865616465723e00000018756e6c6f636b0401246e6f746172795f69641001204e6f746172794964000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e7d0300000281030081030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b505369676e65644e6f7465626f6f6b4865616465720000080118686561646572850301384e6f7465626f6f6b4865616465720001247369676e6174757265b503013c4e6f746172795369676e6174757265000085030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b384e6f7465626f6f6b48656164657200003c011c76657273696f6e8903010c75313600013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b00010c746178c00110753132380001246e6f746172795f6964d401204e6f74617279496400013c636861696e5f7472616e73666572738d0301bc426f756e6465645665633c436861696e5472616e736665722c204d61784e6f7465626f6f6b5472616e73666572733e0001546368616e6765645f6163636f756e74735f726f6f743401104832353600015c6368616e6765645f6163636f756e745f6f726967696e73990301c4426f756e6465645665633c4163636f756e744f726967696e2c20436f6e73745533323c7b207533323a3a4d4158207d3e3e000140626c6f636b5f766f7465735f726f6f7434011048323536000144626c6f636b5f766f7465735f636f756e74d4010c753332000144626c6f636b735f776974685f766f746573a5030180426f756e6465645665633c483235362c20436f6e73745533323c313030303e3e000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f77657200012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e00011c646f6d61696e73a90301e8426f756e6465645665633c28446f6d61696e486173682c204163636f756e744964292c204d6178446f6d61696e735065724e6f7465626f6f6b3e000089030000069c008d030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019103045300000400950301185665633c543e000091030c406172676f6e5f7072696d697469766573206e6f7465626f6f6b34436861696e5472616e736665720001082c546f4d61696e636861696e0801286163636f756e745f69640001244163636f756e744964000118616d6f756e74c001107531323800000030546f4c6f63616c636861696e04012c7472616e736665725f6964d401585472616e73666572546f4c6f63616c636861696e496400010000950300000291030099030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d03045300000400a10301185665633c543e00009d030c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e6765344163636f756e744f726967696e000008013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d62657200012c6163636f756e745f756964d401404163636f756e744f726967696e5569640000a1030000029d0300a5030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000a9030c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad03045300000400b10301185665633c543e0000ad0300000408340000b103000002ad0300b503000003400000000800b9030c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c65741043616c6c0404540001044873656e645f746f5f6c6f63616c636861696e080118616d6f756e74c001583c5420617320436f6e6669673e3a3a42616c616e63650001246e6f746172795f69641001204e6f746172794964000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd030c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c65741043616c6c04045400010424636f6e666967757265080130766f74655f6d696e696d756d8501014c4f7074696f6e3c566f74654d696e696d756d3e000148636f6d707574655f646966666963756c7479850101304f7074696f6e3c753132383e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec1030c3870616c6c65745f646f6d61696e731870616c6c65741043616c6c0404540001043c7365745f7a6f6e655f7265636f726408012c646f6d61696e5f68617368340128446f6d61696e4861736800012c7a6f6e655f7265636f72643d0101605a6f6e655265636f72643c543a3a4163636f756e7449643e000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec5030c4870616c6c65745f70726963655f696e6465781870616c6c65741043616c6c040454000108187375626d6974040114696e646578c90301285072696365496e64657800000435015375626d697420746865206c617465737420707269636520696e6465782e204f6e6c792076616c696420666f722074686520636f6e66696775726564206f70657261746f72206163636f756e74307365745f6f70657261746f720401286163636f756e745f6964000130543a3a4163636f756e74496400011009015365747320746865206f70657261746f72206163636f756e7420696420286f6e6c792065786563757461626c652062792074686520526f6f74206163636f756e7429002c2320417267756d656e7473bc2a20606163636f756e745f696460202d20746865206163636f756e74206964206f6620746865206f70657261746f72040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ec903084870616c6c65745f70726963655f696e646578285072696365496e64657800001801346274635f7573645f70726963653d0301244669786564553132380001446172676f6e6f745f7573645f7072696365e0012446697865645531323800013c6172676f6e5f7573645f70726963653d0301244669786564553132380001586172676f6e5f7573645f7461726765745f7072696365e001244669786564553132380001946172676f6e5f74696d655f77656967687465645f617665726167655f6c697175696469747918011c42616c616e63650001107469636b2c01105469636b0000cd030c3870616c6c65745f6772616e6470611870616c6c65741043616c6c04045400010c4c7265706f72745f65717569766f636174696f6e08014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600001009015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e707265706f72745f65717569766f636174696f6e5f756e7369676e656408014865717569766f636174696f6e5f70726f6f66d10301c8426f783c45717569766f636174696f6e50726f6f663c543a3a486173682c20426c6f636b4e756d626572466f723c543e3e3e00013c6b65795f6f776e65725f70726f6f66f5030140543a3a4b65794f776e657250726f6f6600012409015265706f727420766f7465722065717569766f636174696f6e2f6d69736265686176696f722e2054686973206d6574686f642077696c6c2076657269667920746865f465717569766f636174696f6e2070726f6f6620616e642076616c69646174652074686520676976656e206b6579206f776e6572736869702070726f6f66f8616761696e73742074686520657874726163746564206f6666656e6465722e20496620626f7468206172652076616c69642c20746865206f6666656e63654477696c6c206265207265706f727465642e000d01546869732065787472696e736963206d7573742062652063616c6c656420756e7369676e656420616e642069742069732065787065637465642074686174206f6e6c791501626c6f636b20617574686f72732077696c6c2063616c6c206974202876616c69646174656420696e206056616c6964617465556e7369676e656460292c2061732073756368150169662074686520626c6f636b20617574686f7220697320646566696e65642069742077696c6c20626520646566696e6564206173207468652065717569766f636174696f6e247265706f727465722e306e6f74655f7374616c6c656408011464656c6179100144426c6f636b4e756d626572466f723c543e00016c626573745f66696e616c697a65645f626c6f636b5f6e756d626572100144426c6f636b4e756d626572466f723c543e0002303d014e6f74652074686174207468652063757272656e7420617574686f7269747920736574206f6620746865204752414e4450412066696e616c6974792067616467657420686173207374616c6c65642e006101546869732077696c6c2074726967676572206120666f7263656420617574686f7269747920736574206368616e67652061742074686520626567696e6e696e67206f6620746865206e6578742073657373696f6e2c20746f6101626520656e6163746564206064656c61796020626c6f636b7320616674657220746861742e20546865206064656c6179602073686f756c64206265206869676820656e6f75676820746f20736166656c7920617373756d654901746861742074686520626c6f636b207369676e616c6c696e672074686520666f72636564206368616e67652077696c6c206e6f742062652072652d6f7267656420652e672e203130303020626c6f636b732e5d0154686520626c6f636b2070726f64756374696f6e207261746520287768696368206d617920626520736c6f77656420646f776e2062656361757365206f662066696e616c697479206c616767696e67292073686f756c64510162652074616b656e20696e746f206163636f756e74207768656e2063686f6f73696e6720746865206064656c6179602e20546865204752414e44504120766f74657273206261736564206f6e20746865206e65775501617574686f726974792077696c6c20737461727420766f74696e67206f6e20746f70206f662060626573745f66696e616c697a65645f626c6f636b5f6e756d6265726020666f72206e65772066696e616c697a65644d01626c6f636b732e2060626573745f66696e616c697a65645f626c6f636b5f6e756d626572602073686f756c64206265207468652068696768657374206f6620746865206c61746573742066696e616c697a6564c4626c6f636b206f6620616c6c2076616c696461746f7273206f6620746865206e657720617574686f72697479207365742e00584f6e6c792063616c6c61626c6520627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ed103085073705f636f6e73656e7375735f6772616e6470614445717569766f636174696f6e50726f6f660804480134044e0110000801187365745f6964300114536574496400013065717569766f636174696f6ed503014845717569766f636174696f6e3c482c204e3e0000d503085073705f636f6e73656e7375735f6772616e6470613045717569766f636174696f6e0804480134044e011001081c507265766f74650400d90301890166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265766f74653c0a482c204e3e2c20417574686f726974795369676e61747572652c3e00000024507265636f6d6d69740400e90301910166696e616c6974795f6772616e6470613a3a45717569766f636174696f6e3c417574686f7269747949642c2066696e616c6974795f6772616e6470613a3a507265636f6d6d69740a3c482c204e3e2c20417574686f726974795369676e61747572652c3e00010000d903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601dd03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374e503011828562c2053290001187365636f6e64e503011828562c2053290000dd03084066696e616c6974795f6772616e6470611c507265766f74650804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000e1030c5073705f636f6e73656e7375735f6772616e6470610c617070245369676e617475726500000400b5030148656432353531393a3a5369676e61747572650000e50300000408dd03e10300e903084066696e616c6974795f6772616e6470613045717569766f636174696f6e0c08496401b4045601ed03045301e10300100130726f756e645f6e756d62657230010c7536340001206964656e74697479b4010849640001146669727374f103011828562c2053290001187365636f6e64f103011828562c2053290000ed03084066696e616c6974795f6772616e64706124507265636f6d6d69740804480134044e01100008012c7461726765745f68617368340104480001347461726765745f6e756d6265721001044e0000f10300000408ed03e10300f503081c73705f636f726510566f696400010000f9030c4470616c6c65745f626c6f636b5f7365616c1870616c6c65741043616c6c040454000104146170706c790401107365616cfd030144426c6f636b5365616c496e686572656e74000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732efd030c406172676f6e5f7072696d69746976657324696e686572656e747344426c6f636b5365616c496e686572656e7400010810566f74651801347365616c5f737472656e677468ad020110553235360001246e6f746172795f6964d401204e6f746172794964000158736f757263655f6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d626572000154736f757263655f6e6f7465626f6f6b5f70726f6f660104012c4d65726b6c6550726f6f66000128626c6f636b5f766f746509040124426c6f636b566f74650001446d696e65725f6e6f6e63655f73636f7265b50201304f7074696f6e3c553235363e0000001c436f6d707574650001000001040c406172676f6e5f7072696d6974697665733862616c616e63655f6368616e67652c4d65726b6c6550726f6f6600000c011470726f6f66050401a0426f756e6465645665633c483235362c20436f6e73745533323c7b207533323a3a4d4158207d3e3e0001406e756d6265725f6f665f6c6561766573d4010c7533320001286c6561665f696e646578d4010c753332000005040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000009040c406172676f6e5f7072696d69746976657328626c6f636b5f766f746528426c6f636b566f7465540410486173680134001c01286163636f756e745f69640001244163636f756e744964000128626c6f636b5f6861736834011048617368000114696e646578d4010c753332000114706f776572c00140426c6f636b566f74696e67506f7765720001247369676e61747572650d0401384d756c74695369676e6174757265000160626c6f636b5f726577617264735f6163636f756e745f69640001244163636f756e7449640001107469636b2c01105469636b00000d04082873705f72756e74696d65384d756c74695369676e61747572650001101c456432353531390400b5030148656432353531393a3a5369676e61747572650000001c537232353531390400b5030148737232353531393a3a5369676e617475726500010014456364736104001104014065636473613a3a5369676e61747572650002000c45746804001104015865636473613a3a4b656363616b5369676e617475726500030000110400000341000000080015040c5070616c6c65745f626c6f636b5f726577617264731870616c6c65741043616c6c040454000104607365745f626c6f636b5f726577617264735f706175736564040118706175736564200110626f6f6c000000040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e19040c2c70616c6c65745f6d696e741870616c6c65741043616c6c040454000100040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e1d040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e21040c3c70616c6c65745f62616c616e6365731474797065734c41646a7573746d656e74446972656374696f6e00010820496e6372656173650000002044656372656173650001000025040c3c70616c6c65745f62616c616e6365731870616c6c65741043616c6c080454000449000124507472616e736665725f616c6c6f775f646561746808011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e636500001cd45472616e7366657220736f6d65206c697175696420667265652062616c616e636520746f20616e6f74686572206163636f756e742e003501607472616e736665725f616c6c6f775f6465617468602077696c6c207365742074686520604672656542616c616e636560206f66207468652073656e64657220616e642072656365697665722e11014966207468652073656e6465722773206163636f756e742069732062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c74b06f6620746865207472616e736665722c20746865206163636f756e742077696c6c206265207265617065642e001501546865206469737061746368206f726967696e20666f7220746869732063616c6c206d75737420626520605369676e65646020627920746865207472616e736163746f722e38666f7263655f7472616e736665720c0118736f75726365fd0201504163636f756e7449644c6f6f6b75704f663c543e00011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000208610145786163746c7920617320607472616e736665725f616c6c6f775f6465617468602c2065786365707420746865206f726967696e206d75737420626520726f6f7420616e642074686520736f75726365206163636f756e74446d6179206265207370656369666965642e4c7472616e736665725f6b6565705f616c69766508011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e00011476616c7565c00128543a3a42616c616e6365000318590153616d6520617320746865205b607472616e736665725f616c6c6f775f6465617468605d2063616c6c2c206275742077697468206120636865636b207468617420746865207472616e736665722077696c6c206e6f74606b696c6c20746865206f726967696e206163636f756e742e00e8393925206f66207468652074696d6520796f752077616e74205b607472616e736665725f616c6c6f775f6465617468605d20696e73746561642e00f05b607472616e736665725f616c6c6f775f6465617468605d3a207374727563742e50616c6c65742e68746d6c236d6574686f642e7472616e73666572307472616e736665725f616c6c08011064657374fd0201504163636f756e7449644c6f6f6b75704f663c543e0001286b6565705f616c697665200110626f6f6c00043c05015472616e736665722074686520656e74697265207472616e7366657261626c652062616c616e63652066726f6d207468652063616c6c6572206163636f756e742e0059014e4f54453a20546869732066756e6374696f6e206f6e6c7920617474656d70747320746f207472616e73666572205f7472616e7366657261626c655f2062616c616e6365732e2054686973206d65616e7320746861746101616e79206c6f636b65642c2072657365727665642c206f72206578697374656e7469616c206465706f7369747320287768656e20606b6565705f616c6976656020697320607472756560292c2077696c6c206e6f742062655d017472616e7366657272656420627920746869732066756e6374696f6e2e20546f20656e73757265207468617420746869732066756e6374696f6e20726573756c747320696e2061206b696c6c6564206163636f756e742c4501796f75206d69676874206e65656420746f207072657061726520746865206163636f756e742062792072656d6f76696e6720616e79207265666572656e636520636f756e746572732c2073746f72616765406465706f736974732c206574632e2e2e00c0546865206469737061746368206f726967696e206f6620746869732063616c6c206d757374206265205369676e65642e00a02d206064657374603a2054686520726563697069656e74206f6620746865207472616e736665722e59012d20606b6565705f616c697665603a204120626f6f6c65616e20746f2064657465726d696e652069662074686520607472616e736665725f616c6c60206f7065726174696f6e2073686f756c642073656e6420616c6c4d0120206f66207468652066756e647320746865206163636f756e74206861732c2063617573696e67207468652073656e646572206163636f756e7420746f206265206b696c6c6564202866616c7365292c206f72590120207472616e736665722065766572797468696e6720657863657074206174206c6561737420746865206578697374656e7469616c206465706f7369742c2077686963682077696c6c2067756172616e74656520746f9c20206b656570207468652073656e646572206163636f756e7420616c697665202874727565292e3c666f7263655f756e7265736572766508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e000118616d6f756e74180128543a3a42616c616e636500050cb0556e7265736572766520736f6d652062616c616e63652066726f6d2061207573657220627920666f7263652e006c43616e206f6e6c792062652063616c6c656420627920524f4f542e40757067726164655f6163636f756e747304010c77686fed0201445665633c543a3a4163636f756e7449643e0006207055706772616465206120737065636966696564206163636f756e742e00742d20606f726967696e603a204d75737420626520605369676e6564602e902d206077686f603a20546865206163636f756e7420746f2062652075706772616465642e005501546869732077696c6c20776169766520746865207472616e73616374696f6e20666565206966206174206c6561737420616c6c2062757420313025206f6620746865206163636f756e7473206e656564656420746f410162652075706772616465642e20285765206c657420736f6d65206e6f74206861766520746f206265207570677261646564206a75737420696e206f7264657220746f20616c6c6f7720666f722074686558706f73736962696c697479206f6620636875726e292e44666f7263655f7365745f62616c616e636508010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e0001206e65775f66726565c00128543a3a42616c616e636500080cac5365742074686520726567756c61722062616c616e6365206f66206120676976656e206163636f756e742e00b0546865206469737061746368206f726967696e20666f7220746869732063616c6c2069732060726f6f74602e6c666f7263655f61646a7573745f746f74616c5f69737375616e6365080124646972656374696f6e2104014c41646a7573746d656e74446972656374696f6e00011464656c7461c00128543a3a42616c616e6365000914b841646a7573742074686520746f74616c2069737375616e636520696e20612073617475726174696e67207761792e00fc43616e206f6e6c792062652063616c6c656420627920726f6f7420616e6420616c77617973206e65656473206120706f736974697665206064656c7461602e002423204578616d706c65106275726e08011476616c7565c00128543a3a42616c616e63650001286b6565705f616c697665200110626f6f6c000a1cfc4275726e2074686520737065636966696564206c697175696420667265652062616c616e63652066726f6d20746865206f726967696e206163636f756e742e002501496620746865206f726967696e2773206163636f756e7420656e64732075702062656c6f7720746865206578697374656e7469616c206465706f736974206173206120726573756c7409016f6620746865206275726e20616e6420606b6565705f616c697665602069732066616c73652c20746865206163636f756e742077696c6c206265207265617065642e005101556e6c696b652073656e64696e672066756e647320746f2061205f6275726e5f20616464726573732c207768696368206d6572656c79206d616b6573207468652066756e647320696e61636365737369626c652c21017468697320606275726e60206f7065726174696f6e2077696c6c2072656475636520746f74616c2069737375616e63652062792074686520616d6f756e74205f6275726e65645f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e29040c3c70616c6c65745f74785f70617573651870616c6c65741043616c6c04045400010814706175736504012466756c6c5f6e616d65c901015052756e74696d6543616c6c4e616d654f663c543e00001034506175736520612063616c6c2e00b843616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a50617573654f726967696e605d2ec0456d69747320616e205b604576656e743a3a43616c6c506175736564605d206576656e74206f6e20737563636573732e1c756e70617573650401146964656e74c901015052756e74696d6543616c6c4e616d654f663c543e00011040556e2d706175736520612063616c6c2e00c043616e206f6e6c792062652063616c6c6564206279205b60436f6e6669673a3a556e70617573654f726967696e605d2ec8456d69747320616e205b604576656e743a3a43616c6c556e706175736564605d206576656e74206f6e20737563636573732e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e2d040c3870616c6c65745f7574696c6974791870616c6c65741043616c6c04045400012014626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0000487c53656e642061206261746368206f662064697370617463682063616c6c732e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e005501546869732077696c6c2072657475726e20604f6b6020696e20616c6c2063697263756d7374616e6365732e20546f2064657465726d696e65207468652073756363657373206f66207468652062617463682c20616e31016576656e74206973206465706f73697465642e20496620612063616c6c206661696c656420616e64207468652062617463682077617320696e7465727275707465642c207468656e207468655501604261746368496e74657272757074656460206576656e74206973206465706f73697465642c20616c6f6e67207769746820746865206e756d626572206f66207375636365737366756c2063616c6c73206d6164654d01616e6420746865206572726f72206f6620746865206661696c65642063616c6c2e20496620616c6c2077657265207375636365737366756c2c207468656e2074686520604261746368436f6d706c65746564604c6576656e74206973206465706f73697465642e3461735f64657269766174697665080114696e6465789c010c75313600011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000134dc53656e6420612063616c6c207468726f75676820616e20696e64657865642070736575646f6e796d206f66207468652073656e6465722e00550146696c7465722066726f6d206f726967696e206172652070617373656420616c6f6e672e205468652063616c6c2077696c6c2062652064697370617463686564207769746820616e206f726967696e207768696368bc757365207468652073616d652066696c74657220617320746865206f726967696e206f6620746869732063616c6c2e0045014e4f54453a20496620796f75206e65656420746f20656e73757265207468617420616e79206163636f756e742d62617365642066696c746572696e67206973206e6f7420686f6e6f7265642028692e652e61016265636175736520796f7520657870656374206070726f78796020746f2068617665206265656e2075736564207072696f7220696e207468652063616c6c20737461636b20616e6420796f7520646f206e6f742077616e7451017468652063616c6c207265737472696374696f6e7320746f206170706c7920746f20616e79207375622d6163636f756e7473292c207468656e20757365206061735f6d756c74695f7468726573686f6c645f31607c696e20746865204d756c74697369672070616c6c657420696e73746561642e00f44e4f54453a205072696f7220746f2076657273696f6e202a31322c2074686973207761732063616c6c6564206061735f6c696d697465645f737562602e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2462617463685f616c6c04011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000234ec53656e642061206261746368206f662064697370617463682063616c6c7320616e642061746f6d6963616c6c792065786563757465207468656d2e21015468652077686f6c65207472616e73616374696f6e2077696c6c20726f6c6c6261636b20616e64206661696c20696620616e79206f66207468652063616c6c73206661696c65642e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e0055014966206f726967696e20697320726f6f74207468656e207468652063616c6c7320617265206469737061746368656420776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c64697370617463685f617308012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000318c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e0034232320436f6d706c65786974791c2d204f2831292e2c666f7263655f626174636804011463616c6c733104017c5665633c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0004347c53656e642061206261746368206f662064697370617463682063616c6c732ed4556e6c696b6520606261746368602c20697420616c6c6f7773206572726f727320616e6420776f6e277420696e746572727570742e00b04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e005d012d206063616c6c73603a205468652063616c6c7320746f20626520646973706174636865642066726f6d207468652073616d65206f726967696e2e20546865206e756d626572206f662063616c6c206d757374206e6f74390120206578636565642074686520636f6e7374616e743a2060626174636865645f63616c6c735f6c696d6974602028617661696c61626c6520696e20636f6e7374616e74206d65746164617461292e004d014966206f726967696e20697320726f6f74207468656e207468652063616c6c732061726520646973706174636820776974686f757420636865636b696e67206f726967696e2066696c7465722e202854686973ec696e636c7564657320627970617373696e6720606672616d655f73797374656d3a3a436f6e6669673a3a4261736543616c6c46696c74657260292e0034232320436f6d706c6578697479d02d204f284329207768657265204320697320746865206e756d626572206f662063616c6c7320746f20626520626174636865642e2c776974685f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000518c4446973706174636820612066756e6374696f6e2063616c6c2077697468206120737065636966696564207765696768742e002d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b8526f6f74206f726967696e20746f20737065636966792074686520776569676874206f66207468652063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e1c69665f656c73650801106d61696ef502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00012066616c6c6261636bf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e00065c1501446973706174636820612066616c6c6261636b2063616c6c20696e20746865206576656e7420746865206d61696e2063616c6c206661696c7320746f20657865637574652eb04d61792062652063616c6c65642066726f6d20616e79206f726967696e2065786365707420604e6f6e65602e00e4546869732066756e6374696f6e20666972737420617474656d70747320746f2064697370617463682074686520606d61696e602063616c6c2ed449662074686520606d61696e602063616c6c206661696c732c20746865206066616c6c6261636b6020697320617474656d7465642e15016966207468652066616c6c6261636b206973207375636365737366756c6c7920646973706174636865642c207468652077656967687473206f6620626f74682063616c6c73250161726520616363756d756c6174656420616e6420616e206576656e7420636f6e7461696e696e6720746865206d61696e2063616c6c206572726f72206973206465706f73697465642e00dc496e20746865206576656e74206f6620612066616c6c6261636b206661696c757265207468652077686f6c652063616c6c206661696c7368776974682074686520776569676874732072657475726e65642e0041012d20606d61696e603a20546865206d61696e2063616c6c20746f20626520646973706174636865642e205468697320697320746865207072696d61727920616374696f6e20746f20657865637574652e3d012d206066616c6c6261636b603a205468652066616c6c6261636b2063616c6c20746f206265206469737061746368656420696e20636173652074686520606d61696e602063616c6c206661696c732e00442323204469737061746368204c6f67696341012d20496620746865206f726967696e2069732060726f6f74602c20626f746820746865206d61696e20616e642066616c6c6261636b2063616c6c732061726520657865637574656420776974686f75747820206170706c79696e6720616e79206f726967696e2066696c746572732e49012d20496620746865206f726967696e206973206e6f742060726f6f74602c20746865206f726967696e2066696c746572206973206170706c69656420746f20626f74682074686520606d61696e6020616e644c20206066616c6c6261636b602063616c6c732e002c232320557365204361736559012d20536f6d6520757365206361736573206d6967687420696e766f6c7665207375626d697474696e672061206062617463686020747970652063616c6c20696e20656974686572206d61696e2c2066616c6c6261636b2820206f7220626f74682e5064697370617463685f61735f66616c6c69626c6508012461735f6f726967696ee9010154426f783c543a3a50616c6c6574734f726967696e3e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000714c84469737061746368657320612066756e6374696f6e2063616c6c207769746820612070726f7669646564206f726967696e2e005101416c6d6f7374207468652073616d65206173205b6050616c6c65743a3a64697370617463685f6173605d2062757420666f72776172647320616e79206572726f72206f662074686520696e6e65722063616c6c2e00c4546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f526f6f745f2e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3104000002f5020035040c2c70616c6c65745f7375646f1870616c6c65741043616c6c040454000114107375646f04011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000004350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e547375646f5f756e636865636b65645f77656967687408011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e000118776569676874280118576569676874000114350141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c20776974682060526f6f7460206f726967696e2e2d01546869732066756e6374696f6e20646f6573206e6f7420636865636b2074686520776569676874206f66207468652063616c6c2c20616e6420696e737465616420616c6c6f777320746865b05375646f207573657220746f20737065636966792074686520776569676874206f66207468652063616c6c2e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e1c7365745f6b657904010c6e6577fd0201504163636f756e7449644c6f6f6b75704f663c543e0002085d0141757468656e74696361746573207468652063757272656e74207375646f206b657920616e6420736574732074686520676976656e204163636f756e7449642028606e6577602920617320746865206e6577207375646f106b65792e1c7375646f5f617308010c77686ffd0201504163636f756e7449644c6f6f6b75704f663c543e00011063616c6cf502017c426f783c3c5420617320436f6e6669673e3a3a52756e74696d6543616c6c3e0003104d0141757468656e7469636174657320746865207375646f206b657920616e64206469737061746368657320612066756e6374696f6e2063616c6c207769746820605369676e656460206f726967696e2066726f6d406120676976656e206163636f756e742e00cc546865206469737061746368206f726967696e20666f7220746869732063616c6c206d757374206265205f5369676e65645f2e2872656d6f76655f6b657900040c845065726d616e656e746c792072656d6f76657320746865207375646f206b65792e006c2a2a546869732063616e6e6f7420626520756e2d646f6e652e2a2a040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e39040c3c70616c6c65745f74726561737572791870616c6c65741043616c6c040454000108246275795f626f6e64730801207661756c745f696410011c5661756c744964000114626f6e6473100114426f6e647300040c984275792077686f6c65206031204152474f4e6020626f6e647320666f722061207661756c742e00d85468652070757263686173652065697468657220656e7465727320746865206163636570746564206c697374206f72206661696c732e486c69717569646174655f626f6e645f6c6f7404012c626f6e645f6c6f745f6964300124426f6e644c6f74496400050c704c6971756964617465206f6e652066756c6c20626f6e64206c6f742e001d01546865206c6f742073746f70732070617274696369706174696e67207269676874206177617920616e642069732072656c6561736564206166746572207468652064656c61792e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e3d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65741043616c6c040454000118207265676973746572040130726567697374726174696f6e4104013c526567697374726174696f6e3c543e00000c31015265676973746572207661756c742c206d696e696e672066756e64696e672c20616e6420626f74206163636f756e747320666f7220616e206f7065726174696f6e616c206163636f756e742eec416e79206163636f756e7420696e2074686520726567697374726174696f6e206d6179207375626d697420746865207472616e73616374696f6e2e4d014966206120726566657272616c2070726f6f662069732070726f76696465642c2074686520726567697374726174696f6e207265636f726473207468652073706f6e736f722072656c6174696f6e736869702e447365745f7265776172645f636f6e66696708016c6f7065726174696f6e616c5f726566657272616c5f726577617264180128543a3a42616c616e6365000154726566657272616c5f626f6e75735f726577617264180128543a3a42616c616e6365000204bc5570646174652072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e48666f7263655f7365745f70726f67726573730c01146f776e6572000130543a3a4163636f756e7449640001147061746368590401904f7065726174696f6e616c50726f677265737350617463683c543a3a42616c616e63653e00016c7570646174655f6f7065726174696f6e616c5f70726f6772657373200110626f6f6c000304e4466f7263652d757064617465206f7065726174696f6e616c2070726f6772657373206d61726b65727320666f7220616e206163636f756e742e807365745f656e637279707465645f7365727665725f666f725f73706f6e73656508011c73706f6e736565000130543a3a4163636f756e744964000140656e637279707465645f73657276657238011c5665633c75383e000404550153746f726520616e206f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f616420666f7220612073706f6e736f726564206f7065726174696f6e616c206163636f756e742e2061637469766174650005040901416374697661746520616e20656c696769626c65206f7065726174696f6e616c206163636f756e742066726f6d20616e79206d616e61676564206163636f756e742e34636c61696d5f72657761726473040118616d6f756e74180128543a3a42616c616e6365000604e4436c61696d2070656e64696e67206f7065726174696f6e616c207265776172647320746f20616e79206d616e61676564206163636f756e742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e41040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657430526567697374726174696f6e040454000104085631040045040144526567697374726174696f6e56313c543e0000000045040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657438526567697374726174696f6e5631040454000028014c6f7065726174696f6e616c5f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b65790001646f7065726174696f6e616c5f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e74496400014c7661756c745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001706d696e696e675f66756e64696e675f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f660001606d696e696e675f626f745f6163636f756e745f70726f6f664d0401544163636f756e744f776e65727368697050726f6f66000138726566657272616c5f70726f6f665104018c4f7074696f6e3c526566657272616c50726f6f663c543a3a4163636f756e7449643e3e000049040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574584f7061717565456e6372797074696f6e5075626b6579000004000401205b75383b2033325d00004d040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574544163636f756e744f776e65727368697050726f6f6600000401247369676e61747572650d0401245369676e61747572650000510404184f7074696f6e0404540155040108104e6f6e6500000010536f6d6504005504000001000055040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c657434526566657272616c50726f6f6604244163636f756e744964010000140134726566657272616c5f636f646504013c737232353531393a3a5075626c6963000148726566657272616c5f7369676e6174757265b5030148737232353531393a3a5369676e617475726500011c73706f6e736f720001244163636f756e744964000140657870697265735f61745f6672616d652c011c4672616d65496400014473706f6e736f725f7369676e61747572650d0401245369676e6174757265000059040c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574604f7065726174696f6e616c50726f67726573735061746368041c42616c616e63650118001401506861735f756e69737761705f7472616e736665725d0401304f7074696f6e3c626f6f6c3e0001347661756c745f637265617465645d0401304f7074696f6e3c626f6f6c3e00017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e5d0401304f7074696f6e3c626f6f6c3e0001586f627365727665645f626974636f696e5f746f74616c8501013c4f7074696f6e3c42616c616e63653e0001686f627365727665645f6d696e696e675f736561745f746f74616c7102012c4f7074696f6e3c7533323e00005d0404184f7074696f6e04045401200108104e6f6e6500000010536f6d65040020000001000061040c6070616c6c65745f657468657265756d5f76657269666965721870616c6c65741043616c6c04045400010c40666f7263655f636865636b706f696e7408011875706461746565040154426f783c436865636b706f696e745570646174653e000134666f726b5f76657273696f6e7395040130466f726b56657273696f6e7300000841015573656420666f722070616c6c657420696e697469616c697a6174696f6e20616e64206c6967687420636c69656e7420726573657474696e672e204e6565647320746f2062652063616c6c65642062794074686520726f6f74206f726967696e2e187375626d69740401187570646174659d04012c426f783c5570646174653e00010c35015375626d6974732061206e65772066696e616c697a656420626561636f6e20686561646572207570646174652e2054686520757064617465206d617920636f6e7461696e20746865206e657874450173796e6320636f6d6d697474656520616e6420616e20657865637574696f6e20686561646572207769746e65737320666f72207468652066696e616c697a656420626561636f6e2068656164657220697424616476616e6365732e487365745f6f7065726174696e675f6d6f64650401106d6f6465fd01014842617369634f7065726174696e674d6f6465000304050148616c74206f7220726573756d6520616c6c2070616c6c6574206f7065726174696f6e732e204d6179206f6e6c792062652063616c6c656420627920726f6f742e040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732e65040c6070616c6c65745f657468657265756d5f766572696669657214747970657340436865636b706f696e74557064617465000014011868656164657269040130426561636f6e48656164657200015863757272656e745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d697474656500017463757272656e745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f6600013c76616c696461746f72735f726f6f7434011048323536000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f66000069040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657330426561636f6e4865616465720000140110736c6f7430010c75363400013870726f706f7365725f696e64657830013856616c696461746f72496e64657800012c706172656e745f726f6f743401104832353600012873746174655f726f6f7434011048323536000124626f64795f726f6f743401104832353600006d040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63436f6d6d6974746565000008011c7075626b657973710401f8426f756e6465645665633c5075626c69634b65792c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579750401245075626c69634b6579000071040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540175040453000004007d0401185665633c543e000075040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245075626c69634b657900000400790401445b75383b205055424b45595f53495a455d000079040000033000000008007d0400000275040081040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000085040c6070616c6c65745f657468657265756d5f766572696669657214747970657350457865637574696f6e48656164657250726f6f660000080140657865637574696f6e5f6865616465728904017c56657273696f6e6564457865637574696f6e5061796c6f6164486561646572000140657865637574696f6e5f6272616e63688104012c4272616e636850726f6f66000089040c70736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065737c56657273696f6e6564457865637574696f6e5061796c6f61644865616465720001081c436170656c6c6104008d040158457865637574696f6e5061796c6f61644865616465720000001444656e656204009104017464656e65623a3a457865637574696f6e5061796c6f6164486561646572000100008d040c70736e6f776272696467655f626561636f6e5f7072696d69746976657314747970657358457865637574696f6e5061796c6f616448656164657200003c012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000091041070736e6f776272696467655f626561636f6e5f7072696d6974697665731474797065731464656e656258457865637574696f6e5061796c6f6164486561646572000044012c706172656e745f68617368340110483235360001346665655f726563697069656e740d0201104831363000012873746174655f726f6f743401104832353600013472656365697074735f726f6f74340110483235360001286c6f67735f626c6f6f6d38011c5665633c75383e00012c707265765f72616e64616f34011048323536000130626c6f636b5f6e756d62657230010c7536340001246761735f6c696d697430010c7536340001206761735f7573656430010c75363400012474696d657374616d7030010c75363400012865787472615f6461746138011c5665633c75383e000140626173655f6665655f7065725f676173ad02011055323536000128626c6f636b5f68617368340110483235360001447472616e73616374696f6e735f726f6f74340110483235360001407769746864726177616c735f726f6f7434011048323536000134626c6f625f6761735f7573656430010c75363400013c6578636573735f626c6f625f67617330010c753634000095040c6070616c6c65745f657468657265756d5f766572696669657214747970657330466f726b56657273696f6e7300001c011c67656e6573697399040110466f726b000118616c7461697299040110466f726b00012462656c6c617472697899040110466f726b00011c636170656c6c6199040110466f726b00011464656e656299040110466f726b00011c656c656374726199040110466f726b00011066756c7599040110466f726b000099040c6070616c6c65745f657468657265756d5f766572696669657214747970657310466f726b000008011c76657273696f6e48012c466f726b56657273696f6e00011465706f63682c010c75363400009d040c6070616c6c65745f657468657265756d5f76657269666965721474797065731855706461746500001c013c61747465737465645f68656164657269040130426561636f6e48656164657200013873796e635f616767726567617465a104013453796e634167677265676174650001387369676e61747572655f736c6f742c010c7536340001686e6578745f73796e635f636f6d6d69747465655f757064617465b104017c4f7074696f6e3c4e65787453796e63436f6d6d69747465655570646174653e00014066696e616c697a65645f68656164657269040130426561636f6e48656164657200013c66696e616c6974795f6272616e63688104012c4272616e636850726f6f66000158657865637574696f6e5f6865616465725f70726f6f6685040150457865637574696f6e48656164657250726f6f660000a1040c6070616c6c65745f657468657265756d5f76657269666965721474797065733453796e63416767726567617465000008014c73796e635f636f6d6d69747465655f62697473a50401f0426f756e6465645665633c75382c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424954535f424f554e445f53495a45207d3e3e00016073796e635f636f6d6d69747465655f7369676e6174757265a90401245369676e61747572650000a5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000a9040c70736e6f776272696467655f626561636f6e5f7072696d697469766573147479706573245369676e617475726500000400ad0401505b75383b205349474e41545552455f53495a455d0000ad04000003600000000800b10404184f7074696f6e04045401b5040108104e6f6e6500000010536f6d650400b5040000010000b5040c6070616c6c65745f657468657265756d5f76657269666965721474797065735c4e65787453796e63436f6d6d6974746565557064617465000008014c6e6578745f73796e635f636f6d6d69747465656d04013453796e63436f6d6d69747465650001686e6578745f73796e635f636f6d6d69747465655f6272616e63688104012c4272616e636850726f6f660000b9040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65741043616c6c040454000134407365745f636861696e5f636f6e666967080130736f757263655f636861696e0502012c536f75726365436861696e000118636f6e666967bd04012c436861696e436f6e66696700000084666f7263655f7365745f676c6f62616c5f69737375616e63655f636f756e63696c0c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c61667465725f6e6f6e63652c0164436f756e63696c417070726f76616c51756575654e6f6e63650001486d656d6265725f6163636f756e745f696473c10401b8426f756e6465645665633c543a3a4163636f756e7449642c20543a3a4d6178436f756e63696c4d656d626572733e0001003470617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0002003c756e70617573655f67617465776179040130736f757263655f636861696e0502012c536f75726365436861696e0003008c7365745f6d696e696d756d5f6d696e74696e675f617574686f726974795f76616c756508014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001346d696e696d756d5f76616c7565c00128543a3a42616c616e6365000400c87365745f6d696e74696e675f617574686f726974795f61637469766174696f6e5f72657061796d656e745f70726963696e6708014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011c70726963696e67c50401b44d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e673c543e0005005c72656769737465725f636f756e63696c5f7369676e65720c014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00012c7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500060054617070726f76655f71756575655f656e747269657308014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001287369676e617475726573c90401e0426f756e6465645665633c4b656363616b5369676e61747572652c20543a3a4d61785175657565417070726f76616c7350657243616c6c3e0007005870726f76655f676174657761795f61637469766974790c0130736f757263655f636861696e0502012c536f75726365436861696e00017c70726576696f75735f676174657761795f61637469766974795f6e6f6e63652c01504761746577617941637469766974794e6f6e636500012c70726f6f665f6261746368d104017047617465776179416374697669747950726f6f6642617463683c543e0008006872656769737465725f6d696e74696e675f617574686f7269747914014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e636500090070646561637469766174655f6d696e74696e675f617574686f7269747908015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001247369676e61747572651104013c4b656363616b5369676e6174757265000a00307472616e736665725f6f757410014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00011461737365741502012441737365744b696e6400014c64657374696e6174696f6e5f6163636f756e740d02011048313630000118616d6f756e74c00128543a3a42616c616e6365000b0058636f6c6c61746572616c697a655f7472616e7366657210012c7472616e736665725f6964340110483235360001247369676e61747572651104013c4b656363616b5369676e617475726500014c6d6963726f676f6e5f636f6c6c61746572616cc00128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616cc00128543a3a42616c616e6365000c00040d01436f6e7461696e7320612076617269616e742070657220646973706174636861626c652065787472696e736963207468617420746869732070616c6c6574206861732ebd040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65742c436861696e436f6e6669670001040c45766d100120636861696e5f69642c010c75363400011c676174657761790d0201104831363000012c6172676f6e5f746f6b656e0d020110483136300001346172676f6e6f745f746f6b656e0d0201104831363000000000c1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000c5040c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574a84d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67040454000010014c61637469766174696f6e5f6761735f636f7374c00110753132380001487369676e61747572655f6761735f636f7374c0011075313238000154657374696d617465645f7765695f7065725f676173c001107531323800016c657374696d617465645f6d6963726f676f6e735f7065725f657468180128543a3a42616c616e63650000c9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011104045300000400cd0401185665633c543e0000cd04000002110400d1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426174636808384d617850726f6f66426c6f636b7300384d6178526563656970744c6f67730000080154657865637574696f6e5f626c6f636b5f70726f6f66d504016c457468657265756d457865637574696f6e426c6f636b50726f6f66000118626c6f636b73e904012501426f756e6465645665633c457468657265756d526563656970744c6f6750726f6f66426c6f636b3c4d6178526563656970744c6f67733e2c204d617850726f6f66426c6f636b730a3e0000d5040c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d457865637574696f6e426c6f636b50726f6f660000080144616e63686f725f626c6f636b5f68617368340110483235360001747461726765745f746f5f616e63686f725f6865616465725f636861696ed9040170457468657265756d457865637574696f6e486561646572436861696e0000d9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401dd04045300000400e50401185665633c543e0000dd040c406172676f6e5f7072696d69746976657320657468657265756d5c457468657265756d457865637574696f6e486561646572000004010c726c70e1040168457468657265756d457865637574696f6e486561646572526c700000e1040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e0000e504000002dd0400e9040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed04045300000400290501185665633c543e0000ed040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d526563656970744c6f6750726f6f66426c6f636b04384d6178526563656970744c6f677300000c014c7461726765745f626c6f636b5f6e756d6265722c014c457468657265756d426c6f636b4e756d626572000134726563656970745f70726f6f66f1040170457468657265756d436f6d62696e65645265636569707450726f6f66000130726563656970745f6c6f6773110501b8426f756e6465645665633c457468657265756d526563656970744c6f672c204d6178526563656970744c6f67733e0000f1040c406172676f6e5f7072696d69746976657320657468657265756d70457468657265756d436f6d62696e65645265636569707450726f6f6600000801146e6f646573f5040184457468657265756d436f6d62696e65645265636569707450726f6f664e6f6465730001207265636569707473fd040190457468657265756d436f6d62696e65645265636569707450726f6f6652656365697074730000f5040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e104045300000400f90401185665633c543e0000f904000002e10400fd040c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540101050453000004000d0501185665633c543e000001050c406172676f6e5f7072696d69746976657320657468657265756d6c457468657265756d5265636569707450726f6f665265636569707400000801447472616e73616374696f6e5f696e6465782c010c7536340001306e6f64655f696e64657865730505017c457468657265756d5265636569707450726f6f664e6f6465496e6465786573000005050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019c045300000400090501185665633c543e000009050000029c000d0500000201050011050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011505045300000400250501185665633c543e000015050c406172676f6e5f7072696d69746976657320657468657265756d48457468657265756d526563656970744c6f6700000801447472616e73616374696f6e5f696e6465782c010c7536340001246576656e745f6c6f671905012c457468657265756d4c6f67000019050c406172676f6e5f7072696d69746976657320657468657265756d2c457468657265756d4c6f6700000c011c616464726573730d02011048313630000118746f706963731d050144457468657265756d4c6f67546f70696373000110646174612105013c457468657265756d4c6f674461746100001d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000021050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e000025050000021505002905000002ed04002d0504184f7074696f6e04045401880108104e6f6e6500000010536f6d65040088000001000031050c3c70616c6c65745f6d756c74697369671870616c6c6574144572726f72040454000138404d696e696d756d5468726573686f6c640000047c5468726573686f6c64206d7573742062652032206f7220677265617465722e3c416c7265616479417070726f766564000104ac43616c6c20697320616c726561647920617070726f7665642062792074686973207369676e61746f72792e444e6f417070726f76616c734e65656465640002049c43616c6c20646f65736e2774206e65656420616e7920286d6f72652920617070726f76616c732e44546f6f4665775369676e61746f72696573000304a854686572652061726520746f6f20666577207369676e61746f7269657320696e20746865206c6973742e48546f6f4d616e795369676e61746f72696573000404ac54686572652061726520746f6f206d616e79207369676e61746f7269657320696e20746865206c6973742e545369676e61746f726965734f75744f664f726465720005040d01546865207369676e61746f7269657320776572652070726f7669646564206f7574206f66206f726465723b20746865792073686f756c64206265206f7264657265642e4c53656e646572496e5369676e61746f726965730006040d015468652073656e6465722077617320636f6e7461696e656420696e20746865206f74686572207369676e61746f726965733b2069742073686f756c646e27742062652e204e6f74466f756e64000704a04d756c7469736967206f7065726174696f6e206e6f7420666f756e6420696e2073746f726167652e204e6f744f776e657200080851014f6e6c7920746865206163636f756e742074686174206f726967696e616c6c79206372656174656420746865206d756c74697369672069732061626c6520746f2063616e63656c206974206f722075706461746534697473206465706f736974732e2c4e6f54696d65706f696e740009041d014e6f2074696d65706f696e742077617320676976656e2c2079657420746865206d756c7469736967206f7065726174696f6e20697320616c726561647920756e6465727761792e3857726f6e6754696d65706f696e74000a042d014120646966666572656e742074696d65706f696e742077617320676976656e20746f20746865206d756c7469736967206f7065726174696f6e207468617420697320756e6465727761792e4c556e657870656374656454696d65706f696e74000b04f4412074696d65706f696e742077617320676976656e2c20796574206e6f206d756c7469736967206f7065726174696f6e20697320756e6465727761792e3c4d6178576569676874546f6f4c6f77000c04d0546865206d6178696d756d2077656967687420696e666f726d6174696f6e2070726f76696465642077617320746f6f206c6f772e34416c726561647953746f726564000d04a0546865206461746120746f2062652073746f72656420697320616c72656164792073746f7265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3505000004083905180039050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454013d05045300000400410501185665633c543e00003d05083070616c6c65745f70726f78793c50726f7879446566696e6974696f6e0c244163636f756e74496401002450726f78795479706501982c426c6f636b4e756d6265720110000c012064656c65676174650001244163636f756e74496400012870726f78795f7479706598012450726f78795479706500011464656c617910012c426c6f636b4e756d626572000041050000023d05004505000004084905180049050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014d05045300000400510501185665633c543e00004d05083070616c6c65745f70726f787930416e6e6f756e63656d656e740c244163636f756e7449640100104861736801342c426c6f636b4e756d6265720110000c01107265616c0001244163636f756e74496400012463616c6c5f686173683401104861736800011868656967687410012c426c6f636b4e756d626572000051050000024d050055050c3070616c6c65745f70726f78791870616c6c6574144572726f720404540001201c546f6f4d616e79000004210154686572652061726520746f6f206d616e792070726f786965732072656769737465726564206f7220746f6f206d616e7920616e6e6f756e63656d656e74732070656e64696e672e204e6f74466f756e640001047450726f787920726567697374726174696f6e206e6f7420666f756e642e204e6f7450726f7879000204cc53656e646572206973206e6f7420612070726f7879206f6620746865206163636f756e7420746f2062652070726f786965642e2c556e70726f787961626c650003042101412063616c6c20776869636820697320696e636f6d70617469626c652077697468207468652070726f7879207479706527732066696c7465722077617320617474656d707465642e244475706c69636174650004046c4163636f756e7420697320616c726561647920612070726f78792e304e6f5065726d697373696f6e000504150143616c6c206d6179206e6f74206265206d6164652062792070726f78792062656361757365206974206d617920657363616c617465206974732070726976696c656765732e2c556e616e6e6f756e636564000604d0416e6e6f756e63656d656e742c206966206d61646520617420616c6c2c20776173206d61646520746f6f20726563656e746c792e2c4e6f53656c6650726f78790007046443616e6e6f74206164642073656c662061732070726f78792e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e59050c406172676f6e5f7072696d697469766573107469636b185469636b657200000801507469636b5f6475726174696f6e5f6d696c6c69732c010c7536340001746368616e6e656c5f686f6c645f65787069726174696f6e5f7469636b732c01105469636b00005d050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000061050c3070616c6c65745f7469636b731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e65050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560169050453000004007905013842547265654d61703c4b2c20563e000069050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016d05045300000400750501185665633c543e00006d05084870616c6c65745f6d696e696e675f736c6f74444d696e65724e6f6e636553636f72696e6704045400001001146e6f6e6365ad020110553235360001386c6173745f77696e5f626c6f636b710201644f7074696f6e3c426c6f636b4e756d626572466f723c543e3e00014c626c6f636b735f776f6e5f696e5f6672616d659c010c7531360001786672616d655f73746172745f626c6f636b735f776f6e5f737572706c75737105010c693136000071050000050a0075050000026d05007905042042547265654d617008044b013004560169050004007d050000007d050000028105008105000004083069050085050000040830100089050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0100045601ac0453000004008d05013842547265654d61703c4b2c20563e00008d05042042547265654d617008044b0100045601ac0004009105000000910500000295050095050000040800ac0099050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454019d05045300000400a10501185665633c543e00009d050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c384d696e696e6742696453746174730000100128626964735f636f756e7410010c7533320001386269645f616d6f756e745f6d696e18011c42616c616e63650001386269645f616d6f756e745f6d617818011c42616c616e63650001386269645f616d6f756e745f73756d18011c42616c616e63650000a1050000029d0500a5050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e0000a9050000021800ad050c406172676f6e5f7072696d69746976657328626c6f636b5f7365616c404d696e696e67536c6f74436f6e66696700000c01887469636b735f6265666f72655f6269645f656e645f666f725f7672665f636c6f73652c01105469636b00014c7469636b735f6265747765656e5f736c6f74732c01105469636b000178736c6f745f62696464696e675f73746172745f61667465725f7469636b732c01105469636b0000b1050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560110045300000400b505013842547265654d61703c4b2c20563e0000b505042042547265654d617008044b013004560110000400b905000000b905000002850500bd050c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000c1050000021000c5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b013004560130045300000400c905013842547265654d61703c4b2c20563e0000c905042042547265654d617008044b013004560130000400cd05000000cd05000002d10500d10500000408303000d5050c3473705f61726974686d65746963287065725f7468696e67731c50657263656e740000040008010875380000d9050c4870616c6c65745f6d696e696e675f736c6f741870616c6c6574144572726f7204045400012844536c6f744e6f7454616b696e67426964730000049842696464696e6720666f7220746865206e65787420636f686f72742068617320636c6f7365645c546f6f4d616e79426c6f636b52656769737472616e74730001048854686520636f686f727420726567697374726174696f6e206f766572666c6f7765646c496e73756666696369656e744f776e657273686970546f6b656e73000204f8546869732066756e64696e67206163636f756e7420646f6573206e6f7420686f6c6420746865206d696e696d756d206172676f6e6f7473206e656564656424426964546f6f4c6f77000304cc54686520676976656e206269642069736e2774206869676820656e6f75676820746f20626520696e2074686520636f686f72748443616e6e6f7452656769737465724f7665726c617070696e6753657373696f6e73000404c0416e206163636f756e742063616e206f6e6c792068617665206f6e652061637469766520726567697374726174696f6e6843616e6e6f744368616e676546756e64696e674163636f756e74000504f843616e6e6f742072652d726567697374657220616e206163636f756e742077697468206120646966666572656e742066756e64696e67206163636f756e7444496e73756666696369656e7446756e6473000604fc5468652066756e64696e67206163636f756e7420646f6573206e6f74206861766520656e6f7567682066756e647320746f20636f76657220746865206269644842696443616e6e6f7442655265647563656400070480546865206d696e696e67206269642063616e6e6f74206265207265647563656440496e76616c6964426964416d6f756e740008048842696473206d75737420626520696e20616c6c6f77656420696e6372656d656e747344556e7265636f76657261626c65486f6c640009049c546865206172676f6e6f7473206f6e20686f6c642063616e6e6f742062652072656c6561736564048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd050c406172676f6e5f7072696d6974697665731c626974636f696e245574786f56616c7565000014011c7574786f5f69643001185574786f49640001347363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b65790001207361746f736869732c01205361746f7368697300014c7375626d69747465645f61745f6865696768742c0134426974636f696e48656967687400017077617463685f666f725f7370656e745f756e74696c5f6865696768742c0134426974636f696e4865696768740000e1050c406172676f6e5f7072696d6974697665731c626974636f696e64426974636f696e436f7369676e5363726970745075626b6579000104145032575348040130777363726970745f686173683401104832353600000000e5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601dd05045300000400e905013842547265654d61703c4b2c20563e0000e905042042547265654d617008044b0130045601dd05000400ed05000000ed05000002f10500f1050000040830dd0500f5050c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b01cc04560130045300000400f905013842547265654d61703c4b2c20563e0000f905042042547265654d617008044b01cc04560130000400fd05000000fd05000002010600010600000408cc300005060c406172676f6e5f7072696d6974697665731c626974636f696e38426974636f696e4e6574776f726b0001101c426974636f696e0000001c546573746e6574000100185369676e65740002001c526567746573740003000009060c5070616c6c65745f626974636f696e5f7574786f731870616c6c6574144572726f7204045400013c344e6f5065726d697373696f6e73000004bc4f6e6c7920616e204f7261636c65204f70657261746f722063616e20706572666f726d207468697320616374696f6e5c4e6f426974636f696e436f6e6669726d6564426c6f636b00010405014e6f204f7261636c652d70726f766964656420626974636f696e20626c6f636b20686173206265656e2070726f766964656420746f20746865206e6574776f726b64496e73756666696369656e74426974636f696e416d6f756e740002046c496e73756666696369656e7420626974636f696e20616d6f756e74604e6f426974636f696e507269636573417661696c61626c65000304a04e6f207072696365732061726520617661696c61626c6520746f206d696e7420626974636f696e73505363726970745075626b6579436f6e666c696374000404a05363726970745075624b657920697320616c7265616479206265696e672077616974656420666f72345574786f4e6f744c6f636b6564000504544c6f636b6564205574786f204e6f7420466f756e6458526564656d7074696f6e73556e617661696c61626c650006048c526564656d7074696f6e73206e6f742063757272656e746c7920617661696c61626c6560496e76616c6964426974636f696e53796e6348656967687400070494496e76616c696420626974636f696e2073796e632068656967687420617474656d7074656464426974636f696e4865696768744e6f74436f6e6669726d656400080480426974636f696e20686569676874206e6f7420636f6e6669726d656420796574404d61785574786f73457863656564656400090480546f6f206d616e79205554584f7320617265206265696e67207761746368656450496e76616c6964426974636f696e536372697074000a04644c6f636b696e672073637269707420686173206572726f72733c4475706c69636174655574786f4964000b04844475706c696361746564205574786f49642e20416c726561647920696e20757365644d617843616e6469646174655574786f734578636565646564000c04dc546f6f206d616e792063616e646964617465205554584f7320617265206265696e672073746f72656420666f722074686973206c6f636b405574786f4e6f7443616e646964617465000d04d0546865205554584f207265666572656e636520646f6573206e6f74206d617020746f20612063616e64696461746520656e747279444c6f636b416c726561647946756e646564000e04b854686973204c6f636b20616c72656164792068617320616e2061747461636865642066756e64696e67205554584f048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0d060c406172676f6e5f7072696d697469766573147661756c74145661756c7408244163636f756e74496401001c42616c616e636501180044014c6f70657261746f725f6163636f756e745f69640001244163636f756e744964000174626974636f696e5f6c6f636b5f64656c65676174655f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e0001106e616d65490301444f7074696f6e3c5661756c744e616d653e0001546c6173745f6e616d655f6368616e67655f7469636b8d0101304f7074696f6e3c5469636b3e00013873656375726974697a6174696f6ec0011c42616c616e636500015473656375726974697a6174696f6e5f746172676574c0011c42616c616e636500015473656375726974697a6174696f6e5f6c6f636b6564c0011c42616c616e636500018473656375726974697a6174696f6e5f70656e64696e675f61637469766174696f6ec0011c42616c616e636500013c6c6f636b65645f7361746f736869732c01205361746f7368697300015073656375726974697a65645f7361746f736869732c01205361746f7368697300017c73656375726974697a6174696f6e5f72656c656173655f7363686564756c65110601d8426f756e64656442547265654d61703c426974636f696e4865696768742c2042616c616e63652c20436f6e73745533323c3336363e3e00015073656375726974697a6174696f6e5f726174696f3d03012446697865645531323800012469735f636c6f736564200110626f6f6c0001147465726d733903014c5661756c745465726d733c42616c616e63653e00013470656e64696e675f7465726d732106018c4f7074696f6e3c285469636b2c205661756c745465726d733c42616c616e63653e293e00012c6f70656e65645f7469636b2c01105469636b0001806f7065726174696f6e616c5f6d696e696d756d5f72656c656173655f7469636b8d0101304f7074696f6e3c5469636b3e000011060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00001506042042547265654d617008044b013004560118000400190600000019060000021d06001d0600000408301800210604184f7074696f6e0404540125060108104e6f6e6500000010536f6d650400250600000100002506000004083039030029060c406172676f6e5f7072696d697469766573147661756c74585661756c744172676f6e6f74436f6d6d69746d656e74041c42616c616e636501180008014c636f6d6d69747465645f6d6963726f6e6f7473c0011c42616c616e6365000150656e63756d62657265645f6d6963726f6e6f7473c0011c42616c616e636500002d06000004083106100031060c406172676f6e5f7072696d6974697665731c626974636f696e2c426974636f696e5850756200001801287075626c69635f6b65795d03015c436f6d70726573736564426974636f696e5075626b65790001146465707468350601087538000148706172656e745f66696e6765727072696e7448013c5850756246696e6765727072696e740001306368696c645f6e756d626572d4013c585075624368696c644e756d626572000128636861696e5f636f64650401205b75383b2033325d00011c6e6574776f726b3906012c4e6574776f726b4b696e6400003506000006080039060c406172676f6e5f7072696d6974697665731c626974636f696e2c4e6574776f726b4b696e64000108104d61696e0000001054657374000100003d060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e000041060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000045060420425472656553657404045401300004004906000000490600000230004d060000040810000051060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401100453000004005506012c42547265655365743c543e00005506042042547265655365740404540110000400c10500000059060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454015d06045300000400610601185665633c543e00005d060c3470616c6c65745f7661756c74731870616c6c6574445661756c744672616d65526576656e756504045400004001206672616d655f69642c011c4672616d654964000160626974636f696e5f6c6f636b5f6665655f726576656e7565c00128543a3a42616c616e6365000188626974636f696e5f6c6f636b5f6665655f636f75706f6e5f76616c75655f75736564c00128543a3a42616c616e6365000154626974636f696e5f6c6f636b735f63726561746564d4010c753332000190626974636f696e5f6c6f636b735f6e65775f6c69717569646974795f70726f6d69736564c00128543a3a42616c616e6365000180626974636f696e5f6c6f636b735f72656c65617365645f6c6971756964697479c00128543a3a42616c616e6365000170626974636f696e5f6c6f636b735f61646465645f7361746f736869732c01205361746f7368697300017c626974636f696e5f6c6f636b735f72656c65617365645f7361746f736869732c01205361746f7368697300016073656375726974697a6174696f6e5f616374697661746564c00128543a3a42616c616e636500016473656375726974697a6174696f6e5f72656c6f636b61626c65c00128543a3a42616c616e636500013873656375726974697a6174696f6ec00128543a3a42616c616e636500015c74726561737572795f7661756c745f6561726e696e6773c00128543a3a42616c616e636500015c74726561737572795f746f74616c5f6561726e696e6773c00128543a3a42616c616e636500015874726561737572795f7661756c745f6361706974616cc00128543a3a42616c616e636500016474726561737572795f65787465726e616c5f6361706974616cc00128543a3a42616c616e636500014c756e636f6c6c65637465645f726576656e7565c00128543a3a42616c616e6365000061060000025d060065060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540169060453000004006d0601185665633c543e000069060c3470616c6c65745f7661756c74731870616c6c657448526563656e74436170616369747944726f70081c42616c616e636501182c426c6f636b4e756d626572011000100130626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000154617661696c61626c655f6265666f72655f64726f70c0011c42616c616e6365000150617661696c61626c655f61667465725f64726f70c0011c42616c616e63650001506e6f5f6665655f6661696c757265735f75736564d4010c75333200006d0600000269060071060c3470616c6c65745f7661756c74731870616c6c6574144572726f72040454000180384e6f4d6f72655661756c744964730000049c496e7465726e616c6c792c20746865207661756c742069647320617265206d61786564206f757444496e73756666696369656e7446756e6473000104ec546865207573657220646f65736e2774206861766520656e6f7567682066756e647320746f20636f6d706c6574652074686973207265717565737458496e73756666696369656e745661756c7446756e647300020429015468657265206172656e277420656e6f7567682066756e647320696e20746865207661756c7420746f20636f766572207468652072657175657374656420626974636f696e206c6f636b684163636f756e7442656c6f774d696e696d756d42616c616e63650003045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640004045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000504dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e63652074797065845661756c74526564756374696f6e42656c6f7753656375726974697a6174696f6e00060439015468697320726564756374696f6e20696e207661756c742073656375726974697a6174696f6e20676f65732062656c6f772074686520616d6f756e7420616c726561647920636f6d6d697474656454496e76616c696453656375726974697a6174696f6e0007084101416e20696e76616c69642073656375726974697a6174696f6e2070657263656e74207761732070726f766964656420666f7220746865207661756c742e204e4f54453a2069742063616e6e6f742062655c64656372656173656420286f72206e6567617469766529585265757365645661756c74426974636f696e58707562000804bc546865207661756c7420626974636f696e20787075626b65792068617320616c7265616479206265656e207573656450496e76616c6964426974636f696e536372697074000904c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f727338496e76616c6964587075626b6579000a0460556e61626c6520746f206465636f646520787075626b65794057726f6e67587075624e6574776f726b000b044857726f6e672058707562204e6574776f726b34556e73616665587075626b6579000c040901546865205850756220697320756e7361666520746f2075736520696e2061207075626c696320626c6f636b636861696e2028616b612c20756e68617264656e65642970556e61626c65546f4465726976655661756c74587075624368696c64000d0478556e61626c6520746f2064657269766520787075626b6579206368696c645c426974636f696e436f6e76657273696f6e4661696c6564000e04b8426974636f696e20636f6e76657273696f6e20746f20636f6d70726573736564207075626b6579206661696c6564344e6f5065726d697373696f6e73000f0060486f6c64556e65787065637465646c794d6f64696669656400100044556e7265636f76657261626c65486f6c64001100345661756c744e6f74466f756e64001200445661756c744e6f745965744163746976650013046c546865207661756c74206973206e6f742079657420616374697665784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001404884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c65645465726d734d6f64696669636174696f6e4f766572666c6f77001504ec546865207465726d73206d6f64696669636174696f6e206c69737420636f756c64206e6f742068616e646c6520616e79206d6f7265206974656d736c5465726d734368616e6765416c72656164795363686564756c6564001604a45465726d732061726520616c7265616479207363686564756c656420746f206265206368616e67656434496e7465726e616c4572726f7200170494416e20696e7465726e616c2070726f63657373696e67206572726f72206f6363757272656488556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001804b4556e61626c6520746f2067656e65726174652061206e6577207661756c7420626974636f696e207075626b65797446756e64696e674368616e6765416c72656164795363686564756c656400190494412066756e64696e67206368616e676520697320616c7265616479207363686564756c656440496e76616c69645661756c744e616d65001a0831015661756c74206e616d6573206d757374207374617274207769746820616e20757070657263617365204153434949206c657474657220616e64206f746865727769736520626520415343494934616c7068616e756d657269632e6c50656e64696e67436f7369676e734265666f7265436f6c6c656374001b04010141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e6720636f7369676e73206265666f72652069742063616e20636f6c6c6563749c50656e64696e674f727068616e65645574786f436f7369676e734265666f7265436f6c6c656374001c041d0141207661756c74206d75737420636c656172206f757420616c6c2070656e64696e67206f727068616e20636f7369676e73206265666f72652069742063616e20636f6c6c6563748c4f766572647565436f6c6c656374426c6f636b6572734265666f7265436f6c6c656374001d044d0141207661756c74206d75737420636c656172206f757420616c6c206f7665726475652065787465726e616c20636f6c6c65637420626c6f636b657273206265666f72652069742063616e20636f6c6c6563742e584163636f756e74416c72656164794861735661756c74001e04d4416e206163636f756e74206d6179206f6e6c79206265206173736f636961746564207769746820612073696e676c65207661756c749c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67001f045101436f6d6d6974746564204172676f6e6f74732063616e6e6f7420626520726564756365642062656c6f772074686520616d6f756e7420616c72656164792063726f7373636861696e2d656e63756d62657265642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e75060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574344c6f636b6564426974636f696e04045400005001207661756c745f6964d4011c5661756c7449640001486c69717569646974795f70726f6d69736564c00128543a3a42616c616e636500014c6c6f636b65645f7461726765745f7072696365c00128543a3a42616c616e63650001346f776e65725f6163636f756e74000130543a3a4163636f756e74496400015073656375726974697a6174696f6e5f726174696fe0012446697865645531323800013473656375726974795f66656573c00128543a3a42616c616e6365000140636f75706f6e5f706169645f66656573c00128543a3a42616c616e63650001207361746f736869732c01205361746f736869730001347574786f5f7361746f736869738d0101404f7074696f6e3c5361746f736869733e0001307661756c745f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f787075625f736f7572636573790601cc285850756246696e6765727072696e742c20585075624368696c644e756d6265722c20585075624368696c644e756d626572290001306f776e65725f7075626b65795d03015c436f6d70726573736564426974636f696e5075626b65790001487661756c745f636c61696d5f6865696768742c0134426974636f696e4865696768740001446f70656e5f636c61696d5f6865696768742c0134426974636f696e486569676874000144637265617465645f61745f6865696768742c0134426974636f696e4865696768740001487574786f5f7363726970745f7075626b6579e1050164426974636f696e436f7369676e5363726970745075626b657900012469735f66756e646564200110626f6f6c00015066756e645f686f6c645f657874656e73696f6e73110601e4426f756e64656442547265654d61703c426974636f696e4865696768742c20543a3a42616c616e63652c20436f6e73745533323c3336363e3e000158637265617465645f61745f6172676f6e5f626c6f636bd40144426c6f636b4e756d626572466f723c543e000079060000040c481010007d060000040810300081060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574484c6f636b52656c6561736552657175657374041c42616c616e636501180018011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c74496400014c626974636f696e5f6e6574776f726b5f6665652c01205361746f73686973000140636f7369676e5f6475655f6672616d652c011c4672616d654964000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000144726564656d7074696f6e5f616d6f756e74c0011c42616c616e6365000085060000040800cc0089060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574304f727068616e65645574786f042c426c6f636b4e756d62657201100014011c7574786f5f69642c01185574786f49640001207661756c745f6964d4011c5661756c7449640001207361746f736869732c01205361746f7368697300016c7265636f726465645f6172676f6e5f626c6f636b5f6e756d626572d4012c426c6f636b4e756d626572000138636f7369676e5f726571756573748d0601b84f7074696f6e3c4f727068616e65645574786f436f7369676e526571756573743c426c6f636b4e756d6265723e3e00008d0604184f7074696f6e0404540191060108104e6f6e6500000010536f6d6504009106000001000091060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574644f727068616e65645574786f436f7369676e52657175657374042c426c6f636b4e756d6265720110000c014c626974636f696e5f6e6574776f726b5f6665653001205361746f73686973000140746f5f7363726970745f7075626b65796d03014c426974636f696e5363726970745075626b6579000174637265617465645f61745f6172676f6e5f626c6f636b5f6e756d62657210012c426c6f636b4e756d626572000095060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e000099060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e646564425472656553657408045401300453000004004506012c42547265655365743c543e00009d060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f7365743c426f756e6465644254726565536574080454018506045300000400a106012c42547265655365743c543e0000a10604204254726565536574040454018506000400a506000000a506000002850600a9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e0000ad060c5070616c6c65745f626974636f696e5f6c6f636b731870616c6c6574144572726f7204045400018c44496e73756666696369656e7446756e647300000058496e73756666696369656e745661756c7446756e6473000100844163636f756e74576f756c64476f42656c6f774d696e696d756d42616c616e63650002045d015468652070726f706f736564207472616e73616374696f6e20776f756c642074616b6520746865206163636f756e742062656c6f7720746865206d696e696d756d20286578697374656e7469616c292062616c616e63652c5661756c74436c6f7365640003045054686973207661756c7420697320636c6f73656448496e76616c69645661756c74416d6f756e74000404dc46756e64696e6720776f756c6420726573756c7420696e20616e206f766572666c6f77206f66207468652062616c616e636520747970654c526564656d7074696f6e4e6f744c6f636b6564000504b85468697320626974636f696e20726564656d7074696f6e20686173206e6f74206265656e206c6f636b656420696e98426974636f696e52656c65617365496e6974696174696f6e446561646c696e65506173736564000604c454686520626974636f696e20686173207061737365642074686520646561646c696e6520746f2072656c6561736520697444426974636f696e466565546f6f48696768000704b05468652066656520666f72207468697320626974636f696e2072656c6561736520697320746f6f20686967684c426974636f696e5574786f4e6f74466f756e64000804ec54686520426974636f696e20556e7370656374205472616e73616374696f6e204f757470757420285554584f2920776173206e6f7420666f756e6488426974636f696e556e61626c65546f42654465636f646564466f7252656c65617365000904e85468697320626974636f696e20636f7369676e2073637269707420636f756c646e2774206265206465636f64656420666f722072656c6561736584426974636f696e5369676e6174757265556e61626c65546f42654465636f646564000a04d85468697320626974636f696e207369676e617475726520636f756c646e2774206265206465636f64656420666f722072656c6561736578426974636f696e5075626b6579556e61626c65546f42654465636f646564000b04cc5468697320626974636f696e207075626b657920636f756c646e2774206265206465636f64656420666f722072656c6561736564426974636f696e496e76616c6964436f7369676e6174757265000c04e454686520636f7369676e207369676e6174757265206973206e6f742076616c696420666f722074686520626974636f696e2072656c6561736568496e73756666696369656e745361746f736869734c6f636b6564000d04a8546865206d696e696d756d206e756d626572206f66207361746f7368697320776173206e6f74206d6574604e6f426974636f696e507269636573417661696c61626c65000e0435015468652070726963652070726f766964657220686173206e6f20626974636f696e2070726963657320617661696c61626c652e205468697320697320612074656d706f72617279206572726f7250496e76616c6964426974636f696e536372697074000f04c854686520626974636f696e2073637269707420746f206c6f636b207468697320626974636f696e20686173206572726f7273344e6f5065726d697373696f6e73001004e4546865207573657220646f6573206e6f742068617665207065726d697373696f6e7320746f20706572666f726d207468697320616374696f6e60486f6c64556e65787065637465646c794d6f646966696564001104090154686520657870656374656420616d6f756e74206f662066756e647320746f2072657475726e2066726f6d20686f6c6420776173206e6f7420617661696c61626c6544556e7265636f76657261626c65486f6c64001204a054686520686f6c64206f6e2066756e647320636f756c64206e6f74206265207265636f7665726564345661756c744e6f74466f756e640013045c546865207661756c7420776173206e6f7420666f756e644447656e657269635661756c744572726f720400b10601285661756c744572726f7200140494416e206572726f72206f6363757272656420696e20746865207661756c74206d6f64756c65304c6f636b4e6f74466f756e640015049454686520426974636f696e204c6f636b207265636f726420776173206e6f7420666f756e64784e6f5661756c74426974636f696e5075626b657973417661696c61626c65001604884e6f205661756c74207075626c6963206b6579732061726520617661696c61626c6588556e61626c65546f47656e65726174655661756c74426974636f696e5075626b6579001704a4556e61626c6520746f2067656e65726174652061206e6577207661756c74207075626c6963206b6579445661756c744e6f745965744163746976650018047054686973207661756c74206973206e6f7420796574206163746976656445787069726174696f6e4174426c6f636b4f766572666c6f77001904c0416e206f766572666c6f77206f63637572726564207265636f7264696e672061206c6f636b2065787069726174696f6e544e6f52617463686574696e67417661696c61626c65001a04484e6f7468696e6720746f2072617463686574584c6f636b496e50726f636573734f6652656c65617365001b04c041206c6f636b20696e2070726f63657373206f662072656c656173652063616e6e6f7420626520726174636865746564484c6f636b50656e64696e6746756e64696e67001c04c8546865206c6f636b2066756e64696e6720686173206e6f74206265656e20636f6e6669726d6564206f6e20626974636f696e344f766572666c6f774572726f72001d042101416e206f766572666c6f77206f7220756e646572666c6f77206f63637572726564207768696c652063616c63756c6174696e672074686520726564656d7074696f6e2070726963657c496e656c696769626c654d6963726f676f6e52617465526571756573746564001e04c4416e20696e656c696769626c65206d6963726f676f6e2072617465207065722062746320776173207265717565737465646c4f727068616e65645574786f46756e64696e67436f6e666c696374001f04050143616e6e6f742066756e64207769746820616e206f727068616e6564207574786f206166746572206c6f636b2066756e64696e6720697320636f6e6669726d6564704f727068616e65645574786f52656c65617365526571756573746564002004ec43616e6e6f74206c6f636b20616e206f727068616e6564207574786f207769746820612070656e64696e672072656c6561736520726571756573746c46756e64696e675574786f43616e6e6f74426552656c6561736564002104dc43616e6e6f74207265717565737420616e206f727068616e65642072656c6561736520666f72207468652066756e64696e67205554584f984d61784f727068616e65645574786f52656c6561736552657175657374734578636565646564002204c8546f6f206d616e79206f727068616e6564207574786f2072656c6561736520726571756573747320666f722061206c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742eb1060c406172676f6e5f7072696d697469766573147661756c74285661756c744572726f720001342c5661756c74436c6f736564000000684163636f756e74576f756c64426542656c6f774d696e696d756d00010044496e73756666696369656e7446756e647300020058496e73756666696369656e745661756c7446756e647300030060486f6c64556e65787065637465646c794d6f64696669656400040044556e7265636f76657261626c65486f6c64000500345661756c744e6f74466f756e64000600784e6f5661756c74426974636f696e5075626b657973417661696c61626c6500070088556e61626c65546f47656e65726174655661756c74426974636f696e5075626b657900080050496e76616c6964426974636f696e53637269707400090034496e7465726e616c4572726f72000a00445661756c744e6f74596574416374697665000b009c436f6d6d69747465644172676f6e6f747342656c6f77456e63756d62657265644261636b696e67000c0000b50600000408f41000b9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540100045300000400ed0201185665633c543e0000bd060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011101045300000400c10601185665633c543e0000c106000002110100c5060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c906045300000400cd0601185665633c543e0000c90600000408300400cd06000002c90600d1060c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601f4045300000400d506013842547265654d61703c4b2c20563e0000d506042042547265654d617008044b0110045601f4000400d906000000d906000002dd0600dd060000040810f400e1060c3c70616c6c65745f6e6f7461726965731870616c6c6574144572726f720404540001244050726f706f73616c4e6f74466f756e64000004985468652070726f706f73616c20746f20616374697661746520776173206e6f7420666f756e644c4d61784e6f74617269657345786365656465640001048c4d6178696d756d206e756d626572206f66206e6f746172696573206578636565646564704d617850726f706f73616c73506572426c6f636b4578636565646564000204b84d6178696d756d206e756d626572206f662070726f706f73616c732070657220626c6f636b206578636565646564444e6f74416e4163746976654e6f74617279000304f054686973206e6f74617279206973206e6f74206163746976652c20736f2074686973206368616e67652063616e6e6f74206265206d6164652079657454496e76616c69644e6f746172794f70657261746f72000404a8496e76616c6964206e6f74617279206f70657261746f7220666f722074686973206f7065726174696f6e3c4e6f4d6f72654e6f74617279496473000504f4416e20696e7465726e616c206572726f7220686173206f636375727265642e20546865206e6f746172792069647320617265206578686175737465642e504566666563746976655469636b546f6f536f6f6e0006049c5468652070726f706f73656420656666656374697665207469636b20697320746f6f20736f6f6e2c546f6f4d616e794b65797300070458546f6f206d616e7920696e7465726e616c206b65797334496e76616c69644e6f7461727900080454546865206e6f7461727920697320696e76616c6964048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee50600000408109d0300e9060c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ed06045300000400f50601185665633c543e0000ed0600000408f1062000f1060c406172676f6e5f7072696d697469766573186e6f74617279604e6f746172794e6f7465626f6f6b4b657944657461696c73000014013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000140626c6f636b5f766f7465735f726f6f743401104832353600012c7365637265745f686173683401484e6f7465626f6f6b53656372657448617368000134706172656e745f736563726574a10201584f7074696f6e3c4e6f7465626f6f6b5365637265743e0000f506000002ed0600f9060000040c1030190100fd060c3c70616c6c65745f6e6f7465626f6f6b1870616c6c6574144572726f7204045400013c5c4475706c69636174654e6f7465626f6f6b4e756d626572000004a054686973206e6f7465626f6f6b2068617320616c7265616479206265656e207375626d6974746564544d697373696e674e6f7465626f6f6b4e756d6265720001047c4e6f7465626f6f6b73207265636569766564206f7574206f66206f726465725c4e6f7465626f6f6b5469636b416c726561647955736564000204b041206e6f7465626f6f6b2077617320616c72656164792070726f76696465642061742074686973207469636b60496e76616c69644e6f7465626f6f6b5369676e6174757265000304a0546865207369676e6174757265206f6620746865206e6f7465626f6f6b20697320696e76616c696454496e76616c696453656372657450726f7669646564000404f454686520736563726574206f72207365637265742068617368206f662074686520706172656e74206e6f7465626f6f6b20646f206e6f74206d6174636858436f756c644e6f744465636f64654e6f7465626f6f6b000504c0436f756c64206e6f74206465636f646520746865207363616c65206279746573206f6620746865206e6f7465626f6f6b5c4475706c69636174654e6f7465626f6f6b446967657374000604bc546865206e6f7465626f6f6b206469676573742077617320696e636c75646564206d6f7265207468616e206f6e6365544d697373696e674e6f7465626f6f6b44696765737400070490546865206e6f7465626f6f6b2064696765737420776173206e6f7420696e636c7564656454496e76616c69644e6f7465626f6f6b446967657374000804e0546865206e6f7465626f6f6b2064696765737420646964206e6f74206d617463682074686520696e636c75646564206e6f7465626f6f6b73844d756c7469706c654e6f7465626f6f6b496e686572656e747350726f76696465640009046c4d756c7469706c6520696e686572656e74732070726f766964656434496e7465726e616c4572726f72000a04a0556e61626c6520746f20747261636b20746865206e6f7465626f6f6b206368616e6765206c697374804e6f7465626f6f6b5375626d6974746564466f724c6f636b65644e6f74617279000b04350141206e6f7465626f6f6b20776173207375626d697474656420666f722061206e6f746172792074686174206661696c65642061756469742c207768696368206973206e6f7420616c6c6f77656460496e76616c6964526570726f636573734e6f7465626f6f6b000c0468496e76616c696420726570726f63657373206e6f7465626f6f6b54496e76616c69644e6f746172794f70657261746f72000d045c496e76616c6964206e6f74617279206f70657261746f7274496e76616c69644e6f7465626f6f6b5375626d697373696f6e5469636b000e0480496e76616c6964206e6f7465626f6f6b207375626d697373696f6e207469636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e0107086870616c6c65745f6c6f63616c636861696e5f7472616e73666572445175657565645472616e736665724f757408244163636f756e74496401001c42616c616e63650118001001286163636f756e745f69640001244163636f756e744964000118616d6f756e7418011c42616c616e636500013c65787069726174696f6e5f7469636b3001105469636b0001246e6f746172795f69641001204e6f746172794964000005070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540110045300000400c10501185665633c543e0000090708346672616d655f737570706f72742050616c6c65744964000004008902011c5b75383b20385d00000d070c6870616c6c65745f6c6f63616c636861696e5f7472616e736665721870616c6c6574144572726f72040454000120644d6178426c6f636b5472616e7366657273457863656564656400000044496e73756666696369656e7446756e6473000104b0496e73756666696369656e742062616c616e636520746f206372656174652074686973207472616e7366657268496e73756666696369656e744e6f746172697a656446756e6473000204d0496e73756666696369656e742062616c616e636520746f2066756c66696c6c2061206d61696e636861696e207472616e7366657294496e76616c69644f724475706c6963617465644c6f63616c636861696e5472616e73666572000304d8546865207472616e736665722077617320616c7265616479207375626d697474656420696e20612070726576696f757320626c6f636ba44e6f7465626f6f6b496e636c75646573457870697265644c6f63616c636861696e5472616e73666572000404410141207472616e7366657220776173207375626d697474656420696e20612070726576696f757320626c6f636b20627574207468652065787069726174696f6e20626c6f636b206861732070617373656470496e76616c69644e6f7461727955736564466f725472616e736665720005047c546865206e6f74617279206964206973206e6f7420726567697374657265645c4e6f746172794c6f636b6564466f725472616e73666572000604ec546865206e6f746172792069732063757272656e746c79206c6f636b656420616e642063616e6e6f742070726f63657373207472616e7366657273544e6f417661696c61626c655472616e7366657249640007049c4e6f207472616e7366657220494473206172652063757272656e746c7920617661696c61626c65048054686520604572726f726020656e756d206f6620746869732070616c6c65742e11070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000015070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540118045300000400a90501185665633c543e000019070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d07045300000400210701185665633c543e00001d070c406172676f6e5f7072696d697469766573186e6f746172797c4e6f746172794e6f7465626f6f6b566f746544696765737444657461696c7300001401246e6f746172795f6964d401204e6f74617279496400013c6e6f7465626f6f6b5f6e756d626572d401384e6f7465626f6f6b4e756d6265720001107469636b2c01105469636b000144626c6f636b5f766f7465735f636f756e74d4010c753332000148626c6f636b5f766f74696e675f706f776572c00140426c6f636b566f74696e67506f776572000021070000021d070025070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540129070453000004002d0701185665633c543e000029070000040c301018002d0700000229070031070c5870616c6c65745f626c6f636b5f7365616c5f737065631870616c6c6574144572726f72040454000104684d61784e6f7465626f6f6b7341745469636b45786365656465640000041501546865206d6178696d756d206e756d626572206f66206e6f7465626f6f6b73206174207468652063757272656e74207469636b20686173206265656e206578636565646564048054686520604572726f726020656e756d206f6620746869732070616c6c65742e35070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e000039070c3870616c6c65745f646f6d61696e731870616c6c6574144572726f720404540001144c446f6d61696e4e6f74526567697374657265640000047454686520646f6d61696e206973206e6f7420726567697374657265642e384e6f74446f6d61696e4f776e6572000104a85468652073656e646572206973206e6f7420746865206f776e6572206f662074686520646f6d61696e2e6c4661696c6564546f416464546f41646472657373486973746f7279000204944661696c656420746f2061646420746f20746865206164647265737320686973746f72792e644661696c6564546f4164644578706972696e67446f6d61696e000304a44661696c656420746f2061646420746f20746865206578706972696e6720646f6d61696e206c697374504163636f756e744465636f64696e674572726f72000404884572726f72206465636f64696e67206163636f756e742066726f6d206e6f74617279048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454014107045300000400450701185665633c543e00004107084870616c6c65745f70726963655f696e646578504370694d6561737572656d656e744275636b657400000c01287469636b5f72616e6765d1050130285469636b2c205469636b29000124746f74616c5f637069910101204172676f6e4350490001486d6561737572656d656e74735f636f756e7410010c7533320000450700000241070049070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00004d070c4870616c6c65745f70726963655f696e6465781870616c6c6574144572726f72040454000110544e6f74417574686f72697a65644f70657261746f72000004904e6f7420617574686f72697a656420617320616e206f7261636c65206f70657261746f72304d697373696e6756616c7565000104344d697373696e672076616c756530507269636573546f6f4f6c6400020480546865207375626d6974746564207072696365732061726520746f6f206f6c64744d617850726963654368616e67655065725469636b4578636565646564000304884368616e676520696e206172676f6e20707269636520697320746f6f206c61726765048054686520604572726f726020656e756d206f6620746869732070616c6c65742e5107083870616c6c65745f6772616e6470612c53746f726564537461746504044e01100110104c6976650000003050656e64696e6750617573650801307363686564756c65645f61741001044e00011464656c61791001044e000100185061757365640002003450656e64696e67526573756d650801307363686564756c65645f61741001044e00011464656c61791001044e000300005507083870616c6c65745f6772616e6470614c53746f72656450656e64696e674368616e676508044e0110144c696d697400001001307363686564756c65645f61741001044e00011464656c61791001044e0001406e6578745f617574686f7269746965735907016c426f756e646564417574686f726974794c6973743c4c696d69743e000118666f72636564710201244f7074696f6e3c4e3e000059070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454016d01045300000400690101185665633c543e00005d070c3870616c6c65745f6772616e6470611870616c6c6574144572726f7204045400011c2c50617573654661696c65640000080501417474656d707420746f207369676e616c204752414e445041207061757365207768656e2074686520617574686f72697479207365742069736e2774206c697665a42865697468657220706175736564206f7220616c72656164792070656e64696e67207061757365292e30526573756d654661696c65640001081101417474656d707420746f207369676e616c204752414e44504120726573756d65207768656e2074686520617574686f72697479207365742069736e277420706175736564a028656974686572206c697665206f7220616c72656164792070656e64696e6720726573756d65292e344368616e676550656e64696e67000204e8417474656d707420746f207369676e616c204752414e445041206368616e67652077697468206f6e6520616c72656164792070656e64696e672e1c546f6f536f6f6e000304bc43616e6e6f74207369676e616c20666f72636564206368616e676520736f20736f6f6e206166746572206c6173742e60496e76616c69644b65794f776e65727368697050726f6f66000404310141206b6579206f776e6572736869702070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e60496e76616c696445717569766f636174696f6e50726f6f660005043101416e2065717569766f636174696f6e2070726f6f662070726f76696465642061732070617274206f6620616e2065717569766f636174696f6e207265706f727420697320696e76616c69642e584475706c69636174654f6666656e63655265706f727400060415014120676976656e2065717569766f636174696f6e207265706f72742069732076616c69642062757420616c72656164792070726576696f75736c79207265706f727465642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e61070c406172676f6e5f7072696d6974697665732470726f7669646572733c426c6f636b5365616c6572496e666f08244163636f756e74496401002c417574686f72697479496401b8000c015c626c6f636b5f617574686f725f6163636f756e745f69640001244163636f756e744964000168626c6f636b5f766f74655f726577617264735f6163636f756e74bc01444f7074696f6e3c4163636f756e7449643e000150626c6f636b5f7365616c5f617574686f726974798101014c4f7074696f6e3c417574686f7269747949643e000065070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018505045300000400b90501185665633c543e000069070c4470616c6c65745f626c6f636b5f7365616c1870616c6c6574144572726f720404540001545c496e76616c6964566f74655365616c537472656e677468000004e454686520737472656e677468206f662074686520676976656e207365616c20646964206e6f74206d617463682063616c63756c6174696f6e7340496e76616c69645375626d697474657200010494566f7465206e6f74207375626d697474656420627920746865207269676874206d696e657264556e61626c65546f4465636f6465566f74654163636f756e740002047c436f756c64206e6f74206465636f64652074686520766f74652062797465735c556e72656769737465726564426c6f636b417574686f72000304a854686520626c6f636b20617574686f72206973206e6f7420612072656769737465726564206d696e657254496e76616c6964426c6f636b566f746550726f6f66000404f4546865206d65726b6c652070726f6f66206f6620766f746520696e636c7573696f6e20696e20746865206e6f7465626f6f6b20697320696e76616c6964604e6f4772616e64706172656e74566f74654d696e696d756d000504ac4e6f20766f7465206d696e696d756d20666f756e64206174206772616e64706172656e7420686569676874684475706c6963617465426c6f636b5365616c50726f766964656400060478546f6f206d616e7920626c6f636b207365616c73207375626d69747465645c496e73756666696369656e74566f74696e67506f776572000704590154686520626c6f636b20766f746520646964206e6f7420726561636820746865206d696e696d756d20766f74696e6720706f7765722061742074696d65206f6620746865206772616e64706172656e7420626c6f636b5c506172656e74566f74696e674b65794e6f74466f756e64000804cc4e6f207265676973746572656420766f74696e67206b657920666f756e6420666f722074686520706172656e7420626c6f636b68496e76616c6964566f74654772616e64706172656e7448617368000904a054686520626c6f636b20766f746520776173206e6f7420666f7220612076616c696420626c6f636b58496e656c696769626c654e6f7465626f6f6b55736564000a04cc546865206e6f7465626f6f6b20666f72207468697320766f746520776173206e6f7420656c696769626c6520746f20766f7465504e6f456c696769626c65566f74696e67526f6f74000b043d01546865206c6f6f6b757020746f20766572696679206120766f746527732061757468656e746963697479206973206e6f7420617661696c61626c6520666f722074686520676976656e20626c6f636b48436f756c644e6f744465636f6465566f7465000c04b4436f756c64206e6f74206465636f646520746865207363616c65206279746573206f662074686520766f746573684d61784e6f7465626f6f6b7341745469636b4578636565646564000d043901546f6f206d616e79206e6f7465626f6f6b732077657265207375626d697474656420666f72207468652063757272656e74207469636b2e2053686f756c64206e6f7420626520706f737369626c65684e6f436c6f736573744d696e6572466f756e64466f72566f7465000e047c4e6f20636c6f73657374206d696e657220666f756e6420666f7220766f746564426c6f636b566f7465496e76616c69645369676e6174757265000f047854686520766f7465207369676e61747572652077617320696e76616c696458496e76616c6964466f726b506f776572506172656e7400100464496e76616c696420666f726b20706f77657220706172656e7450426c6f636b5365616c4465636f64654572726f72001104d04120626c6f636b207365616c20617574686f7269747920636f756c64206e6f742062652070726f7065726c79206465636f6465645c496e76616c6964436f6d70757465426c6f636b5469636b001204dc436f6d7075746520626c6f636b732063616e7420626520616464656420696e207468652073616d65207469636b206173206120766f746558496e76616c69644d696e65724e6f6e636553636f7265001304b0546865206e6f6e63652073636f72652064697374616e636520737570706c69656420697320696e76616c6964604475706c6963617465566f7465426c6f636b41745469636b001404504475706c696361746520766f746520626c6f636b048054686520604572726f726020656e756d206f6620746869732070616c6c65742e6d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454017901045300000400750101185665633c543e000071070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454011d06045300000400190601185665633c543e000075070000040c1830180079070c5070616c6c65745f626c6f636b5f726577617264731870616c6c6574144572726f72040454000100048054686520604572726f726020656e756d206f6620746869732070616c6c65742e7d070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454018107045300000400850701185665633c543e000081070000040c30001800850700000281070089070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0130045601180453000004001506013842547265654d61703c4b2c20563e00008d07000004081091070091070c2c70616c6c65745f6d696e741870616c6c6574284d696e74416374696f6e0404420118000c01306172676f6e5f6275726e6564180104420001306172676f6e5f6d696e74656418010442000138626974636f696e5f6d696e74656418010442000095070c2c70616c6c65745f6d696e741870616c6c6574144572726f720404540001044c546f6f4d616e7950656e64696e674d696e7473000000048054686520604572726f726020656e756d206f6620746869732070616c6c65742e99070c4c626f756e6465645f636f6c6c656374696f6e73407765616b5f626f756e6465645f766563385765616b426f756e646564566563080454019d07045300000400a50701185665633c543e00009d070c3c70616c6c65745f62616c616e6365731474797065732c42616c616e63654c6f636b041c42616c616e63650118000c01086964890201384c6f636b4964656e746966696572000118616d6f756e7418011c42616c616e636500011c726561736f6e73a107011c526561736f6e730000a1070c3c70616c6c65745f62616c616e6365731474797065731c526561736f6e7300010c0c466565000000104d6973630001000c416c6c00020000a5070000029d0700a9070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401ad07045300000400b10701185665633c543e0000ad070c3c70616c6c65745f62616c616e6365731474797065732c52657365727665446174610844526573657276654964656e7469666965720189021c42616c616e6365011800080108696489020144526573657276654964656e746966696572000118616d6f756e7418011c42616c616e63650000b107000002ad0700b5070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401b907045300000400bd0701185665633c543e0000b90714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401a1011c42616c616e63650118000801086964a10101084964000118616d6f756e7418011c42616c616e63650000bd07000002b90700c1070c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401c507045300000400d10701185665633c543e0000c50714346672616d655f737570706f72741874726169747318746f6b656e73106d697363204964416d6f756e740808496401c9071c42616c616e63650118000801086964c90701084964000118616d6f756e7418011c42616c616e63650000c90708346172676f6e5f72756e74696d654c52756e74696d65467265657a65526561736f6e00010430426c6f636b526577617264730400cd07018870616c6c65745f626c6f636b5f726577617264733a3a467265657a65526561736f6e00130000cd070c5070616c6c65745f626c6f636b5f726577617264731870616c6c657430467265657a65526561736f6e000104404d617475726174696f6e506572696f6400000000d107000002c50700d5070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ed9070c3c70616c6c65745f62616c616e6365731870616c6c6574144572726f720804540004490001303856657374696e6742616c616e63650000049c56657374696e672062616c616e636520746f6f206869676820746f2073656e642076616c75652e544c69717569646974795265737472696374696f6e73000104c84163636f756e74206c6971756964697479207265737472696374696f6e732070726576656e74207769746864726177616c2e4c496e73756666696369656e7442616c616e63650002047842616c616e636520746f6f206c6f7720746f2073656e642076616c75652e484578697374656e7469616c4465706f736974000304ec56616c756520746f6f206c6f7720746f20637265617465206163636f756e742064756520746f206578697374656e7469616c206465706f7369742e34457870656e646162696c697479000404905472616e736665722f7061796d656e7420776f756c64206b696c6c206163636f756e742e5c4578697374696e6756657374696e675363686564756c65000504cc412076657374696e67207363686564756c6520616c72656164792065786973747320666f722074686973206163636f756e742e2c446561644163636f756e740006048c42656e6566696369617279206163636f756e74206d757374207072652d65786973742e3c546f6f4d616e795265736572766573000704b84e756d626572206f66206e616d65642072657365727665732065786365656420604d61785265736572766573602e30546f6f4d616e79486f6c6473000804f84e756d626572206f6620686f6c647320657863656564206056617269616e74436f756e744f663c543a3a52756e74696d65486f6c64526561736f6e3e602e38546f6f4d616e79467265657a6573000904984e756d626572206f6620667265657a65732065786365656420604d6178467265657a6573602e4c49737375616e63654465616374697661746564000a0401015468652069737375616e63652063616e6e6f74206265206d6f6469666965642073696e636520697420697320616c72656164792064656163746976617465642e2444656c74615a65726f000b04645468652064656c74612063616e6e6f74206265207a65726f2e048054686520604572726f726020656e756d206f6620746869732070616c6c65742edd070c3c70616c6c65745f74785f70617573651870616c6c6574144572726f720404540001102049735061757365640000044c5468652063616c6c206973207061757365642e284973556e706175736564000104545468652063616c6c20697320756e7061757365642e28556e7061757361626c65000204b45468652063616c6c2069732077686974656c697374656420616e642063616e6e6f74206265207061757365642e204e6f74466f756e64000300048054686520604572726f726020656e756d206f6620746869732070616c6c65742ee107086870616c6c65745f7472616e73616374696f6e5f7061796d656e742052656c6561736573000108245631416e6369656e7400000008563200010000e50710346672616d655f737570706f7274187472616974731c73746f72616765184e6f44726f7004045401e907000400e9070104540000e90718346672616d655f737570706f72741874726169747318746f6b656e732066756e6769626c6524696d62616c616e636524496d62616c616e63650c04420118184f6e44726f7000384f70706f736974654f6e44726f700000040118616d6f756e74180104420000ed070c3870616c6c65745f7574696c6974791870616c6c6574144572726f7204045400010430546f6f4d616e7943616c6c730000045c546f6f206d616e792063616c6c7320626174636865642e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef1070c2c70616c6c65745f7375646f1870616c6c6574144572726f720404540001042c526571756972655375646f0000048053656e646572206d75737420626520746865205375646f206163636f756e742e04684572726f7220666f7220746865205375646f2070616c6c65742ef5070c3c70616c6c65745f74726561737572791870616c6c6574444672616d655661756c744361706974616c04045400000801206672616d655f69642c011c4672616d6549640001187661756c7473f90701f8426f756e64656442547265654d61703c5661756c7449642c205661756c744361706974616c3c543e2c20543a3a4d61785661756c7473506572506f6f6c3e0000f9070c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b0110045601fd070453000004000d08013842547265654d61703c4b2c20563e0000fd070c3c70616c6c65745f74726561737572791870616c6c6574305661756c744361706974616c04045400000c0150626f6e645f6c6f745f616c6c6f636174696f6e73010801e4426f756e6465645665633c426f6e644c6f74416c6c6f636174696f6e2c20543a3a4d61785472656173757279436f6e7472696275746f72733e000138656c696769626c655f626f6e6473d40114426f6e64730001547661756c745f73686172696e675f70657263656e744103011c5065726d696c6c000001080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454010508045300000400090801185665633c543e000005080c3c70616c6c65745f74726561737572791870616c6c657444426f6e644c6f74416c6c6f636174696f6e000008012c626f6e645f6c6f745f69642c0124426f6e644c6f74496400011c70726f72617461e00124466978656455313238000009080000020508000d08042042547265654d617008044b0110045601fd070004001108000000110800000215080015080000040810fd070019080c3c70616c6c65745f74726561737572791870616c6c65741c426f6e644c6f7404045400002801146f776e6572000130543a3a4163636f756e7449640001207661756c745f6964d4011c5661756c744964000114626f6e6473d40114426f6e6473000140637265617465645f6672616d655f69642c011c4672616d65496400014c7061727469636970617465645f6672616d6573d4010c7533320001706c6173745f6672616d655f6561726e696e67735f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00014c6c6173745f6672616d655f6561726e696e6773850101484f7074696f6e3c543a3a42616c616e63653e00014c63756d756c61746976655f6561726e696e6773c00128543a3a42616c616e636500014072656c656173655f6672616d655f69648d01013c4f7074696f6e3c4672616d6549643e00013872656c656173655f726561736f6e1d0801644f7074696f6e3c426f6e6452656c65617365526561736f6e3e00001d0804184f7074696f6e04045401e1010108104e6f6e6500000010536f6d650400e101000001000021080000040800300025080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e6465645665630804540130045300000400490601185665633c543e000029080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454012d08045300000400310801185665633c543e00002d080c3c70616c6c65745f74726561737572791870616c6c657438426f6e644c6f7453756d6d617279000008012c626f6e645f6c6f745f69642c0124426f6e644c6f744964000114626f6e6473d40114426f6e6473000031080000022d080035080c3c70616c6c65745f74726561737572791870616c6c6574144572726f7204045400012c50426f6e64507572636861736552656a6563746564000004dc54686520707572636861736520776f756c64206e6f7420656e74657220746865207661756c742773206163636570746564206c6973742e785661756c744e6f74416363657074696e67426f6e64507572636861736573000104a8546865207661756c74206973206e6f7420616363657074696e6720626f6e64207075726368617365732e60426f6e64507572636861736542656c6f774d696e696d756d000204a45468652070757263686173652069732062656c6f7720746865206d696e696d756d20616d6f756e742e34496e7465726e616c4572726f720003046c416e20696e7465726e616c206572726f72206f636375727265642e6c4d61784163636570746564426f6e644c6f74734578636565646564000404fc546865207661756c7420616c72656164792068617320746865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f74732e784d617850656e64696e67426f6e6452656c65617365734578636565646564000504f0546f6f206d616e7920626f6e64206c6f742072656c656173657320617265207363686564756c656420666f72207468652073616d65206672616d652e3c426f6e644c6f744e6f74466f756e640006048054686520626f6e64206c6f7420636f756c64206e6f7420626520666f756e642e3c4e6f74426f6e644c6f744f776e6572000704945468652063616c6c657220646f6573206e6f74206f776e2074686520626f6e64206c6f742e5c426f6e644c6f74416c726561647952656c656173696e67000804b854686520626f6e64206c6f7420697320616c7265616479207363686564756c656420666f722072656c656173652e64426f6e64507572636861736541626f766553656375726974790009043101546865207661756c7420646f65736e2774206861766520656e6f75676820626974636f696e20736563757269747920746f20737570706f7274207468697320626f6e6420707572636861736598416374697665426f6e64416d6f756e7442656c6f77456e63756d62657265644261636b696e67000a0841014c69717569646174696e67207468697320626f6e64206c6f7420776f756c642074616b6520746865206163636f756e742062656c6f77206974732063726f7373636861696e2d656e63756d6265726564447472656173757279206261636b696e672e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e39080c4870616c6c65745f6665655f636f6e74726f6c1870616c6c6574144572726f720404540001044c53706f6e736f726564466565546f6f4869676800000425015468652072657175657374656420746970202b2066656520697320686967686572207468616e20746865206d6178696d756d20616c6c6f776564206279207468652073706f6e736f72048054686520604572726f726020656e756d206f6620746869732070616c6c65742e3d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574484f7065726174696f6e616c4163636f756e7404045400004c01347661756c745f6163636f756e74000130543a3a4163636f756e7449640001586d696e696e675f66756e64696e675f6163636f756e74000130543a3a4163636f756e7449640001486d696e696e675f626f745f6163636f756e74000130543a3a4163636f756e744964000144656e6372797074696f6e5f7075626b6579490401584f7061717565456e6372797074696f6e5075626b657900011c73706f6e736f72bc01504f7074696f6e3c543a3a4163636f756e7449643e0001506861735f756e69737761705f7472616e73666572200110626f6f6c0001347661756c745f63726561746564200110626f6f6c00013c626974636f696e5f6163637275616c180128543a3a42616c616e6365000154626974636f696e5f6170706c6965645f746f74616c180128543a3a42616c616e636500017c6861735f74726561737572795f706f6f6c5f70617274696369706174696f6e200110626f6f6c00014c6d696e696e675f736561745f6163637275616cd4010c7533320001646d696e696e675f736561745f6170706c6965645f746f74616cd4010c75333200016c6f7065726174696f6e616c5f726566657272616c735f636f756e74d4010c753332000140726566657272616c5f70656e64696e67200110626f6f6c00014c617661696c61626c655f726566657272616c73d4010c753332000150726577617264735f6561726e65645f636f756e74d4010c753332000154726577617264735f6561726e65645f616d6f756e74180128543a3a42616c616e6365000160726577617264735f636f6c6c65637465645f616d6f756e74180128543a3a42616c616e636500013869735f6f7065726174696f6e616c200110626f6f6c000041080000040830040045080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c65743452657761726473436f6e666967041c42616c616e636501180008016c6f7065726174696f6e616c5f726566657272616c5f726577617264c0011c42616c616e6365000154726566657272616c5f626f6e75735f726577617264c0011c42616c616e6365000049080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401080453000004003801185665633c543e00004d080c6c70616c6c65745f6f7065726174696f6e616c5f6163636f756e74731870616c6c6574144572726f7204045400014444416c726561647952656769737465726564000004d45468652063616c6c657220616c7265616479207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e70496e76616c6964526567697374726174696f6e5375626d69747465720001040d015468652063616c6c6572206973206e6f74206f6e65206f6620746865206163636f756e747320696e636c7564656420696e2074686520726567697374726174696f6e2e504163636f756e74416c72656164794c696e6b656400020425014f6e65206f66207468652070726f7669646564206163636f756e747320697320616c7265616479206c696e6b656420746f20616e206f7065726174696f6e616c206163636f756e742e4c496e76616c69644163636f756e7450726f6f66000304d84f6e65206f6620746865206c696e6b6564206163636f756e74206f776e6572736869702070726f6f667320697320696e76616c69642e544e6f744f7065726174696f6e616c4163636f756e74000404d45468652063616c6c657220686173206e6f74207265676973746572656420616e206f7065726174696f6e616c206163636f756e742e50496e76616c6964526566657272616c50726f6f66000504bc54686520726566657272616c2070726f6f66206f722073706f6e736f722070726f6f6620697320696e76616c69642e50526566657272616c50726f6f66457870697265640006047c54686520726566657272616c2070726f6f662068617320657870697265642e604e6f50726f677265737355706461746550726f7669646564000704e8546865207265717565737465642070726f677265737320706174636820646f6573206e6f7420636f6e7461696e20616e7920757064617465732e58456e63727970746564536572766572546f6f4c6f6e67000804fc54686520656e6372797074656420736572766572207061796c6f616420657863656564732074686520636f6e66696775726564206d6178206c656e6774682e4c4e6f7453706f6e736f724f6653706f6e736565000904dc5468652063616c6c6572206973206e6f74207468652073706f6e736f72206f6620746865207265717565737465642073706f6e7365652e404e6f50656e64696e6752657761726473000a04e0546865206f7065726174696f6e616c206163636f756e7420686173206e6f2070656e64696e67207265776172647320746f20636c61696d2e5c526577617264436c61696d42656c6f774d696e696d756d000b04a452657761726420636c61696d73206d757374206265206174206c65617374206f6e65204172676f6e2e60526577617264436c61696d4e6f7457686f6c654172676f6e000c04b452657761726420636c61696d73206d7573742062652077686f6c65204172676f6e20696e6372656d656e74732e64526577617264436c61696d4578636565647350656e64696e67000d04cc546865207265717565737465642072657761726420636c61696d20657863656564732070656e64696e6720726577617264732e645472656173757279496e73756666696369656e7446756e6473000e04350154686520747265617375727920646f6573206e6f742063757272656e746c79206861766520656e6f75676820617661696c61626c6520726573657276657320666f722074686520636c61696d2e48416c72656164794f7065726174696f6e616c000f048c546865206163636f756e7420697320616c7265616479206f7065726174696f6e616c2e604e6f74456c696769626c65466f7241637469766174696f6e001004ec546865206163636f756e7420686173206e6f7420736174697366696564206f7065726174696f6e616c20726571756972656d656e7473207965742e048054686520604572726f726020656e756d206f6620746869732070616c6c65742e51080c6070616c6c65745f657468657265756d5f76657269666965721474797065736846696e616c697a6564426561636f6e48656164657253746174650000040110736c6f742c010c753634000055080c6070616c6c65745f657468657265756d5f766572696669657214747970657354457865637574696f6e486561646572416e63686f720000140130626c6f636b5f6e756d6265722c0150457865637574696f6e426c6f636b4e756d62657200014074696d657374616d705f6d696c6c69732c010c753634000128626c6f636b5f68617368340148457865637574696f6e426c6f636b4861736800012c706172656e745f68617368340148457865637574696f6e426c6f636b4861736800013472656365697074735f726f6f743401305265636569707473526f6f74000059080c6070616c6c65745f657468657265756d5f76657269666965721474797065735453796e63436f6d6d6974746565507265706172656400000c0110726f6f743401104832353600011c7075626b6579735d08011901426f756e6465645665633c5075626c69634b657950726570617265642c20436f6e73745533323c7b2053594e435f434f4d4d49545445455f424f554e445f53495a45207d3e3e0001406167677265676174655f7075626b6579610801445075626c69634b6579507265706172656400005d080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e646564566563080454016108045300000400790801185665633c543e000061080c58736e6f776272696467655f6d696c6167726f5f626c73106b657973245075626c69634b65790000040114706f696e746508011c47726f7570473100006508103c736e6f776272696467655f616d636c18626c733338310c6563700c45435000000c010478690801084650000104796908010846500001047a69080108465000006908103c736e6f776272696467655f616d636c18626c733338310866700846500000080104786d08010c42696700010c7865737508010c69333200006d08103c736e6f776272696467655f616d636c18626c733338310c6269670c426967000004010477710801345b4368756e6b3b204e4c454e5d000071080000030e00000075080075080000050b0079080000026108007d080c406172676f6e5f7072696d69746976657320657468657265756d50457468657265756d426561636f6e5072657365740001081c4d61696e6e65740000001c4d696e696d616c0001000081080c6070616c6c65745f657468657265756d5f76657269666965721870616c6c6574144572726f7204045400015468536b697070656453796e63436f6d6d6974746565506572696f640000006c53796e63436f6d6d6974746565557064617465526571756972656400010040497272656c6576616e74557064617465000204d8417474657374656420686561646572206973206f6c646572207468616e206c61746573742066696e616c697a6564206865616465722e3c4e6f74426f6f747374726170706564000300a453796e63436f6d6d69747465655061727469636970616e74734e6f7453757065726d616a6f7269747900040060496e76616c69644865616465724d65726b6c6550726f6f660005007c496e76616c696453796e63436f6d6d69747465654d65726b6c6550726f6f660006006c496e76616c6964457865637574696f6e48656164657250726f6f6600070064496e76616c696446696e616c697a6564486561646572476170000804410154686520676170206265747765656e2066696e616c697a65642068656164657273206973206c6172676572207468616e207468652072657461696e656420686973746f726963616c2077696e646f772e604865616465724861736854726565526f6f744661696c65640009006c426c6f636b426f64794861736854726565526f6f744661696c6564000a007c53796e63436f6d6d69747465654861736854726565526f6f744661696c6564000b00745369676e696e67526f6f744861736854726565526f6f744661696c6564000c0068466f726b446174614861736854726565526f6f744661696c6564000d0080457870656374656446696e616c697a65644865616465724e6f7453746f726564000e0068424c53507265706172655075626c69634b6579734661696c6564000f0054424c53566572696669636174696f6e4661696c656400100058556e6578706563746564426561636f6e50726573657400110044496e76616c6964557064617465536c6f7400120068496e76616c696453796e63436f6d6d6974746565557064617465001308550154686520676976656e20757064617465206973206e6f7420696e2074686520657870656374656420706572696f642c206f722074686520676976656e206e6578742073796e6320636f6d6d697474656520646f6573b46e6f74206d6174636820746865206e6578742073796e6320636f6d6d697474656520696e2073746f726167652e1848616c746564001400048054686520604572726f726020656e756d206f6620746869732070616c6c65742e8508000004080502000089080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657454476c6f62616c49737375616e6365436f756e63696c04045400000c016c65706f63685f6d6963726f676f6e735f7065725f6172676f6e6f74180128543a3a42616c616e636500011c6d656d626572738d08013101426f756e64656442547265654d61703c483136302c20476c6f62616c49737375616e6365436f756e63696c4d656d6265723c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e000130746f74616c5f776569676874180128543a3a42616c616e636500008d080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d0204560191080453000004009508013842547265654d61703c4b2c20563e000091080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c65746c476c6f62616c49737375616e6365436f756e63696c4d656d62657204045400000c01286163636f756e745f6964000130543a3a4163636f756e7449640001187369676e65720d02011048313630000118776569676874180128543a3a42616c616e636500009508042042547265654d617008044b010d020456019108000400990800000099080000029d08009d08000004080d02910800a1080000040805023000a5080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657464436f756e63696c417070726f76616c5175657565456e7472790404540000200158617070726f76696e675f636f756e63696c5f68617368340110483235360001187461726765741902015c436f756e63696c417070726f76616c546172676574496400014c7461726765745f7061796c6f61645f68617368340110483235360001306475655f6672616d655f69642c011c4672616d65496400015870726576696f75735f617070726f76616c5f6861736834011048323536000134617070726f76616c5f6861736834011048323536000154617070726f7665645f746f74616c5f776569676874180128543a3a42616c616e63650001287369676e617475726573a90801f0426f756e64656442547265654d61703c483136302c204b656363616b5369676e61747572652c20543a3a4d6178436f756e63696c4d656d626572733e0000a9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d020456011104045300000400ad08013842547265654d61703c4b2c20563e0000ad08042042547265654d617008044b010d020456011104000400b108000000b108000002b50800b508000004080d02110400b9080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574404d696e74696e67417574686f7269747904045400003401286163636f756e745f6964000130543a3a4163636f756e74496400014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e00015c64657374696e6174696f6e5f7369676e696e675f6b65790d020110483136300001147374617465bd0801544d696e74696e67417574686f726974795374617465000194676174657761795f72656d61696e696e675f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e6365000194676174657761795f72656d61696e696e675f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500019070656e64696e675f72657365727665645f6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e636500016c6163746976655f70656e64696e675f7472616e736665725f696473c108012901426f756e6465645665633c483235362c3c5420617320436f6e6669673e3a3a0a4d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e3e00017c61637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e6365300164436f756e63696c417070726f76616c51756575654e6f6e636500017c61637469766174696f6e5f626173655f72657061796d656e745f71756f7465c00128543a3a42616c616e636500019061637469766174696f6e5f7369676e61747572655f72657061796d656e745f71756f7465c00128543a3a42616c616e6365000184646561637469766174696f6e5f617070726f76616c5f71756575655f6e6f6e63658d0101844f7074696f6e3c436f756e63696c417070726f76616c51756575654e6f6e63653e0000bd080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574544d696e74696e67417574686f72697479537461746500010c4450656e64696e6741637469766174696f6e0000001841637469766500010030446561637469766174696e6700020000c1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401340453000004002d0201185665633c543e0000c5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574485472616e736665724f75744f664172676f6e04045400003001406172676f6e5f6163636f756e745f6964000130543a3a4163636f756e7449640001506172676f6e5f7472616e736665725f6e6f6e63652c015c5472616e736665724f7574526571756573744e6f6e636500014464657374696e6174696f6e5f636861696e0502012c536f75726365436861696e0001546d6963726f676f6e735f7065725f6172676f6e6f74c00128543a3a42616c616e636500014c64657374696e6174696f6e5f6163636f756e740d0201104831363000016876616c69645f756e74696c5f657468657265756d5f626c6f636b2c014c457468657265756d426c6f636b4e756d62657200011461737365741502012441737365744b696e64000118616d6f756e74180128543a3a42616c616e63650001546d696e74696e675f617574686f726974795f746970180128543a3a42616c616e6365000164746f74616c5f61747461636865645f636f6c6c61746572616c180128543a3a42616c616e63650001986d696e74696e675f617574686f726974795f636f6c6c61746572616c5f62795f7369676e6572c908015101426f756e64656442547265654d61703c483136302c204d696e74696e67417574686f726974795472616e736665725265736572766174696f6e3c543e2c20543a3a0a4d6178436f756e63696c4d656d626572733e0001147374617465dd0801405472616e736665724f757453746174650000c9080c4c626f756e6465645f636f6c6c656374696f6e7344626f756e6465645f62747265655f6d61703c426f756e64656442547265654d61700c044b010d02045601cd08045300000400d108013842547265654d61703c4b2c20563e0000cd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75748c4d696e74696e67417574686f726974795472616e736665725265736572766174696f6e040454000010014c6d6963726f676f6e5f636f6c6c61746572616c180128543a3a42616c616e636500014c6d6963726f6e6f745f636f6c6c61746572616c180128543a3a42616c616e6365000140636f6c6c61746572616c5f7368617265180128543a3a42616c616e63650001247369676e61747572651104013c4b656363616b5369676e61747572650000d108042042547265654d617008044b010d02045601cd08000400d508000000d508000002d90800d908000004080d02cd0800dd080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f7574405472616e736665724f757453746174650001081c5374617274656400000014526561647900010000e1080c4c626f756e6465645f636f6c6c656374696f6e732c626f756e6465645f76656328426f756e64656456656308045401e508045300000400e90801185665633c543e0000e5080c6870616c6c65745f63726f7373636861696e5f7472616e73666572307472616e736665725f6f75747c50656e64696e67436f6c6c61746572616c697a6174696f6e5265717565737404045400000c012c7472616e736665725f69643401104832353600015072656d61696e696e675f636f6c6c61746572616c180128543a3a42616c616e636500017c72656d61696e696e675f6d696e74696e675f617574686f726974795f746970180128543a3a42616c616e63650000e908000002e50800ed080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c657458536f75726365436861696e43697263756c6174696f6e04045400000801446172676f6e5f63697263756c6174696f6e180128543a3a42616c616e636500014c6172676f6e6f745f63697263756c6174696f6e180128543a3a42616c616e63650000f1080c6870616c6c65745f63726f7373636861696e5f7472616e736665721870616c6c6574144572726f720404540001d878496e76616c69645472616e73666572546f4172676f6e41637469766974790000042d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d6174636820605472616e73666572546f4172676f6e53746172746564602e704e6f4761746577617950726f6f66426c6f636b7350726f7669646564000104f04174206c65617374206f6e652070726f76656e20676174657761792d616374697669747920626c6f636b206d75737420626520737570706c6965642e6c4e6f476174657761794163746976697469657350726f766964656400020429014174206c65617374206f6e652067617465776179206163746976697479206c6f67206d75737420626520737570706c69656420776974682074686520726563656970742070726f6f662e30496e76616c696450726f6f66000304c854686520457468657265756d2076657269666965722072656a65637465642074686520737570706c6965642070726f6f662e44556e737570706f72746564536f75726365000404d854686520736f7572636520636861696e206973206e6f7420636f6e6669677572656420666f7220696e626f756e6420636c61696d732e48556e737570706f7274656447617465776179000504e8546865206761746577617920646f6573206e6f74206d617463682074686520636f6e66696775726564206761746577617920616464726573732e40556e737570706f72746564546f6b656e000604e054686520746f6b656e206973206e6f7420737570706f7274656420756e6465722074686520636f6e6669677572656420676174657761792e98556e657870656374656450726576696f75734761746577617941637469766974794e6f6e636500070449015468652063616c6c6572277320657870656374656420616c72656164792d70726f76656e2067617465776179206163746976697479206e6f6e6365206973207374616c65206f7220696e636f72726563742e78556e65787065637465644761746577617941637469766974794e6f6e63650008040d015468652070726f76656e2067617465776179206163746976697479206e6f6e6365206973206e6f7420746865206e65787420636f6e746967756f7573206e6f6e63652e48496e76616c6964436861696e436f6e666967000904f454686520636f6e6669677572656420736f757263652d636861696e20736861706520697320696e636f6d706c657465206f72206d616c666f726d65642e54496e73756666696369656e744c6971756964697479000a04d4546865206275726e206163636f756e74206c61636b7320656e6f7567682062616c616e636520666f7220746865207061796f75742e604d696e74696e67417574686f726974794e6f74466f756e64000b04090154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920646f6573206e6f74206578697374206c6f63616c6c792e604d696e74696e67417574686f726974794d69736d61746368000c041d01546865206c6f63616c204d696e74696e6720417574686f7269747920646964206e6f74206d61746368207468652070726f76656e20457468657265756d2061637469766974792e7c556e65787065637465644d696e74696e67417574686f726974795374617465000d041101546865206c6f63616c204d696e74696e6720417574686f7269747920776173206e6f7420696e20746865206578706563746564206c6966656379636c652073746174652e44556e6b6e6f776e4f776e65725661756c74000e04b0546865206c6f63616c206f776e6572207661756c7420636f756c64206e6f74206265207265736f6c7665642e84496e76616c69644d696e74696e67417574686f726974795369676e696e674b6579000f04d854686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920697320696e76616c69642e844d696e74696e67417574686f72697479416c726561647952656769737465726564001004550154686520737570706c696564204d696e74696e6720417574686f72697479207369676e696e67206b657920616c7265616479206861732061206c697665206c6f63616c20617574686f72697479207265636f72642e98496e76616c69644d696e74696e67417574686f726974795369676e696e674b657950726f6f6600110841015468652070726f7669646564204d696e74696e6720417574686f72697479207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d1c7369676e65722e84496e76616c69644d696e74696e67417574686f72697479436f6c6c61746572616c001204d454686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c20697320696e76616c69642e74476c6f62616c49737375616e6365436f756e63696c4e6f74466f756e6400130449015468652061637469766520476c6f62616c2049737375616e636520436f756e63696c20686173206e6f74206265656e2073656564656420666f7220746869732064657374696e6174696f6e20636861696e2e70496e76616c6964476c6f62616c49737375616e6365436f756e63696c001404250154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20697320656d707479206f7220696e7465726e616c6c7920696e636f6e73697374656e742e904475706c6963617465476c6f62616c49737375616e6365436f756e63696c5369676e6572001504350154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65207369676e6572206d6f7265207468616e206f6e63652e944475706c6963617465476c6f62616c49737375616e6365436f756e63696c4163636f756e74001604390154686520737570706c69656420476c6f62616c2049737375616e636520436f756e63696c20636f6e7461696e73207468652073616d65206163636f756e74206d6f7265207468616e206f6e63652e64496e76616c6964436f756e63696c5369676e657250726f6f6600170439015468652070726f766964656420636f756e63696c207369676e65722070726f6f6620646964206e6f74206d6174636820746865207265636f766572656420457468657265756d207369676e65722e8c476c6f62616c49737375616e6365436f756e63696c4d656d6265724e6f74466f756e640018045501546865206f726967696e206973206e6f7420616e2061637469766520476c6f62616c2049737375616e636520436f756e63696c206d656d62657220666f72207468652064657374696e6174696f6e20636861696e2e68436f756e63696c5369676e65724e6f74526567697374657265640019042d01546865206163636f756e7420686173206e6f742072656769737465726564206120636f756e63696c207369676e657220666f7220746869732064657374696e6174696f6e20636861696e2e84436f756e63696c417070726f76616c5175657565456e7472794e6f74466f756e64001a04e8546865204d696e74696e6720417574686f7269747920617070726f76616c20717565756520656e74727920646f6573206e6f742065786973742e78436f756e63696c417070726f76616c416c72656164795265636f72646564001b0409015468697320636f756e63696c206d656d62657220616c726561647920617070726f7665642074686520717565756564204d696e74696e6720417574686f726974792e64496e76616c6964466f72636553657441667465724e6f6e6365001c04110154686520666f7263652d7365742063757420706f696e742077617320626568696e6420616c726561647920636f6e6669726d65642071756575652070726f67726573732e9843616e6e6f74466f72636553657451756f72756d417070726f7665645175657565456e747279001d04310154686520666f7263652d7365742063757420776f756c642064697363617264206120717565756520656e747279207468617420616c726561647920686173206c6f63616c2071756f72756d2e7c496e76616c6964436f756e63696c417070726f76616c5369676e6174757265001e044d015468652070726f766964656420636f756e63696c20617070726f76616c207369676e617475726520646964206e6f74206d617463682074686520657870656374656420457468657265756d207369676e65722e8c4e6f436f756e63696c417070726f76616c5369676e61747572657350726f7669646564001f04e44174206c65617374206f6e6520636f756e63696c20617070726f76616c207369676e6174757265206d75737420626520737570706c6965642e9c496e73756666696369656e74436f6d6d69747465644d6963726f676f6e436f6c6c61746572616c0020084901546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564206d6963726f676f6e20636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792e98496e73756666696369656e74436f6d6d69747465644172676f6e6f74436f6c6c61746572616c0021084501546865206f70657261746f7220646f6573206e6f74206861766520656e6f7567682072656d61696e696e6720636f6d6d6974746564204172676f6e6f7420636f6c6c61746572616c20666f722074686973484d696e74696e6720417574686f726974792eb0496e76616c69644d696e74696e67417574686f72697479446561637469766174696f6e5369676e617475726500220841015468652070726f7669646564207369676e65722d617574686f72697a656420646561637469766174696f6e207369676e617475726520646964206e6f74206d6174636820746865206578706563746564784d696e74696e6720417574686f72697479207369676e696e67206b65792e68496e76616c69644d6963726f676f6e735065724172676f6e6f740023043d0154686520636f756e63696c2d6d616e61676564204172676f6e6f7420666c6f6f7220636f756c64206e6f742062652064657465726d696e65642066726f6d2063757272656e742070726963696e672e984d696e74696e67417574686f72697479436f6c6c61746572616c42656c6f774d696e696d756d0024084d0154686520737570706c696564204d696e74696e6720417574686f7269747920636f6c6c61746572616c2069732062656c6f772074686520636f6e66696775726564207065722d636861696e206d696e696d756d686e6f726d616c697a6564206d6963726f676f6e2076616c75652ec4496e76616c69644d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002504090154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e6720697320696e7465726e616c6c7920696e76616c69642ec44d697373696e674d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67002604350154686520636f6e666967757265642061637469766174696f6e2072657061796d656e742070726963696e67206973206d697373696e6720666f72207468697320736f7572636520636861696e2e58496e76616c69644761746577617941637469766974790027043d0154686520457468657265756d206576656e7420746f70696373206f72207061796c6f616420646f206e6f74206d61746368206120737570706f7274656420676174657761792061637469766974792e444761746577617953796e635061757365640028083d015468697320736f7572636520636861696e206973207061757365642064756520746f20676174657761792073796e63206d6973616c69676e6d656e7420616e64206e65656473206f70657261746f72247265636f766572792e60496e76616c69645472616e736665724f7574416d6f756e74002904a0546865207472616e736665722d6f757420616d6f756e74206d757374206265206e6f6e7a65726f2e6c496e76616c69645472616e736665724f7574526563697069656e74002a041501546865207472616e736665722d6f757420726563697069656e74206d757374206265206e6f6e7a65726f20666f72207468652064657374696e6174696f6e20636861696e2e744d697373696e675665726966696564457865637574696f6e426c6f636b002b0845014e6f2076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320617661696c61626c6520746f20616e63686f722061207472616e736665722d6f7574386578706972792077696e646f772e6c5374616c655665726966696564457865637574696f6e426c6f636b002c084d01546865206c61746573742076657269666965722d6261636b656420457468657265756d20657865637574696f6e20626c6f636b20697320746f6f206f6c6420746f20736166656c79206f70656e2061206e6577347472616e73666572206f75742e4c5472616e736665724f75744e6f74466f756e64002d04b0546865206f7574626f756e64207472616e73666572207265636f726420646f6573206e6f742065786973742e5c5472616e736665724f7574416c72656164795265616479002e083d01546865206f7574626f756e64207472616e736665722063616e6e6f7420616363657074206d6f726520636f6c6c61746572616c206265636175736520697420697320616c72656164792066756c6c7920636f76657265642e485472616e736665724f757445787069726564002f045d01546865206f7574626f756e64207472616e73666572207265717565737420697320616c72656164792065787069726564206f6e20746865206c617465737420766572696669656420457468657265756d20626c6f636b2e64496e76616c69645472616e73666572436f6c6c61746572616c00300421015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720697320696e76616c696420666f722074686973207472616e736665722061737365742e7c496e76616c69645472616e73666572436f6c6c61746572616c55706461746500310451015468652070726f7669646564207472616e7366657220636f6c6c61746572616c20726f7720646964206e6f7420616476616e636520746865207369676e65722773206c6f63616c207265736572766174696f6e2e88496e76616c69645472616e73666572436f6c6c61746572616c5369676e61747572650032042901546865207472616e7366657220636f6c6c61746572616c207369676e617475726520646964206e6f74206d617463682074686520617574686f72697479207369676e696e67206b65792e98496e73756666696369656e744d696e74696e67417574686f72697479436f6c6c61746572616c003304590154686520617574686f7269747920646f6573206e6f74206861766520656e6f7567682072656d61696e696e67206761746577617920636f6c6c61746572616c20666f722074686973207472616e7366657220726f772e8c5472616e73666572436f6c6c61746572616c496e6372656d656e74546f6f536d616c6c003408490154686520636f6c6c61746572616c20696e6372656d656e742069732062656c6f772074686520636f6e66696775726564206d696e696d756d20616e6420646f6573206e6f7420636f6d706c65746520746865247472616e736665722e68546f6f4d616e7950656e64696e675472616e736665724f75747300350851015468652064657374696e6174696f6e20636861696e20616c726561647920747261636b7320746865206d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f75742472657175657374732e048054686520604572726f726020656e756d206f6620746869732070616c6c65742ef508102873705f72756e74696d651c67656e657269634c756e636865636b65645f65787472696e73696348556e636865636b656445787472696e736963101c4164647265737301fd021043616c6c01f502245369676e6174757265010d0414457874726101f90800040038000000f9080000042cfd080109050909090d09110919091d09210925092d0900fd0810306672616d655f73797374656d28657874656e73696f6e7338617574686f72697a655f63616c6c34417574686f72697a6543616c6c04045400000000010910306672616d655f73797374656d28657874656e73696f6e7354636865636b5f6e6f6e5f7a65726f5f73656e64657248436865636b4e6f6e5a65726f53656e64657204045400000000050910306672616d655f73797374656d28657874656e73696f6e7348636865636b5f737065635f76657273696f6e40436865636b5370656356657273696f6e04045400000000090910306672616d655f73797374656d28657874656e73696f6e7340636865636b5f74785f76657273696f6e38436865636b547856657273696f6e040454000000000d0910306672616d655f73797374656d28657874656e73696f6e7334636865636b5f67656e6573697330436865636b47656e6573697304045400000000110910306672616d655f73797374656d28657874656e73696f6e733c636865636b5f6d6f7274616c69747938436865636b4d6f7274616c697479040454000004001509010c45726100001509102873705f72756e74696d651c67656e657269630c6572610c4572610001010420496d6d6f7274616c0000001c4d6f7274616c31040008000001001c4d6f7274616c32040008000002001c4d6f7274616c33040008000003001c4d6f7274616c34040008000004001c4d6f7274616c35040008000005001c4d6f7274616c36040008000006001c4d6f7274616c37040008000007001c4d6f7274616c38040008000008001c4d6f7274616c3904000800000900204d6f7274616c313004000800000a00204d6f7274616c313104000800000b00204d6f7274616c313204000800000c00204d6f7274616c313304000800000d00204d6f7274616c313404000800000e00204d6f7274616c313504000800000f00204d6f7274616c313604000800001000204d6f7274616c313704000800001100204d6f7274616c313804000800001200204d6f7274616c313904000800001300204d6f7274616c323004000800001400204d6f7274616c323104000800001500204d6f7274616c323204000800001600204d6f7274616c323304000800001700204d6f7274616c323404000800001800204d6f7274616c323504000800001900204d6f7274616c323604000800001a00204d6f7274616c323704000800001b00204d6f7274616c323804000800001c00204d6f7274616c323904000800001d00204d6f7274616c333004000800001e00204d6f7274616c333104000800001f00204d6f7274616c333204000800002000204d6f7274616c333304000800002100204d6f7274616c333404000800002200204d6f7274616c333504000800002300204d6f7274616c333604000800002400204d6f7274616c333704000800002500204d6f7274616c333804000800002600204d6f7274616c333904000800002700204d6f7274616c343004000800002800204d6f7274616c343104000800002900204d6f7274616c343204000800002a00204d6f7274616c343304000800002b00204d6f7274616c343404000800002c00204d6f7274616c343504000800002d00204d6f7274616c343604000800002e00204d6f7274616c343704000800002f00204d6f7274616c343804000800003000204d6f7274616c343904000800003100204d6f7274616c353004000800003200204d6f7274616c353104000800003300204d6f7274616c353204000800003400204d6f7274616c353304000800003500204d6f7274616c353404000800003600204d6f7274616c353504000800003700204d6f7274616c353604000800003800204d6f7274616c353704000800003900204d6f7274616c353804000800003a00204d6f7274616c353904000800003b00204d6f7274616c363004000800003c00204d6f7274616c363104000800003d00204d6f7274616c363204000800003e00204d6f7274616c363304000800003f00204d6f7274616c363404000800004000204d6f7274616c363504000800004100204d6f7274616c363604000800004200204d6f7274616c363704000800004300204d6f7274616c363804000800004400204d6f7274616c363904000800004500204d6f7274616c373004000800004600204d6f7274616c373104000800004700204d6f7274616c373204000800004800204d6f7274616c373304000800004900204d6f7274616c373404000800004a00204d6f7274616c373504000800004b00204d6f7274616c373604000800004c00204d6f7274616c373704000800004d00204d6f7274616c373804000800004e00204d6f7274616c373904000800004f00204d6f7274616c383004000800005000204d6f7274616c383104000800005100204d6f7274616c383204000800005200204d6f7274616c383304000800005300204d6f7274616c383404000800005400204d6f7274616c383504000800005500204d6f7274616c383604000800005600204d6f7274616c383704000800005700204d6f7274616c383804000800005800204d6f7274616c383904000800005900204d6f7274616c393004000800005a00204d6f7274616c393104000800005b00204d6f7274616c393204000800005c00204d6f7274616c393304000800005d00204d6f7274616c393404000800005e00204d6f7274616c393504000800005f00204d6f7274616c393604000800006000204d6f7274616c393704000800006100204d6f7274616c393804000800006200204d6f7274616c393904000800006300244d6f7274616c31303004000800006400244d6f7274616c31303104000800006500244d6f7274616c31303204000800006600244d6f7274616c31303304000800006700244d6f7274616c31303404000800006800244d6f7274616c31303504000800006900244d6f7274616c31303604000800006a00244d6f7274616c31303704000800006b00244d6f7274616c31303804000800006c00244d6f7274616c31303904000800006d00244d6f7274616c31313004000800006e00244d6f7274616c31313104000800006f00244d6f7274616c31313204000800007000244d6f7274616c31313304000800007100244d6f7274616c31313404000800007200244d6f7274616c31313504000800007300244d6f7274616c31313604000800007400244d6f7274616c31313704000800007500244d6f7274616c31313804000800007600244d6f7274616c31313904000800007700244d6f7274616c31323004000800007800244d6f7274616c31323104000800007900244d6f7274616c31323204000800007a00244d6f7274616c31323304000800007b00244d6f7274616c31323404000800007c00244d6f7274616c31323504000800007d00244d6f7274616c31323604000800007e00244d6f7274616c31323704000800007f00244d6f7274616c31323804000800008000244d6f7274616c31323904000800008100244d6f7274616c31333004000800008200244d6f7274616c31333104000800008300244d6f7274616c31333204000800008400244d6f7274616c31333304000800008500244d6f7274616c31333404000800008600244d6f7274616c31333504000800008700244d6f7274616c31333604000800008800244d6f7274616c31333704000800008900244d6f7274616c31333804000800008a00244d6f7274616c31333904000800008b00244d6f7274616c31343004000800008c00244d6f7274616c31343104000800008d00244d6f7274616c31343204000800008e00244d6f7274616c31343304000800008f00244d6f7274616c31343404000800009000244d6f7274616c31343504000800009100244d6f7274616c31343604000800009200244d6f7274616c31343704000800009300244d6f7274616c31343804000800009400244d6f7274616c31343904000800009500244d6f7274616c31353004000800009600244d6f7274616c31353104000800009700244d6f7274616c31353204000800009800244d6f7274616c31353304000800009900244d6f7274616c31353404000800009a00244d6f7274616c31353504000800009b00244d6f7274616c31353604000800009c00244d6f7274616c31353704000800009d00244d6f7274616c31353804000800009e00244d6f7274616c31353904000800009f00244d6f7274616c3136300400080000a000244d6f7274616c3136310400080000a100244d6f7274616c3136320400080000a200244d6f7274616c3136330400080000a300244d6f7274616c3136340400080000a400244d6f7274616c3136350400080000a500244d6f7274616c3136360400080000a600244d6f7274616c3136370400080000a700244d6f7274616c3136380400080000a800244d6f7274616c3136390400080000a900244d6f7274616c3137300400080000aa00244d6f7274616c3137310400080000ab00244d6f7274616c3137320400080000ac00244d6f7274616c3137330400080000ad00244d6f7274616c3137340400080000ae00244d6f7274616c3137350400080000af00244d6f7274616c3137360400080000b000244d6f7274616c3137370400080000b100244d6f7274616c3137380400080000b200244d6f7274616c3137390400080000b300244d6f7274616c3138300400080000b400244d6f7274616c3138310400080000b500244d6f7274616c3138320400080000b600244d6f7274616c3138330400080000b700244d6f7274616c3138340400080000b800244d6f7274616c3138350400080000b900244d6f7274616c3138360400080000ba00244d6f7274616c3138370400080000bb00244d6f7274616c3138380400080000bc00244d6f7274616c3138390400080000bd00244d6f7274616c3139300400080000be00244d6f7274616c3139310400080000bf00244d6f7274616c3139320400080000c000244d6f7274616c3139330400080000c100244d6f7274616c3139340400080000c200244d6f7274616c3139350400080000c300244d6f7274616c3139360400080000c400244d6f7274616c3139370400080000c500244d6f7274616c3139380400080000c600244d6f7274616c3139390400080000c700244d6f7274616c3230300400080000c800244d6f7274616c3230310400080000c900244d6f7274616c3230320400080000ca00244d6f7274616c3230330400080000cb00244d6f7274616c3230340400080000cc00244d6f7274616c3230350400080000cd00244d6f7274616c3230360400080000ce00244d6f7274616c3230370400080000cf00244d6f7274616c3230380400080000d000244d6f7274616c3230390400080000d100244d6f7274616c3231300400080000d200244d6f7274616c3231310400080000d300244d6f7274616c3231320400080000d400244d6f7274616c3231330400080000d500244d6f7274616c3231340400080000d600244d6f7274616c3231350400080000d700244d6f7274616c3231360400080000d800244d6f7274616c3231370400080000d900244d6f7274616c3231380400080000da00244d6f7274616c3231390400080000db00244d6f7274616c3232300400080000dc00244d6f7274616c3232310400080000dd00244d6f7274616c3232320400080000de00244d6f7274616c3232330400080000df00244d6f7274616c3232340400080000e000244d6f7274616c3232350400080000e100244d6f7274616c3232360400080000e200244d6f7274616c3232370400080000e300244d6f7274616c3232380400080000e400244d6f7274616c3232390400080000e500244d6f7274616c3233300400080000e600244d6f7274616c3233310400080000e700244d6f7274616c3233320400080000e800244d6f7274616c3233330400080000e900244d6f7274616c3233340400080000ea00244d6f7274616c3233350400080000eb00244d6f7274616c3233360400080000ec00244d6f7274616c3233370400080000ed00244d6f7274616c3233380400080000ee00244d6f7274616c3233390400080000ef00244d6f7274616c3234300400080000f000244d6f7274616c3234310400080000f100244d6f7274616c3234320400080000f200244d6f7274616c3234330400080000f300244d6f7274616c3234340400080000f400244d6f7274616c3234350400080000f500244d6f7274616c3234360400080000f600244d6f7274616c3234370400080000f700244d6f7274616c3234380400080000f800244d6f7274616c3234390400080000f900244d6f7274616c3235300400080000fa00244d6f7274616c3235310400080000fb00244d6f7274616c3235320400080000fc00244d6f7274616c3235330400080000fd00244d6f7274616c3235340400080000fe00244d6f7274616c3235350400080000ff0000190910306672616d655f73797374656d28657874656e73696f6e732c636865636b5f6e6f6e636528436865636b4e6f6e636504045400000400d40120543a3a4e6f6e636500001d0910306672616d655f73797374656d28657874656e73696f6e7330636865636b5f7765696768742c436865636b576569676874040454000000002109086870616c6c65745f7472616e73616374696f6e5f7061796d656e74604368617267655472616e73616374696f6e5061796d656e7404045400000400c0013042616c616e63654f663c543e0000250908746672616d655f6d657461646174615f686173685f657874656e73696f6e44436865636b4d657461646174614861736804045400000401106d6f6465290901104d6f64650000290908746672616d655f6d657461646174615f686173685f657874656e73696f6e104d6f64650001082044697361626c65640000001c456e61626c6564000100002d0910306672616d655f73797374656d28657874656e73696f6e73387765696768745f7265636c61696d345765696768745265636c61696d04045400000000310904184f7074696f6e04045401040108104e6f6e6500000010536f6d650400040000010000350908346172676f6e5f72756e74696d651c52756e74696d6500000000801853797374656d011853797374656d501c4163636f756e7401010402000c4101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008004e8205468652066756c6c206163636f756e7420696e666f726d6174696f6e20666f72206120706172746963756c6172206163636f756e742049442e3845787472696e736963436f756e74000010040004b820546f74616c2065787472696e7369637320636f756e7420666f72207468652063757272656e7420626c6f636b2e40496e686572656e74734170706c696564010020040004a4205768657468657220616c6c20696e686572656e74732068617665206265656e206170706c6965642e2c426c6f636b576569676874010024180000000000000488205468652063757272656e742077656967687420666f722074686520626c6f636b2e24426c6f636b53697a6500001004000cb020546f74616c2073697a652028696e20627974657329206f66207468652063757272656e7420626c6f636b2e00c820547261636b73207468652073697a65206f66207468652068656164657220616e6420616c6c2065787472696e736963732e24426c6f636b486173680101040510348000000000000000000000000000000000000000000000000000000000000000000498204d6170206f6620626c6f636b206e756d6265727320746f20626c6f636b206861736865732e3445787472696e736963446174610101040510380400043d012045787472696e73696373206461746120666f72207468652063757272656e7420626c6f636b20286d61707320616e2065787472696e736963277320696e64657820746f206974732064617461292e184e756d6265720100101000000000040901205468652063757272656e7420626c6f636b206e756d626572206265696e672070726f6365737365642e205365742062792060657865637574655f626c6f636b602e28506172656e744861736801003480000000000000000000000000000000000000000000000000000000000000000004702048617368206f66207468652070726576696f757320626c6f636b2e1844696765737401003c040004f020446967657374206f66207468652063757272656e7420626c6f636b2c20616c736f2070617274206f662074686520626c6f636b206865616465722e184576656e747301004c04001ca0204576656e7473206465706f736974656420666f72207468652063757272656e7420626c6f636b2e001d01204e4f54453a20546865206974656d20697320756e626f756e6420616e642073686f756c64207468657265666f7265206e657665722062652072656164206f6e20636861696e2ed020497420636f756c64206f746865727769736520696e666c6174652074686520506f562073697a65206f66206120626c6f636b2e002d01204576656e747320686176652061206c6172676520696e2d6d656d6f72792073697a652e20426f7820746865206576656e747320746f206e6f7420676f206f75742d6f662d6d656d6f7279fc206a75737420696e206361736520736f6d656f6e65207374696c6c207265616473207468656d2066726f6d2077697468696e207468652072756e74696d652e284576656e74436f756e74010010100000000004b820546865206e756d626572206f66206576656e747320696e2074686520604576656e74733c543e60206c6973742e2c4576656e74546f70696373010104023431020400282501204d617070696e67206265747765656e206120746f7069632028726570726573656e74656420627920543a3a486173682920616e64206120766563746f72206f6620696e646578657394206f66206576656e747320696e2074686520603c4576656e74733c543e3e60206c6973742e00510120416c6c20746f70696320766563746f727320686176652064657465726d696e69737469632073746f72616765206c6f636174696f6e7320646570656e64696e67206f6e2074686520746f7069632e2054686973450120616c6c6f7773206c696768742d636c69656e747320746f206c6576657261676520746865206368616e67657320747269652073746f7261676520747261636b696e67206d656368616e69736d20616e64e420696e2063617365206f66206368616e67657320666574636820746865206c697374206f66206576656e7473206f6620696e7465726573742e005901205468652076616c756520686173207468652074797065206028426c6f636b4e756d626572466f723c543e2c204576656e74496e646578296020626563617573652069662077652075736564206f6e6c79206a7573744d012074686520604576656e74496e64657860207468656e20696e20636173652069662074686520746f70696320686173207468652073616d6520636f6e74656e7473206f6e20746865206e65787420626c6f636b0101206e6f206e6f74696669636174696f6e2077696c6c20626520747269676765726564207468757320746865206576656e74206d69676874206265206c6f73742e484c61737452756e74696d65557067726164650000390204000455012053746f726573207468652060737065635f76657273696f6e6020616e642060737065635f6e616d6560206f66207768656e20746865206c6173742072756e74696d6520757067726164652068617070656e65642e44426c6f636b7354696c6c55706772616465000008040004ec204e756d626572206f6620626c6f636b732074696c6c207468652070656e64696e6720636f64652075706772616465206973206170706c6965642e545570677261646564546f553332526566436f756e740100200400044d012054727565206966207765206861766520757067726164656420736f207468617420607479706520526566436f756e74602069732060753332602e2046616c7365202864656661756c7429206966206e6f742e605570677261646564546f547269706c65526566436f756e740100200400085d012054727565206966207765206861766520757067726164656420736f2074686174204163636f756e74496e666f20636f6e7461696e73207468726565207479706573206f662060526566436f756e74602e2046616c736548202864656661756c7429206966206e6f742e38457865637574696f6e506861736500002902040004882054686520657865637574696f6e207068617365206f662074686520626c6f636b2e44417574686f72697a65645570677261646500004502040004b82060536f6d6560206966206120636f6465207570677261646520686173206265656e20617574686f72697a65642e6045787472696e7369635765696768745265636c61696d65640100280800001ca02054686520776569676874207265636c61696d656420666f72207468652065787472696e7369632e002101205468697320696e666f726d6174696f6e20697320617661696c61626c6520756e74696c2074686520656e64206f66207468652065787472696e73696320657865637574696f6e2e2101204d6f726520707265636973656c79207468697320696e666f726d6174696f6e2069732072656d6f76656420696e20606e6f74655f6170706c6965645f65787472696e736963602e007101204c6f67696320646f696e6720736f6d6520706f73742064697370617463682077656967687420726564756374696f6e206d7573742075706461746520746869732073746f7261676520746f2061766f6964206475706c69636174652c20726564756374696f6e2e01490201581830426c6f636b576569676874735902fd01c2a0e766000b00a0724e180913ffffffffffffffff2261c91900010bb81711ca5d061332333333333333b3010b00f8d53ad20613ffffffffffffffbf0100002261c91900010bb8bfaddda3081332333333333333f3010b00a0724e180913ffffffffffffffff010b00a89c1346021300000000000000402261c9190000000004d020426c6f636b20262065787472696e7369637320776569676874733a20626173652076616c75657320616e64206c696d6974732e2c426c6f636b4c656e67746869023400003c0000005000000050000004a820546865206d6178696d756d206c656e677468206f66206120626c6f636b2028696e206279746573292e38426c6f636b48617368436f756e74101000100000045501204d6178696d756d206e756d626572206f6620626c6f636b206e756d62657220746f20626c6f636b2068617368206d617070696e677320746f206b65657020286f6c64657374207072756e6564206669727374292e20446257656967687475024040787d010000000000e1f505000000000409012054686520776569676874206f662072756e74696d65206461746162617365206f7065726174696f6e73207468652072756e74696d652063616e20696e766f6b652e1c56657273696f6e79026904146172676f6e146172676f6e01000000970000000a00000054df6acb689907609b0500000037e397fc7c91f5e402000000ccd9de6396c899ca0100000040fe3ad401f8959a06000000d2bc9897eed08f1503000000f78b278be53f454c02000000bc9d89904f5b923f01000000ab3c0572291feb8b0200000037c8bb1350a9a2a804000000f3ff14d5ab5270590300000061571683e6d7a7c8010000005e4dc2ce83c23f0901000000e6683faaa563317a0200000011de59f9923f03d80100000051c97e4020145cb001000000bab599c4f0d362c601000000fff0fb031985f8a1020000000090f9d890bb0bb20100000005dd9be92cc17d2803000000ed99c5acb25eedf503000000fbc577b9d747efd60100000005000000010484204765742074686520636861696e277320696e2d636f64652076657273696f6e2e28535335385072656669789c082a0014a8205468652064657369676e61746564205353353820707265666978206f66207468697320636861696e2e0039012054686973207265706c6163657320746865202273733538466f726d6174222070726f7065727479206465636c6172656420696e2074686520636861696e20737065632e20526561736f6e20697331012074686174207468652072756e74696d652073686f756c64206b6e6f772061626f7574207468652070726566697820696e206f7264657220746f206d616b6520757365206f662069742061737020616e206964656e746966696572206f662074686520636861696e2e018d02001c44696765737473011c44696765737473042c54656d7044696765737473000091020400000001800001d902012454696d657374616d70012454696d657374616d70080c4e6f7701003020000000000000000004a0205468652063757272656e742074696d6520666f72207468652063757272656e7420626c6f636b2e24446964557064617465010020040010d82057686574686572207468652074696d657374616d7020686173206265656e207570646174656420696e207468697320626c6f636b2e00550120546869732076616c7565206973207570646174656420746f206074727565602075706f6e207375636365737366756c207375626d697373696f6e206f6620612074696d657374616d702062792061206e6f64652e4501204974206973207468656e20636865636b65642061742074686520656e64206f66206561636820626c6f636b20657865637574696f6e20696e2074686520606f6e5f66696e616c697a656020686f6f6b2e01dd020004344d696e696d756d506572696f6430200100000000000000188c20546865206d696e696d756d20706572696f64206265747765656e20626c6f636b732e004d012042652061776172652074686174207468697320697320646966666572656e7420746f20746865202a65787065637465642a20706572696f6420746861742074686520626c6f636b2070726f64756374696f6e4901206170706172617475732070726f76696465732e20596f75722063686f73656e20636f6e73656e7375732073797374656d2077696c6c2067656e6572616c6c7920776f726b2077697468207468697320746f61012064657465726d696e6520612073656e7369626c6520626c6f636b2074696d652e20466f72206578616d706c652c20696e2074686520417572612070616c6c65742069742077696c6c20626520646f75626c6520746869737020706572696f64206f6e2064656661756c742073657474696e67732e0002204d756c746973696701204d756c746973696704244d756c7469736967730001080502e102e502040004942054686520736574206f66206f70656e206d756c7469736967206f7065726174696f6e732e01f10201840c2c4465706f736974426173651840a005000000000000000000000000000018590120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e672061206d756c746973696720657865637574696f6e206f7220746f842073746f726520612064697370617463682063616c6c20666f72206c617465722e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069733101206034202b2073697a656f662828426c6f636b4e756d6265722c2042616c616e63652c204163636f756e74496429296020627974657320616e642077686f7365206b65792073697a652069738020603332202b2073697a656f66284163636f756e74496429602062797465732e344465706f736974466163746f721840a00000000000000000000000000000000c55012054686520616d6f756e74206f662063757272656e6379206e65656465642070657220756e6974207468726573686f6c64207768656e206372656174696e672061206d756c746973696720657865637574696f6e2e00250120546869732069732068656c6420666f7220616464696e67203332206279746573206d6f726520696e746f2061207072652d6578697374696e672073746f726167652076616c75652e384d61785369676e61746f7269657310106400000004ec20546865206d6178696d756d20616d6f756e74206f66207369676e61746f7269657320616c6c6f77656420696e20746865206d756c74697369672e013105031450726f7879011450726f7879081c50726f78696573010104050035054400000000000000000000000000000000000845012054686520736574206f66206163636f756e742070726f786965732e204d61707320746865206163636f756e74207768696368206861732064656c65676174656420746f20746865206163636f756e7473210120776869636820617265206265696e672064656c65676174656420746f2c20746f67657468657220776974682074686520616d6f756e742068656c64206f6e206465706f7369742e34416e6e6f756e63656d656e74730101040500450544000000000000000000000000000000000004ac2054686520616e6e6f756e63656d656e7473206d616465206279207468652070726f787920286b6579292e01f9020194184050726f78794465706f736974426173651840b004000000000000000000000000000010110120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720612070726f78792e00010120546869732069732068656c6420666f7220616e206164646974696f6e616c2073746f72616765206974656d2077686f73652076616c75652073697a652069732501206073697a656f662842616c616e6365296020627974657320616e642077686f7365206b65792073697a65206973206073697a656f66284163636f756e74496429602062797465732e4850726f78794465706f736974466163746f721840a500000000000000000000000000000014bc2054686520616d6f756e74206f662063757272656e6379206e6565646564207065722070726f78792061646465642e00350120546869732069732068656c6420666f7220616464696e6720333220627974657320706c757320616e20696e7374616e6365206f66206050726f78795479706560206d6f726520696e746f20616101207072652d6578697374696e672073746f726167652076616c75652e20546875732c207768656e20636f6e6669677572696e67206050726f78794465706f736974466163746f7260206f6e652073686f756c642074616b65f420696e746f206163636f756e7420603332202b2070726f78795f747970652e656e636f646528292e6c656e282960206279746573206f6620646174612e284d617850726f7869657310102000000004f020546865206d6178696d756d20616d6f756e74206f662070726f7869657320616c6c6f77656420666f7220612073696e676c65206163636f756e742e284d617850656e64696e6710102000000004450120546865206d6178696d756d20616d6f756e74206f662074696d652d64656c6179656420616e6e6f756e63656d656e747320746861742061726520616c6c6f77656420746f2062652070656e64696e672e5c416e6e6f756e63656d656e744465706f736974426173651840d804000000000000000000000000000010310120546865206261736520616d6f756e74206f662063757272656e6379206e656564656420746f207265736572766520666f72206372656174696e6720616e20616e6e6f756e63656d656e742e00490120546869732069732068656c64207768656e2061206e65772073746f72616765206974656d20686f6c64696e672061206042616c616e636560206973206372656174656420287479706963616c6c7920313620206279746573292e64416e6e6f756e63656d656e744465706f736974466163746f7218404a01000000000000000000000000000010d42054686520616d6f756e74206f662063757272656e6379206e65656465642070657220616e6e6f756e63656d656e74206d6164652e00590120546869732069732068656c6420666f7220616464696e6720616e20604163636f756e744964602c2060486173686020616e642060426c6f636b4e756d6265726020287479706963616c6c79203638206279746573298c20696e746f2061207072652d6578697374696e672073746f726167652076616c75652e01550504145469636b7301145469636b73143050726576696f75735469636b010030200000000000000000002c43757272656e745469636b010030200000000000000000002c47656e657369735469636b010030200000000000000000003447656e657369735469636b657201005905080000004c526563656e74426c6f636b7341745469636b7301010405305d05040008e820426c6f636b732066726f6d20746865206c61737420313030207469636b732e205472696d6d656420696e206f6e5f696e697469616c697a652ef4204e4f54453a2063616e6e6f7420696e636c756465207468652063757272656e7420626c6f636b206861736820756e74696c206e65787420626c6f636b010903000001610505284d696e696e67536c6f7401284d696e696e67536c6f74505c48617341646465644772616e647061526f746174696f6e010020040000384d696e6572734279436f686f72740101040230a80400045901204d696e6572732074686174206172652061637469766520696e207468652063757272656e7420626c6f636b2028706f737420696e697469616c697a6529206279207468656972207374617274696e67206672616d65444163746976654d696e657273436f756e7401009c08000000644d696e65724e6f6e636553636f72696e674279436f686f72740100650504000c610120546869732069732061206c6f6f6b7570206f662065616368206d696e65722773206e6f6e636520746f20757365207768656e207069636b696e672061206265737420617574686f7269747920746f207375626d69742061510120626c6f636b2e2049742773206120626c616b6532203235362068617368206f6620746865206d696e6572206163636f756e7420696420616e642074686520626c6f636b20686173682061742074696d65206f66302061637469766174696f6e2e544172676f6e6f74735065724d696e696e6753656174010018400000000000000000000000000000000004c8204172676f6e6f74732074686174206d757374206265206c6f636b656420746f2074616b652061204d696e657220726f6c65484163636f756e74496e6465784c6f6f6b7570000104020085050400046901204c6f6f6b7570206279206163636f756e7420696420746f2074686520636f72726573706f6e64696e6720696e64657820696e204d696e6572734279436f686f727420616e64204d696e65724e6f6e6365734279436f686f72745442696473466f724e657874536c6f74436f686f72740100a80400080d012054686520636f686f72742073657420746f20676f20696e746f2065666665637420696e20746865206e65787420736c6f742e20546865205665632068617320616c6c882072656769737472616e747320776974682074686569722062696420616d6f756e746452656c65617365644d696e65727342794163636f756e74496401008905040004150120546865206d696e6572732072656c656173656420696e20746865206c61737420626c6f636b20286f6e6c79206b65707420666f7220612073696e676c6520626c6f636b295449734e657874536c6f7442696464696e674f70656e0100200400049420497320746865206e65787420736c6f74207374696c6c206f70656e20666f72206269647354486973746f726963616c42696473506572536c6f7401009905040004050120546865206e756d626572206f6620626964732070657220736c6f7420666f7220746865206c61737420313020736c6f747320286e6577657374206669727374294c417665726167655072696365506572536561740100a505040004050120546865206176657261676520707269636520706572207365617420666f7220746865206c617374203130206672616d657320286e657765737420666972737429304d696e696e67436f6e6669670100ad050c00000004b420546865206d696e696e6720736c6f7420636f6e66696775726174696f6e2073657420696e2067656e657369732c4e6578744672616d65496401003020000000000000000008750120546865206e657874206672616d6549642e2041206672616d6520696e206172676f6e2069732074686520323420686f757273206265747765656e20746865207374617274206f662074776f20646966666572656e74206d696e696e672420636f686f7274732e4c4e65776c79537461727465644672616d654964000030040004942049732061206e6577206672616d65207374617274656420696e207468697320626c6f636b384e657874436f686f727453697a65010010100000000004f420546865206e756d626572206f6620616c6c6f77206d696e65727320746f2062696420666f7220746865206e657874206d696e696e6720636f686f7274805363686564756c6564436f686f727453697a654368616e676542794672616d650100b10504000ce420546865207570636f6d696e67206368616e676573207363686564756c656420666f7220636f686f72742073697a65206279206672616d652e5501204361706163697479206f6620313120616c6c6f777320666f72203130206672616d657320776f727468206f66207363686564756c6564206368616e67657320706c7573206f6e6520776f726b696e6720736c6f74d020746f207363686564756c652061206e6577206368616e676520647572696e67206672616d652066696e616c697a6174696f6e2e644672616d655265776172645469636b7352656d61696e696e6701003020000000000000000004c820546865206e756d626572206f6620726577617264207469636b732072656d61696e696e6720696e20746865206672616d65584672616d655374617274426c6f636b4e756d626572730100bd05040004a8205468652070726576696f7573203130206672616d6520737461727420626c6f636b206e756d626572733c4672616d6553746172745469636b730100c50504000488205468652070726576696f7573203130206672616d65207374617274207469636b734c54656d704672616d65496e666f4469676573740000bd02040004982054656d706f726172792073746f726520746865206672616d6520696e666f20646967657374010d0301a42c4c4672616d65735065724d696e696e675465726d10100a00000004a820546865206e756d626572206f66206672616d65732061206d696e6572206f7065726174657320666f72344d696e436f686f727453697a6510100a00000004a020546865206d696e696d756d206e756d626572206f66206d696e6572732070657220636f686f7274344d6178436f686f727453697a65101090000000085d0120486f77206d616e79206e6577206d696e6572732063616e20626520696e2074686520636f686f727420666f72206561636820736c6f742e205468652061637475616c206d6178696d756d2077696c6c2061646a757374302064796e616d6963616c6c797c4172676f6e6f747350657263656e7441646a7573746d656e7444616d706572e040000014bbf08ac602000000000000000004210120546865206d61782070657263656e74207377696e6720666f7220746865206172676f6e6f74732070657220736c6f74202866726f6d20746865206c6173742070657263656e7429584d696e696d756d4172676f6e6f747350657253656174184010270000000000000000000000000000049420546865206d696e696d756d206172676f6e6f7473206e6565646564207065722073656174704d6178696d756d4172676f6e6f7450726f7261746150657263656e74d5050428082d0120546865206d6178696d756d2070657263656e74206f66206172676f6e6f747320696e20746865206e6574776f726b20746861742073686f756c6420626520726571756972656420666f7234206d696e696e6720736561747360546172676574426964735065725365617450657263656e74e0400000c84e676dc11b000000000000000008590120546865207461726765742070657263656e74206f662062696473207065722061756374696f6e2072656c617469766520746f20746865206d6178206e756d626572206f662073656174732e20546869732077696c6c2d012061646a75737420746865206172676f6e6f7473207065722073656174207570206f7220646f776e20746f20656e73757265206d696e696e6720736c6f7473206172652066696c6c65642e48546172676574507269636550657253656174184000ca9a3b000000000000000000000000046c20546865207461726765742070726963652070657220736561742e7050726963655065725365617441646a7573746d656e7444616d706572e040000014bbf08ac6020000000000000000040901205468652064616d706572206f6e207468652070726963652070657220736561742061646a7573746d656e74202866726f6d20746865206c61737420707269636529504d696e696e67426964506f6f6c4163636f756e7400806d6f646c6c7164506f6f6c730000000000000000000000000000000000000000041501204163636f756e742074686174207265636569766573206d696e696e67206269642066756e6473206265666f726520747265617375727920646973747269627574696f6e2e34426964496e6372656d656e74731840102700000000000000000000000000000419012054686520696e6372656d656e74207468617420626964732063616e206265206f6e2028666f7220696e7374616e63652c206f6e652063656e7420696e6372656d656e74732901d9050630426974636f696e5574786f730130426974636f696e5574786f73302c4c6f636b65645574786f7300010402ccdd0504000c5d01204c6f636b656420426974636f696e205554584f7320746861742068617665206265656e2066756e64656420776974682061205574786f5265662066726f6d2074686520426974636f696e206e6574776f726b20616e645d0120616d6f756e74732077697468696e20746865204d696e696d756d5361746f7368695468726573686f6c64206f66207468652065787065637465642e204966206120426974636f696e205554584f206973206d6f7665643101206265666f7265207468652065787069726174696f6e20626c6f636b2c207468652066756e647320617265206275726e656420616e6420746865205554584f20697320756e6c6f636b65642e585574786f4964546f46756e64696e675574786f5265660001040530cc040004d42041206d617070696e67206f66207574786f20696420746f2074686520636f6e6669726d6564207574786f207265666572656e63654c4c6f636b7350656e64696e6746756e64696e670100e5050400040d0120426974636f696e206c6f636b732074686174206172652070656e64696e672066756c6c2066756e64696e67206f6e2074686520626974636f696e206e6574776f726b544578706972656450656e64696e6746756e64696e670100e50504000431012050656e64696e672066756e64696e6720656e747269657320746861742068617665206578706972656420616e6420617265206177616974696e6720626f756e64656420636c65616e75702e6443616e6469646174655574786f5265667342795574786f49640101040530f50504000429012043616e646964617465205554584f73206173736f63696174656420776974682061206c6f636b20286d69736d6174636865732c2065787472612066756e64696e672c206574632e292e38426974636f696e4e6574776f726b01000506040304ec205468652067656e657369732073657420626974636f696e206e6574776f726b2074686174207468697320636861696e206973207469656420746f60436f6e6669726d6564426974636f696e426c6f636b54697000002d03040004fc20416e206f7261636c652d70726f766964656420636f6e6669726d656420626974636f696e20626c6f636b202865672c203620626c6f636b73206261636b295c50726576696f7573426974636f696e426c6f636b54697000002d030400005854656d70506172656e7448617353796e635374617465010020040004d42053746f72657320696620706172656e7420626c6f636b20686164206120636f6e6669726d656420626974636f696e20626c6f636b4c53796e63686564426974636f696e426c6f636b00002d030400047c20546865206c6173742073796e6368656420626974636f696e20626c6f636b544f7261636c654f70657261746f724163636f756e740000000400048020426974636f696e204f7261636c65204f70657261746f72204163636f756e7440496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c7564656401110301c8146c4d617850656e64696e67436f6e6669726d6174696f6e5574786f7310101027000004650120546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e206265207761746368656420696e206120626c6f636b20616e642f6f72206578706972696e672061742073616d6520626c6f636b904d617850656e64696e6746756e64696e6745787069726174696f6e73506572426c6f636b10106400000004310120546865206d6178696d756d206e756d626572206f6620657870697265642070656e64696e672066756e64696e6720656e747269657320636c65616e656420757020696e206120626c6f636b604d617843616e6469646174655574786f735065724c6f636b10106400000004c8204d6178696d756d206e756d626572206f662063616e646964617465205554584f732073746f72656420706572206c6f636b704d617850656e64696e67436f6e6669726d6174696f6e426c6f636b7330209000000000000000042501204d6178696d756d20626974636f696e20626c6f636b7320746f2077617463682061205574786f20666f7220636f6e6669726d6174696f6e206265666f72652063616e63656c696e678c4d6178696d756d5361746f7368695468726573686f6c6446726f6d45787065637465643020e803000000000000084501204d6178696d756d206e756d626572206f66207361746f73686920646966666572656e636520616c6c6f7765642066726f6d20657870656374656420746f20636f6e73696465722061205554584f206173302022636f6e6669726d65642201090607185661756c747301185661756c7473382c4e6578745661756c744964000010040000285661756c74734279496400010405100d0604000434205661756c7473206279206964445661756c74496442794f70657261746f7200010405001004000440205661756c7473206279206f776e6572684172676f6e6f74436f6d6d69746d656e7442795661756c744964000104051029060400040101205661756c742d7369646520636f6d6d697474656420616e642063726f7373636861696e2d656e63756d6265726564206172676f6e6f74206261636b696e672e345661756c74585075624279496400010405102d06040004e0205661756c7420426974636f696e205870756220616e642063757272656e74206368696c6420636f756e746572206279205661756c744964644c617374436f6c6c6563744672616d6542795661756c7449640001040510300400049420546865206c61737420636f6c6c656374206672616d65206f662065616368207661756c747c50656e64696e675465726d734d6f64696669636174696f6e7342795469636b01010405303d060400085d012050656e64696e67207465726d7320746861742077696c6c20626520636f6d6d69747465642061742074686520676976656e20626c6f636b206e756d62657220286d7573742062652061206d696e696d756d206f6620314c206672616d65206368616e67652061776179295850656e64696e67436f7369676e42795661756c74496401010405104106040004a420426974636f696e204c6f636b732070656e64696e6720636f7369676e206279207661756c74206964744f727068616e65645574786f4163636f756e747342795661756c74496401010805024d0610100000000004c8204f727068616e656420426974636f696e205574786f732070656e64696e6720636f7369676e206279207661756c742069646c5661756c7446756e647352656c656173696e67427948656967687401010405305106040004fc20546865207661756c7473207468617420686176652066756e64732072656c656173696e67206174206120676976656e20626974636f696e206865696768749c5661756c747352656c656173696e674f7065726174696f6e616c4d696e696d756d42795469636b010104053051060400043101205661756c74732077686f73652074656d706f72617279206f7065726174696f6e616c206d696e696d756d206d61792062652072656c6561736564206174206120676976656e207469636b2e58526576656e75655065724672616d6542795661756c740101040510590604000c710120547261636b7320726576656e75652066726f6d20426974636f696e204c6f636b7320616e6420547265617375727920506f6f6c7320666f722074686520747261696c696e67206672616d657320666f722065616368207661756c747101202861206672616d65206973206120226d696e696e67206461792220696e204172676f6e292e204e6577657374206672616d6573206172652066697273742e204672616d6573206172652072656d6f76656420616674657220746865050120636f6c6c6563742065787069726174696f6e2077696e646f77202860526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657360292e6c526576656e75655065724672616d6542795661756c74436f756e7401001010000000000068526563656e74436170616369747944726f707342795661756c7401010405106506040004f420526563656e7420726564756374696f6e7320696e2060617661696c61626c655f666f725f6c6f636b602c2067726f75706564206279207661756c742e01310301dc24884d617850656e64696e675465726d4d6f64696669636174696f6e735065725469636b10106400000004b420546865206d61782070656e64696e67207661756c74207465726d206368616e6765732070657220626c6f636b244d61785661756c747310101027000004b420546865206d6178206e756d626572206f66207661756c747320746861742063616e2062652063726561746564644d617850656e64696e67436f7369676e735065725661756c7410106400000004a4204d617820636f6e63757272656e7420636f7369676e732070656e64696e6720706572207661756c7484526576656e7565436f6c6c656374696f6e45787069726174696f6e4672616d657330200a0000000000000004f020546865206e756d626572206f66206672616d65732077697468696e20776869636820726576656e7565206d75737420626520636f6c6c6563746564944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e184000943577000000000000000000000000044901204d696e696d756d207661756c742073656375726974697a6174696f6e207265717569726564207768696c6520746865206f7065726174696f6e616c20666c6f6f72206c6f636b206973206163746976652e804f7065726174696f6e616c4d696e696d756d5661756c744c6f636b5469636b7330202005080000000000045101204475726174696f6e20746f206b65657020746865206f7065726174696f6e616c206d696e696d756d2073656375726974697a6174696f6e206c6f636b65642066726f6d207661756c74206372656174696f6e2e74526563656e74436170616369747944726f70426c6f636b57696e646f77101008000000046101204e756d626572206f66204172676f6e20626c6f636b7320746f206b65657020726563656e742060617661696c61626c655f666f725f6c6f636b602064726f707320666f72207374616c6520696e697420636865636b732e784d6178526563656e74436170616369747944726f70735065725661756c74101040000000042101204d6178696d756d206e756d626572206f6620726563656e742060617661696c61626c655f666f725f6c6f636b602064726f70732072657461696e656420706572207661756c742e5c436170616369747944726f70417474656d7074556e6974184000e1f505000000000000000000000000085901204f6e65206e6f2d666565207374616c652060696e697469616c697a655f666f7260206661696c75726520697320616c6c6f77656420666f72206561636820746869732d6d616e7920756e697473206f66206c6f7374582060617661696c61626c655f666f725f6c6f636b602e0171060830426974636f696e4c6f636b730130426974636f696e4c6f636b732c284e6578745574786f4964000030040000344c6f636b7342795574786f496400010405307506040004e02053746f72657320626974636f696e207574786f73207468617420686176652072657175657374656420746f2062652072656c6561736564405574786f49647342795661756c74496400010805057d06900400048c20496e646578206f6620616374697665205554584f2049447320706572207661756c746c4c6f636b52656c65617365436f7369676e486569676874427949640001040530100400040d012053746f7265732074686520626c6f636b206e756d62657220776865726520612072656c656173652077617320636f7369676e656420627920746865207661756c742e6c4c6f636b52656c65617365526571756573747342795574786f496400010405308106040004e02053746f72657320626974636f696e206c6f636b73207468617420686176652072657175657374656420746f2062652072656c6561736564584f727068616e65645574786f7342794163636f756e740001080505850689060400042501204d69736d617463686564207574786f73207468617420776572652073656e74207769746820696e76616c696420616d6f756e747320746f2061206c6f636b656420626974636f696e3c4d696e696d756d5361746f7368697301003020000000000000000004c820546865206d696e696d756d206e756d626572206f66207361746f7368697320746861742063616e206265206c6f636b6564504c6f636b436f7369676e44756542794672616d6501010405309506040004f0205574786f7320746861742068617665206265656e2072657175657374656420746f20626520636f7369676e656420666f722072656c656173696e67784c6f636b45787069726174696f6e734279426974636f696e486569676874010104053099060400085d012045787069726174696f6e206f6620626974636f696e206c6f636b7320627920626974636f696e206865696768742e2046756e647320617265206275726e65642073696e636520746865207573657220646964206e6f749020756e6c6f636b2069742e20426974636f696e2077696c6c20676f20746f207661756c74744f727068616e65645574786f45787069726174696f6e42794672616d6501010405309d06040004c42045787069726174696f6e206f66206f727068616e6564207574786f20726566732062792075736572206163636f756e74544d6963726f676f6e506572427463486973746f72790100a9060400049420486973746f7279206f6620746172676574206d6963726f676f6e7320706572206274632e01590301e424404172676f6e5469636b735065724461793020a005000000000000044c204172676f6e207469636b2070657220646179744d6178436f6e63757272656e746c7952656c656173696e674c6f636b731010e80300000488204d6178696d756d2072656c656173696e67207574786f7320617420612074696d65484c6f636b4475726174696f6e426c6f636b73302050cd00000000000004d420546865206e756d626572206f6620626974636f696e20626c6f636b73206120626974636f696e206973206c6f636b656420666f72544c6f636b5265636c616d6174696f6e426c6f636b733020e0100000000000000861012054686520626974636f696e20626c6f636b73206166746572206120426974636f696e4c6f636b206578706972657320776869636820746865207661756c742077696c6c20626520616c6c6f77656420746f20636c61696d28206120626974636f696e7c4c6f636b52656c65617365436f7369676e446561646c696e654672616d657330200a0000000000000004fc204e756d626572206f66206672616d65732061207661756c742068617320746f20636f756e7465722d7369676e206120626974636f696e2072656c656173657c4f727068616e65645574786f52656c656173654578706972794672616d657330200a00000000000000084d01204e756d626572206f66206672616d6573206f727068616e6564205554584f2072656c6561736520656e7472696573206172652072657461696e65642061667465722061206c6f636b206c6966656379636c6590207472616e736974696f6e206265666f7265206265696e6720636c65616e65642075702e704d6178436f6e63757272656e746c794578706972696e674c6f636b731010102700000861012050616c6c65742073746f7261676520726571756972657320626f756e64732c20736f207765206861766520746f207365742061206d6178696d756d206e756d62657220746861742063616e2065787069726520696e2061342073696e676c6520626c6f636b505469636b73506572426974636f696e426c6f636b30200a000000000000000488204e756d626572206f66207469636b732070657220626974636f696e20626c6f636b484d617842746350726963655469636b41676510101e00000004c0204d617820616c6c6f776564207469636b2d616765206f66206d6963726f676f6e2d7065722d6274632070726963657301ad0609204e6f74617269657301204e6f74617269657318304e6578744e6f7461727949640000100400004050726f706f7365644e6f7461726965730001040200b506040000444578706972696e6750726f706f73616c730101040510b906040000384163746976654e6f7461726965730100bd06040000404e6f746172794b6579486973746f72790101040510c5060400005c5175657565644e6f746172794d6574614368616e6765730101040530d106040004cc204d65746164617461206368616e67657320746f206265206163746976617465642061742074686520676976656e207469636b01750301f018444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f776564544d617850726f706f73616c486f6c64426c6f636b731010c04e000004c420546865206d6178696d756d20626c6f636b7320612070726f706f73616c2063616e2073697420756e617070726f766564504d617850726f706f73616c73506572426c6f636b10100a00000000504d6574614368616e6765735469636b44656c617930200600000000000000084901204e756d626572206f66207469636b7320746f2064656c6179206368616e67696e672061206e6f74617269657327206d65746120287468697320697320746f20616c6c6f7720612077696e646f7720666f72f4206e6f74617269657320746f2073776974636820746f206e6577206b6579732061667465722061206e6577206b65792069732066696e616c697a656429544d61785469636b73466f724b6579486973746f72791010400b000008e0204e756d626572206f66207469636b7320746f206d61696e7461696e206b657920686973746f727920666f722065616368206e6f74617279a8204e4f54453a206f6e6c79207072756e6564207768656e206e6577206b65797320617265206164646564384d61784e6f74617279486f7374731010040000000488204d6178696d756d20686f7374732061206e6f746172792063616e20737570706c7901e1060a204e6f7465626f6f6b01204e6f7465626f6f6b1c8c4e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f746172790001080205350234040004010120446f75626c652073746f72616765206d6170206f66206e6f74617279206964202b206e6f7465626f6f6b202320746f20746865206368616e676520726f6f74a04163636f756e744f726967696e4c6173744368616e6765644e6f7465626f6f6b42794e6f746172790001080202e5061004000c35012053746f72616765206d6170206f66206163636f756e74206f726967696e20286e6f746172795f69642c206e6f7465626f6f6b2c206163636f756e745f7569642920746f20746865206c6173741501206e6f7465626f6f6b20636f6e7461696e696e672074686973206163636f756e7420696e20746865206368616e676564206163636f756e7473206d65726b6c6520726f6f749820284e6f7465626f6f6b4368616e6765644163636f756e7473526f6f7442794e6f74617279296c4c6173744e6f7465626f6f6b44657461696c7342794e6f746172790101040210e9060400086901204c697374206f66206c61737420666577206e6f7465626f6f6b2064657461696c73206279206e6f746172792e2054686520626f6f6c206973207768657468657220746865206e6f7465626f6f6b20697320656c696769626c65d820666f7220766f7465732028726563656976656420617420636f7272656374207469636b20616e64206175646974207061737365642938426c6f636b4e6f7465626f6f6b730100c5020400049420546865206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b40496e686572656e74496e636c756465640100200400048c20436865636b2069662074686520696e686572656e742077617320696e636c75646564704e6f7461726965734c6f636b6564466f724661696c656441756469740001040210f9060400048c204e6f746172696573206c6f636b656420666f72206661696c696e6720617564697473744c6f636b65644e6f746172795265616479466f72526570726f636573730001040210100400040101204e6f74617269657320726561647920746f20737461727420726570726f63657373696e67206174206120676976656e206e6f7465626f6f6b206e756d6265720179030115010001fd060b484c6f63616c636861696e5472616e7366657201484c6f63616c636861696e5472616e736665720c384e6578745472616e7366657249640000100400004c50656e64696e675472616e73666572734f757400010402100107040000704578706972696e675472616e73666572734f757442794e6f7461727901010805057d06050704001845012045787069726174696f6e20696e64657820666f72206f7574676f696e67207472616e7366657273206b657965642062792060286e6f746172795f69642c2065787069726174696f6e5f7469636b29602e006901204e4f54453a2045787069726174696f6e2070726f63657373696e6720666f6c6c6f7773206e6f7465626f6f6b2070726f6772657373696f6e2028606865616465722e7469636b602920666f722065616368206e6f746172792c5101206e6f742077616c6c2f72756e74696d65207469636b2e2049662061206e6f746172792073746f7073207375626d697474696e67206e6f7465626f6f6b7320696e646566696e6974656c792c2070656e64696e676501207472616e736665727320666f722074686174206e6f746172792072656d61696e2066726f7a656e2062792064657369676e20756e74696c2061206e6f746172792d737769746368207265636f766572792070617468206973282065786563757465642e01b9030131010c2050616c6c657449640907207472616e73666572005c5472616e7366657245787069726174696f6e5469636b733020b036000000000000085d0120486f77206c6f6e672061207472616e736665722073686f756c642072656d61696e20696e2073746f72616765206265666f72652072657475726e696e672e204e4f54453a20746865726520697320612032207469636bc820677261636520706572696f642077686572652077652077696c6c207374696c6c20616c6c6f772061207472616e73666572784d617850656e64696e675472616e73666572734f7574506572426c6f636b1010e803000004bc20486f77206d616e79207472616e7366657273206f75742063616e206265207175657565642070657220626c6f636b010d070c34426c6f636b5365616c537065630134426c6f636b5365616c53706563284843757272656e74566f74654d696e696d756d01001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465736043757272656e74436f6d70757465446966666963756c747901001840000000000000000000000000000000000c5501205468652063757272656e7420766f7465206d696e696d756d206f662074686520636861696e2e20426c6f636b20766f746573207573652074686973206d696e696d756d20746f2064657465726d696e65207468655d01206d696e696d756d20616d6f756e74206f6620746178206f7220636f6d70757465206e656564656420746f20637265617465206120766f74652e2049742069732061646a7573746564207570206f7220646f776e20746f74207461726765742061206d6178206e756d626572206f6620766f7465735843757272656e74436f6d707574654b6579426c6f636b00003404000c650120546865206b6579204b2069732073656c656374656420746f206265207468652068617368206f66206120626c6f636b20696e2074686520626c6f636b636861696e202d207468697320626c6f636b2069732063616c6c656445012074686520276b657920626c6f636b272e20466f72206f7074696d616c206d696e696e6720616e6420766572696669636174696f6e20706572666f726d616e63652c20746865206b65792073686f756c6444206368616e6765206576657279206461795450617374436f6d70757465426c6f636b54696d6573010011070400005850726576696f7573426c6f636b54696d657374616d7000003004000498205468652074696d657374616d702066726f6d207468652070726576696f757320626c6f636b4854656d70426c6f636b54696d657374616d7000003004000048566f74654d696e696d756d486973746f7279010015070400043101204b6565707320746865206c617374203320766f7465206d696e696d756d732e20546865206669727374206f6e65206170706c69657320746f207468652063757272656e7420626c6f636b2e7c54656d7043757272656e745469636b4e6f7465626f6f6b73496e426c6f636b010019070400043d012054656d706f726172792073746f7265206f6620616e792063757272656e74207469636b206e6f7465626f6f6b7320696e636c7564656420696e207468697320626c6f636b20287673207469636b294c54656d70426c6f636b566f746544696765737400009502040004802054656d706f726172792073746f72652074686520766f7465206469676573743850617374426c6f636b566f7465730100250704000001bd0301350110444d61784163746976654e6f746172696573101019000000049020546865206d6178696d756d20616374697665206e6f74617269657320616c6c6f77656440546172676574426c6f636b566f746573184050c30000000000000000000000000000047020546865206465736972656420766f7465732070657220626c6f636b84486973746f726963616c436f6d70757465426c6f636b73466f724176657261676510100a000000085d0120546865206e756d626572206f6620686973746f726963616c20636f6d707574652074696d657320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720636f6d707574652061766572616765442028666f722061646a7573746d656e742978486973746f726963616c566f7465426c6f636b73466f72417665726167651010a005000004490120546865206e756d626572206f6620686973746f726963616c20766f746520626c6f636b7320746f2075736520746f2063616c63756c6174652074686520726f6c6c696e6720766f746520617665726167650131070d1c446f6d61696e73011c446f6d61696e730c4452656769737465726564446f6d61696e7300010402345d010400004c5a6f6e655265636f7264734279446f6d61696e00010402343d01040000584578706972696e67446f6d61696e734279426c6f636b0101040530350704000001c103013901000139070e285072696365496e64657801285072696365496e646578141c43757272656e740000c903040004782053746f726573207468652061637469766520707269636520696e646578244c61737456616c69640000c903040004882053746f72657320746865206c6173742076616c696420707269636520696e64657840486973746f7269634172676f6e43504901003d07040004ac20547261636b73207468652061766572616765206370692064617461206576657279203630207469636b736c486973746f7269634172676f6e6f74466c6f6f7242794672616d6501004907040004fc20547261636b7320746865206c6f77657374204172676f6e6f7420666c6f6f72206f6273657276656420696e206561636820726563656e74206672616d652e204f70657261746f72000000040004842054686520707269636520696e646578206f70657261746f72206163636f756e7401c503016101146c4d6178446f776e74696d655469636b734265666f7265526573657430203c0000000000000004d820546865206d6178696d756d206e756d626572206f66207469636b7320746f207072657365727665206120707269636520696e646578484d61785072696365416765496e5469636b733020a005000000000000046c20546865206f6c6465737420686973746f727920746f206b656570704d61784172676f6e6f74466c6f6f72486973746f72794672616d657310100a00000004f4204d6178696d756d206e756d626572206f66207065722d6672616d65204172676f6e6f7420666c6f6f72206275636b65747320746f2072657461696e2e8c4d61784172676f6e4368616e67655065725469636b4177617946726f6d546172676574e0400000c16ff2862300000000000000000008650120546865206d617820707269636520646966666572656e63652064726f7070696e672062656c6f7720746172676574206f722072616973696e672061626f76652074617267657420706572207469636b2e2054686572652773e4206e6f20636f72726573706f6e64696e6720636f6e7374616e7420666f722074696d6520746f207265636f7665727920746f207461726765746c4d61784172676f6e5461726765744368616e67655065725469636be0400000c16ff2862300000000000000000000014d070f28417574686f72736869700128417574686f72736869700418417574686f720000000400046420417574686f72206f662063757272656e7420626c6f636b2e00000000101c4772616e647061011c4772616e6470611c1453746174650100510704000490205374617465206f66207468652063757272656e7420617574686f72697479207365742e3450656e64696e674368616e676500005507040004c42050656e64696e67206368616e67653a20287369676e616c65642061742c207363686564756c6564206368616e6765292e284e657874466f72636564000010040004bc206e65787420626c6f636b206e756d6265722077686572652077652063616e20666f7263652061206368616e67652e1c5374616c6c6564000035020400049020607472756560206966207765206172652063757272656e746c79207374616c6c65642e3043757272656e745365744964010030200000000000000000085d0120546865206e756d626572206f66206368616e6765732028626f746820696e207465726d73206f66206b65797320616e6420756e6465726c79696e672065636f6e6f6d696320726573706f6e736962696c697469657329c420696e20746865202273657422206f66204772616e6470612076616c696461746f72732066726f6d2067656e657369732e30536574496453657373696f6e00010405301004002859012041206d617070696e672066726f6d206772616e6470612073657420494420746f2074686520696e646578206f6620746865202a6d6f737420726563656e742a2073657373696f6e20666f722077686963682069747368206d656d62657273207765726520726573706f6e7369626c652e0045012054686973206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e2070726f6f66732e20416e2065717569766f636174696f6e2070726f6f66206d7573744d0120636f6e7461696e732061206b65792d6f776e6572736869702070726f6f6620666f72206120676976656e2073657373696f6e2c207468657265666f7265207765206e65656420612077617920746f20746965450120746f6765746865722073657373696f6e7320616e64204752414e44504120736574206964732c20692e652e207765206e65656420746f2076616c6964617465207468617420612076616c696461746f7241012077617320746865206f776e6572206f66206120676976656e206b6579206f6e206120676976656e2073657373696f6e2c20616e642077686174207468652061637469766520736574204944207761735420647572696e6720746861742073657373696f6e2e00b82054574f582d4e4f54453a2060536574496460206973206e6f7420756e646572207573657220636f6e74726f6c2e2c417574686f7269746965730100590704000484205468652063757272656e74206c697374206f6620617574686f7269746965732e01cd030165010c384d6178417574686f7269746965731010e8030000045c204d617820417574686f72697469657320696e20757365344d61784e6f6d696e61746f727310100000000004d420546865206d6178696d756d206e756d626572206f66206e6f6d696e61746f727320666f7220656163682076616c696461746f722e584d6178536574496453657373696f6e456e74726965733020020000000000000018390120546865206d6178696d756d206e756d626572206f6620656e747269657320746f206b65657020696e207468652073657420696420746f2073657373696f6e20696e646578206d617070696e672e0031012053696e6365207468652060536574496453657373696f6e60206d6170206973206f6e6c79207573656420666f722076616c69646174696e672065717569766f636174696f6e73207468697329012076616c75652073686f756c642072656c61746520746f2074686520626f6e64696e67206475726174696f6e206f66207768617465766572207374616b696e672073797374656d2069733501206265696e6720757365642028696620616e79292e2049662065717569766f636174696f6e2068616e646c696e67206973206e6f7420656e61626c6564207468656e20746869732076616c7565342063616e206265207a65726f2e015d071124426c6f636b5365616c0124426c6f636b5365616c1c4c4c617374426c6f636b5365616c6572496e666f000061070400003c506172656e74566f74696e674b65790100a1020400086101205468652063616c63756c6174656420706172656e7420766f74696e67206b657920666f72206120626c6f636b2e2052656665727320746f20746865204e6f7465626f6f6b20426c6f636b566f74652052657665616c6564e020536563726574202b20566f7465734d65726b6c65526f6f74206f662074686520706172656e7420626c6f636b206e6f7465626f6f6b732e38426c6f636b466f726b506f7765720100a902910100000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000000008e4205468652063616c63756c6174656420737472656e67746820696e207468652072756e74696d6520736f20746861742069742063616e20626511012075706772616465642c20627574206973207573656420627920746865206e6f646520746f2064657465726d696e6520776869636820666f726b20746f20666f6c6c6f7744566f746573496e50617374335469636b73010065070400049c2054686520636f756e74206f6620766f74657320696e20746865206c6173742033207469636b734054656d705365616c496e686572656e740000fd03040004a820456e7375726573206f6e6c7920612073696e676c6520696e686572656e74206973206170706c696564504c6173745469636b57697468566f74655365616c010030200000000000000000004c4973426c6f636b46726f6d566f74655365616c0100200400047c2049732074686520626c6f636b2066726f6d206120766f7465207365616c3f01f90300000169071230426c6f636b526577617264730130426c6f636b5265776172647314385061796f7574734279426c6f636b01010402106d070400048c20486973746f726963616c207061796f75747320627920626c6f636b206e756d62657248426c6f636b526577617264735061757365640100200400048420426f6f6c20696620626c6f636b2072657761726473206172652070617573656450426c6f636b526577617264734279436f686f72740100710704000441012054686520636f686f727420626c6f636b2072657761726473206279206d696e696e6720636f686f7274202869652c2077697468207468652073616d65207374617274696e67206672616d6520696429384172676f6e73506572426c6f636b0100184000000000000000000000000000000000087501205468652063757272656e74207363616c656420626c6f636b20726577617264732e2049742077696c6c2061646a757374206261736564206f6e20746865206172676f6e206d6f76656d656e7420617761792066726f6d2070726963651c2074617267657424426c6f636b4665657301001840000000000000000000000000000000000001150401710118585374617274696e674172676f6e73506572426c6f636b184020a107000000000000000000000000000488204e756d626572206f66206172676f6e73206d696e7465642070657220626c6f636b7c5374617274696e674f776e657273686970546f6b656e73506572426c6f636b184020a1070000000000000000000000000004b0204e756d626572206f66206f776e65727368697020746f6b656e73206d696e7465642070657220626c6f636b44496e6372656d656e74616c47726f7774687507a0e8030000000000000000000000000000b400000000000000404b4c0000000000000000000000000004f4205468652067726f777468207061746820666f7220626f7468206f776e65727368697020616e64206172676f6e73206265666f72652068616c76696e673048616c76696e675469636b733020200b20000000000004dc204e756d626572206f66207469636b7320666f722068616c76696e67206f66206f776e65727368697020736861726520726577617264734448616c76696e67426567696e5469636b733020105c0c000000000004050120546865207469636b206e756d626572206174207768696368207468652068616c76696e6720626567696e7320666f72206f776e65727368697020746f6b656e73484d696e65725061796f757450657263656e74e04000008bbd0689680a0000000000000000042d012050657263656e742061732061206e756d626572206f7574206f6620313030206f662074686520626c6f636b20726577617264207468617420676f657320746f20746865206d696e65722e01790713104d696e7401104d696e74144050656e64696e674d696e745574786f7301007d0704000c6d0120426974636f696e205554584f7320746861742068617665206265656e207375626d697474656420666f72206d696e74696e672e2054686973206c697374206973204649464f20666f72206d696e74696e67207768656e657665724020612920435049203e3d203020616e643d012062292074686520616767726567617465206d696e74656420426974636f696e73203c3d2074686520616767726567617465206d696e746564206d6963726f676f6e732066726f6d206d696e696e67544d696e7465644d696e696e674d6963726f676f6e73010018400000000000000000000000000000000004c02054686520746f74616c20616d6f756e74206f66206d6963726f676f6e73206d696e74656420666f72206d696e696e67584d696e746564426974636f696e4d6963726f676f6e7301001840000000000000000000000000000000000455012054686520746f74616c20616d6f756e74206f6620426974636f696e206d6963726f676f6e73206d696e7465642e2043616e6e6f742065786365656420604d696e7465644d696e696e674d6963726f676f6e73602e4c4d696e696e674d696e74506572436f686f72740100890704000445012054686520616d6f756e74206f66206172676f6e73206d696e74656420706572206d696e696e6720636f686f7274202869652c2067726f75706564206279207374617274696e67206672616d65206964293c426c6f636b4d696e74416374696f6e01008d07d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000119040189010c4c4d617850656e64696e674d696e745574786f7310101027000004f020546865206d6178696d756d206e756d626572206f66205554584f7320746861742063616e2062652077616974696e6720666f72206d696e74696e67604d61784d696e74486973746f7279546f4d61696e7461696e10100a00000004b420546865206d6178696d756d206e756d626572206f66206d696e7420686973746f7269657320746f206b656570444d6178506f737369626c654d696e6572731010a005000000019507142042616c616e636573012042616c616e6365731c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e011d0401990110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d50715244f776e65727368697001244f776e6572736869701c34546f74616c49737375616e6365010018400000000000000000000000000000000004982054686520746f74616c20756e6974732069737375656420696e207468652073797374656d2e40496e61637469766549737375616e636501001840000000000000000000000000000000000409012054686520746f74616c20756e697473206f66206f75747374616e64696e672064656163746976617465642062616c616e636520696e207468652073797374656d2e1c4163636f756e74010104020014010100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080600901205468652042616c616e6365732070616c6c6574206578616d706c65206f662073746f72696e67207468652062616c616e6365206f6620616e206163636f756e742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b19022020202074797065204163636f756e7453746f7265203d2053746f726167654d61705368696d3c53656c663a3a4163636f756e743c52756e74696d653e2c206672616d655f73797374656d3a3a50726f76696465723c52756e74696d653e2c204163636f756e7449642c2053656c663a3a4163636f756e74446174613c42616c616e63653e3e0c20207d102060606000150120596f752063616e20616c736f2073746f7265207468652062616c616e6365206f6620616e206163636f756e7420696e20746865206053797374656d602070616c6c65742e00282023204578616d706c650034206060606e6f636f6d70696c65b02020696d706c2070616c6c65745f62616c616e6365733a3a436f6e66696720666f722052756e74696d65207b7420202074797065204163636f756e7453746f7265203d2053797374656d0c20207d102060606000510120427574207468697320636f6d657320776974682074726164656f6666732c2073746f72696e67206163636f756e742062616c616e63657320696e207468652073797374656d2070616c6c65742073746f7265736d0120606672616d655f73797374656d60206461746120616c6f6e677369646520746865206163636f756e74206461746120636f6e747261727920746f2073746f72696e67206163636f756e742062616c616e63657320696e207468652901206042616c616e636573602070616c6c65742c20776869636820757365732061206053746f726167654d61706020746f2073746f72652062616c616e6365732064617461206f6e6c792e4101204e4f54453a2054686973206973206f6e6c79207573656420696e207468652063617365207468617420746869732070616c6c6574206973207573656420746f2073746f72652062616c616e6365732e144c6f636b7301010402009907040010b820416e79206c6971756964697479206c6f636b73206f6e20736f6d65206163636f756e742062616c616e6365732e2501204e4f54453a2053686f756c64206f6e6c79206265206163636573736564207768656e2073657474696e672c206368616e67696e6720616e642066726565696e672061206c6f636b2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602052657365727665730101040200a90704000ca4204e616d6564207265736572766573206f6e20736f6d65206163636f756e742062616c616e6365732e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f6014486f6c64730101040200b5070400046c20486f6c6473206f6e206163636f756e742062616c616e6365732e1c467265657a65730101040200c1070400048820467265657a65206c6f636b73206f6e206163636f756e742062616c616e6365732e01250401c10110484578697374656e7469616c4465706f73697418401027000000000000000000000000000020410120546865206d696e696d756d20616d6f756e7420726571756972656420746f206b65657020616e206163636f756e74206f70656e2e204d5553542042452047524541544552205448414e205a45524f2100590120496620796f75202a7265616c6c792a206e65656420697420746f206265207a65726f2c20796f752063616e20656e61626c652074686520666561747572652060696e7365637572655f7a65726f5f65646020666f72610120746869732070616c6c65742e20486f77657665722c20796f7520646f20736f20617420796f7572206f776e207269736b3a20746869732077696c6c206f70656e2075702061206d616a6f7220446f5320766563746f722e590120496e206361736520796f752068617665206d756c7469706c6520736f7572636573206f662070726f7669646572207265666572656e6365732c20796f75206d617920616c736f2067657420756e65787065637465648c206265686176696f757220696620796f7520736574207468697320746f207a65726f2e00f020426f74746f6d206c696e653a20446f20796f757273656c662061206661766f757220616e64206d616b65206974206174206c65617374206f6e6521204d61784c6f636b7310103200000010f420546865206d6178696d756d206e756d626572206f66206c6f636b7320746861742073686f756c64206578697374206f6e20616e206163636f756e742edc204e6f74207374726963746c7920656e666f726365642c20627574207573656420666f722077656967687420657374696d6174696f6e2e00ad0120557365206f66206c6f636b73206973206465707265636174656420696e206661766f7572206f6620667265657a65732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f602c4d617852657365727665731010000000000c0d0120546865206d6178696d756d206e756d626572206f66206e616d656420726573657276657320746861742063616e206578697374206f6e20616e206163636f756e742e00b10120557365206f66207265736572766573206973206465707265636174656420696e206661766f7572206f6620686f6c64732e20536565206068747470733a2f2f6769746875622e636f6d2f706172697479746563682f7375627374726174652f70756c6c2f31323935312f60284d6178467265657a657310100200000004610120546865206d6178696d756d206e756d626572206f6620696e646976696475616c20667265657a65206c6f636b7320746861742063616e206578697374206f6e20616e206163636f756e7420617420616e792074696d652e01d907161c54785061757365011c54785061757365042c50617573656443616c6c7300010402c90190040004b42054686520736574206f662063616c6c73207468617420617265206578706c696369746c79207061757365642e01290401c50104284d61784e616d654c656e1010000100000c2501204d6178696d756d206c656e67746820666f722070616c6c6574206e616d6520616e642063616c6c206e616d65205343414c4520656e636f64656420737472696e67206e616d65732e00a820544f4f204c4f4e47204e414d45532057494c4c2042452054524541544544204153205041555345442e01dd0717485472616e73616374696f6e5061796d656e7401485472616e73616374696f6e5061796d656e740c444e6578744665654d756c7469706c6965720100e040000064a7b3b6e00d0000000000000000003853746f7261676556657273696f6e0100e1070400003c54785061796d656e744372656469740000e50704000cf02054686520604f6e4368617267655472616e73616374696f6e602073746f726573207468652077697468647261776e2074782066656520686572652e00350120557365206077697468647261775f74786665656020616e64206072656d61696e696e675f74786665656020746f206163636573732066726f6d206f757473696465207468652063726174652e0001d10104604f7065726174696f6e616c4665654d756c7469706c696572080405545901204120666565206d756c7469706c69657220666f7220604f7065726174696f6e616c602065787472696e7369637320746f20636f6d7075746520227669727475616c207469702220746f20626f6f73742074686569722c20607072696f726974796000510120546869732076616c7565206973206d756c7469706c69656420627920746865206066696e616c5f6665656020746f206f627461696e206120227669727475616c20746970222074686174206973206c61746572f420616464656420746f20612074697020636f6d706f6e656e7420696e20726567756c617220607072696f72697479602063616c63756c6174696f6e732e4d01204974206d65616e732074686174206120604e6f726d616c60207472616e73616374696f6e2063616e2066726f6e742d72756e20612073696d696c61726c792d73697a656420604f7065726174696f6e616c6041012065787472696e736963202877697468206e6f20746970292c20627920696e636c7564696e672061207469702076616c75652067726561746572207468616e20746865207669727475616c207469702e003c20606060727573742c69676e6f726540202f2f20466f7220604e6f726d616c608c206c6574207072696f72697479203d207072696f726974795f63616c6328746970293b0054202f2f20466f7220604f7065726174696f6e616c601101206c6574207669727475616c5f746970203d2028696e636c7573696f6e5f666565202b2074697029202a204f7065726174696f6e616c4665654d756c7469706c6965723bc4206c6574207072696f72697479203d207072696f726974795f63616c6328746970202b207669727475616c5f746970293b1020606060005101204e6f746520746861742073696e636520776520757365206066696e616c5f6665656020746865206d756c7469706c696572206170706c69657320616c736f20746f2074686520726567756c61722060746970605d012073656e74207769746820746865207472616e73616374696f6e2e20536f2c206e6f74206f6e6c7920646f657320746865207472616e73616374696f6e206765742061207072696f726974792062756d702062617365646101206f6e207468652060696e636c7573696f6e5f666565602c2062757420776520616c736f20616d706c6966792074686520696d70616374206f662074697073206170706c69656420746f20604f7065726174696f6e616c6038207472616e73616374696f6e732e00181c5574696c69747900012d0401d501044c626174636865645f63616c6c735f6c696d69741010aa2a000004a820546865206c696d6974206f6e20746865206e756d626572206f6620626174636865642063616c6c732e01ed0719105375646f01105375646f040c4b6579000000040004842054686520604163636f756e74496460206f6620746865207375646f206b65792e01350401d9010001f1071a20547265617375727901205472656173757279206043757272656e744672616d655661756c744361706974616c0000f50704000cc020546865207661756c74206361706974616c206c6f636b656420666f72207468652063757272656e74206672616d652e004d01205061796f75742075736573207468697320746f20736565207768696368207661756c747320616e6420626f6e64206c6f7473206172652070617274696369706174696e6720696e20746865206672616d652e344e657874426f6e644c6f744964010030200000000000000000045820546865206e65787420626f6e64206c6f742069642e2c426f6e644c6f74427949640001040530190804000490205468652073746f72656420737461746520666f72206561636820626f6e64206c6f742e4c426f6e644c6f7449647342794163636f756e740001080505210890040004b02054686520626f6e64206c6f742069647320746861742062656c6f6e6720746f20616e206163636f756e742e80456e63756d6265726564426f6e644d6963726f676f6e7342794163636f756e74010104050018400000000000000000000000000000000018510120457861637420747265617375727920626f6e64206261636b696e6720726573657276656420666f722063726f7373636861696e206d696e74696e6720617574686f726974696573206279206163636f756e742e005d01205468697320697320616e206578616374206d6963726f676f6e20636c61696d2c206e6f742061206d6972726f72206f6620746865206163636f756e742773206163746976652077686f6c652d626f6e64206c6f74732e750120426f6e64206c6f7473207374617920636f6172736520626563617573652070617274696369706174696f6e206f6e6c79206d6f76657320696e2077686f6c6520626f6e64732c207768696c6520656e63756d6272616e63652063616e65012072656d61696e206672616374696f6e616c2061667465722061206275726e2e20546865206b657920696e76617269616e74206973207468617420746865206e6f6e2d72656c656173696e672068656c642062616c616e63656c20616c7761797320636f76657273207468697320616d6f756e742e6850656e64696e67426f6e6452656c656173657342794672616d6501010405302508040004a420426f6e64206c6f747320746f2072656c656173652061742074686520676976656e206672616d652e7450656e64696e67426f6e6452656c656173655265747279437572736f72000030040004f820546865206f6c64657374206672616d652074686174207374696c6c2068617320626f6e64206c6f747320746f2072657472792072656c656173696e672e3c426f6e644c6f747342795661756c740101040510290804000c902054686520616363657074656420626f6e64206c6f747320666f722061207661756c742e004501204c6f747320617265206b65707420696e2064657363656e64696e6720626f6e64206f726465722c207468656e206c6f7765722060626f6e645f6c6f745f69646020666972737420666f7220746965732e01390401dd01205c4d61785472656173757279436f6e7472696275746f727310106400000004390120546865206d6178696d756d206e756d626572206f6620616363657074656420626f6e64206c6f747320696e2061207661756c74277320616363657074656420626f6e642d6c6f74206c6973742e6c4d696e696d756d4172676f6e73506572436f6e7472696275746f72184000e1f50500000000000000000000000004a020546865206d696e696d756d2077686f6c652d626f6e6420707572636861736520616d6f756e742e2050616c6c657449640907206c7164506f6f6c730401012054726561737572792070616c6c65742069642072657461696e656420696e206d6574616461746120666f72206163636f756e742064657269766174696f6e2e5c547265617375727952657365727665734163636f756e7400806d6f646c6c7164506f6f6c7374726561737572792d7265736572766500000000043101204163636f756e74207468617420686f6c647320747265617375727920726573657276657320666f7220636c61696d7320616e6420726573657276652d66756e646564207061796f7574732e6850657263656e74466f7254726561737572795265736572766573d505041404e02050657263656e74206f66207468652062696420706f6f6c20726573657276656420666f722074726561737572792072657365727665732e404d61785661756c7473506572506f6f6c101064000000045d0120546865206d6178696d756d206e756d626572206f66207661756c747320746861742063616e20706172746963697061746520696e206f6e65206672616d652773206c6f636b6564207661756c74206361706974616c2e644d617850656e64696e67556e6c6f636b735065724672616d651010e803000004490120546865206d6178696d756d206e756d626572206f6620626f6e64206c6f74732077686f73652072656c656173652064656c6179206d6179206d617475726520696e20612073696e676c65206672616d652e5c54726561737572794578697444656c61794672616d657330200a00000000000000041d0120546865206e756d626572206f66206672616d657320612072656c656173696e6720626f6e64206c6f742072656d61696e732068656c64206265666f72652072656c656173652e0135081f28466565436f6e74726f6c000001e50100013908204c4f7065726174696f6e616c4163636f756e7473014c4f7065726174696f6e616c4163636f756e74731c4c4f7065726174696f6e616c4163636f756e747300010402003d0804000405012052656769737465726564206f7065726174696f6e616c206163636f756e7473206b6579656420627920746865207072696d617279206163636f756e742069642e784f7065726174696f6e616c4163636f756e7442795375624163636f756e7400010402000004000411012052657665727365206c6f6f6b7570206f6620616e79206c696e6b6564206163636f756e7420746f20697473206f7065726174696f6e616c206163636f756e742069642e54436f6e73756d6564526566657272616c436f646573000104020430040004550120526566657272616c20636f6465732074686174206861766520616c7265616479206265656e206c696e6b65642c206b6579656420746f2074686569722070726f6f662065787069726174696f6e206672616d652e84436f6e73756d6564526566657272616c436f646573427945787069726174696f6e0001080502410890040004150120526566657272616c20636f64657320746f20636c65617220616674657220746865697220726566657272616c2070726f6f662065787069726174696f6e206672616d652e7c45787069726564526566657272616c436f6465436c65616e75704672616d650000300400042101204f6c6465737420726566657272616c2065787069726174696f6e206672616d652074686174207374696c6c2068617320636c65616e757020776f726b20746f20726573756d652e1c526577617264730100450808000004d020436f6e666967757265642072657761726420616d6f756e747320666f72206f7065726174696f6e616c206163636f756e74732e60456e63727970746564536572766572427953706f6e736565000104020049080400044901204f706171756520656e637279707465642073706f6e736f7220736572766572207061796c6f6164206b65796564206279207468652073706f6e736565206f7065726174696f6e616c206163636f756e742e013d0401f1012868426974636f696e4c6f636b53697a65466f72526566657272616c184000f2052a010000000000000000000000043901204164646974696f6e616c206172676f6e20616d6f756e7420286261736520756e697473292072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e644f7065726174696f6e616c526566657272616c52657761726418400065cd1d00000000000000000000000004e42044656661756c74207265776172642070616964207768656e20616e206163636f756e74206265636f6d6573206f7065726174696f6e616c2e784f7065726174696f6e616c526566657272616c426f6e7573526577617264184000f2052a01000000000000000000000004d02044656661756c7420626f6e757320726577617264207061696420657665727920726566657272616c207468726573686f6c642e98526566657272616c426f6e75734576657279584f7065726174696f6e616c53706f6e73656573101005000000040d01204e756d626572206f66206f7065726174696f6e616c2073706f6e736565732072657175697265642070657220726566657272616c20626f6e7573207265776172642e544d6178417661696c61626c65526566657272616c7310100300000004dc204d6178696d756d206e756d626572206f6620617661696c61626c6520726566657272616c7320616c6c6f776564206174206f6e63652e984d617845787069726564526566657272616c436f6465436c65616e757073506572426c6f636b1010e803000004f0204d6178696d756d206e756d626572206f66206578706972656420726566657272616c20636f64657320636c65617265642070657220626c6f636b2e544d6178456e637279707465645365727665724c656e10100001000004f4204d6178696d756d206e756d626572206f6620656e63727970746564207365727665722062797465732073746f726564207065722073706f6e7365652e944f7065726174696f6e616c4d696e696d756d5661756c7453656375726974697a6174696f6e18400094357700000000000000000000000004f4204d696e696d756d207661756c742073656375726974697a6174696f6e20726571756972656420746f206265636f6d65206f7065726174696f6e616c2e644d696e696e675365617473466f724f7065726174696f6e616c10100200000004b4204d696e696e6720736561747320726571756972656420746f206265636f6d65206f7065726174696f6e616c2e584d696e696e675365617473506572526566657272616c10100500000004d8204d696e696e672073656174732072657175697265642070657220726566657272616c206166746572206f7065726174696f6e616c2e014d082240457468657265756d56657269666965720140457468657265756d56657269666965724054496e697469616c436865636b706f696e74526f6f740100348000000000000000000000000000000000000000000000000000000000000000000480204c617465737420696d706f7274656420636865636b706f696e7420726f6f74604c617465737446696e616c697a6564426c6f636b526f6f740100348000000000000000000000000000000000000000000000000000000000000000000494204c617465737420696d706f727465642066696e616c697a656420626c6f636b20726f6f745046696e616c697a6564426561636f6e5374617465000104063451080400049420426561636f6e2073746174652062792066696e616c697a656420626c6f636b20726f6f746446696e616c697a6564426561636f6e5374617465496e646578010010100000000004cc2046696e616c697a656420486561646572733a2043757272656e7420706f736974696f6e20696e2072696e67206275666665726c46696e616c697a6564426561636f6e53746174654d617070696e67010104061034800000000000000000000000000000000000000000000000000000000000000000041d012046696e616c697a656420486561646572733a204d617070696e67206f662072696e672062756666657220696e64657820746f2061207072756e696e672063616e64696461746558457865637574696f6e486561646572416e63686f72730001040634550804000405012052657461696e656420657865637574696f6e2d6c617965722068656164657220616e63686f727320627920657865637574696f6e20626c6f636b20686173682e8c457865637574696f6e486561646572416e63686f72734279426c6f636b4e756d62657200010406890255080400182901204f7264657265642072657461696e656420657865637574696f6e2d6c6179657220616e63686f7273206b6579656420627920657865637574696f6e20626c6f636b206e756d6265722e00710120546865206b657920697320746865206269672d656e6469616e20657865637574696f6e20626c6f636b206e756d62657220736f20636c69656e74732063616e20737461727420617420612074617267657420657865637574696f6e690120626c6f636b206e756d62657220616e64207363616e20666f727761726420746f207468652066697273742072657461696e656420616e63686f72206174206f72206166746572207468617420626c6f636b20776974686f757475012077616c6b696e672065766572792072657461696e65642066696e616c697a656420626561636f6e20726f6f742e2060457865637574696f6e486561646572416e63686f7273602072656d61696e73207468652063616e6f6e6963616c6420686173682d6b657965642070726f6f66206c6f6f6b75702e7846696e616c697a6564457865637574696f6e486561646572416e63686f72000104063434040004550120417474616368656420657865637574696f6e2d6c6179657220616e63686f72206861736820666f7220656163682072657461696e65642066696e616c697a656420626561636f6e2068656164657220726f6f742e904c6174657374457865637574696f6e486561646572416e63686f72426c6f636b48617368000034040004cc204c61746573742072657461696e656420657865637574696f6e2d6c6179657220616e63686f7220626c6f636b20686173682e3856616c696461746f7273526f6f74010034800000000000000000000000000000000000000000000000000000000000000000004c466f726b56657273696f6e5363686564756c6500009504040004590120466f726b2d76657273696f6e207363686564756c65207573656420666f722073796e632d636f6d6d6974746565207369676e696e6720646f6d61696e7320616e6420626561636f6e2073746174652070617468732e5043757272656e7453796e63436f6d6d697474656501005908550300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004882053796e6320636f6d6d697474656520666f722063757272656e7420706572696f64444e65787453796e63436f6d6d6974746565010059085503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047c2053796e6320636f6d6d697474656520666f72206e65787420706572696f647c4c617465737453796e63436f6d6d6974746565557064617465506572696f6401003020000000000000000004110120546865206c61737420706572696f6420776865726520746865206e6578742073796e6320636f6d6d697474656520776173207570646174656420666f7220667265652e344f7065726174696e674d6f64650100fd01040004a8205468652063757272656e74206f7065726174696e67206d6f6465206f66207468652070616c6c65742e30426561636f6e50726573657401007d08040004450120436861696e2d636f6e6669677572656420626561636f6e2070726573657420657870656374656420627920636c69656e74732074686174207375626d697420766572696669657220757064617465732e01610401f901044c4672656548656164657273496e74657276616c101020000000040101204d696e696d756d20676170206265747765656e2066696e616c697a6564206865616465727320666f7220616e2075706461746520746f20626520667265652e018108234843726f7373636861696e5472616e73666572014843726f7373636861696e5472616e736665726460436861696e436f6e6669674279536f75726365436861696e000104020502bd04040004c420436f6e66696720616363657074656420666f72206561636820737570706f7274656420736f7572636520636861696e2e644761746577617953746174654279536f75726365436861696e0001040205022502040004fc204c61746573742070726f76656e206761746577617920616374697669747920736e617073686f7420666f72206561636820736f7572636520636861696e2e744761746577617953796e6350617573654279536f75726365436861696e0001040205021d020400044501205061757365207374617465207265636f72646564207768656e20612063616e6f6e6963616c20676174657761792061637469766974792063616e6e6f74206265206170706c69656420736166656c792e74526563656e744172676f6e5472616e736665727342794163636f756e740101040200101000000000042d0120436f756e74206f66207374696c6c2d72657461696e6564207175616c696679696e67204172676f6e207472616e736665727320666f722065616368206c6f63616c206163636f756e742ecc436f756e63696c417070726f76616c437572736f72427944657374696e6174696f6e436861696e416e644163636f756e74496400010802028508300400045901204c617465737420636f756e63696c20617070726f76616c207175657565206e6f6e6365207369676e65642062792074686973206163636f756e7420666f72206f6e652064657374696e6174696f6e20636861696e2e68496e626f756e645472616e73666572734578706972696e6741740101040530ed020400040501204163636f756e74732077686f736520726563656e742d7472616e736665722065766964656e63652065787069726573206174206120676976656e207469636b2e744c6173745472616e73666572457870697279436c65616e75705469636b010030200000000000000000041101204c6174657374207469636b2077686f736520726563656e742d7472616e736665722065787069726174696f6e206275636b65742077617320636c65616e65642075702eac436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004290120546865207265676973746572656420636f756e63696c207369676e657220666f722065616368206163636f756e74206f6e20656163682064657374696e6174696f6e20636861696e2ec850656e64696e67436f756e63696c5369676e6572427944657374696e6174696f6e436861696e416e644163636f756e744964000108020285080d02040004710120412073746167656420636f756e63696c207369676e657220726f746174696f6e20666f7220746865206e65787420636f756e63696c2061637469766174696f6e206f6e20656163682064657374696e6174696f6e20636861696e2eb4416374697665476c6f62616c49737375616e6365436f756e63696c427944657374696e6174696f6e436861696e000104020502340400043501205468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206861736820696e20666f72636520666f7220656163682064657374696e6174696f6e20636861696e2edc43757272656e745472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e000104020502180400045d0120436f6e736572766174697665207472616e736665722d6f757420636f6e76657273696f6e20726174652063757272656e746c792071756f74656420666f7220656163682064657374696e6174696f6e20636861696e2ee050726576696f75735472616e736665724f75744d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e00010402050218040008690120496d6d6564696174656c792070726576696f7573207472616e736665722d6f757420636f6e76657273696f6e2072617465207374696c6c206163636570746564207768696c652074686520666c6f6f722072617463686574738c20757077617264206163726f737320636f756e63696c207472616e736974696f6e732e6c476c6f62616c49737375616e6365436f756e63696c42794861736800010402348908040004650120486973746f726963616c20476c6f62616c2049737375616e636520436f756e63696c20736e617073686f7473206b65796564206279207468656972207369676e65722d6f72646572656420636f756e63696c20686173682ea44c6174657374517565756564436f756e63696c48617368427944657374696e6174696f6e436861696e000104020502340400086d0120546865206c61746573742071756575656420636f756e63696c206861736820746861742073686f756c6420676f7665726e20746865206e65787420717565756520656e747279206f6e20656163682064657374696e6174696f6e1c20636861696e2ed45472616e736665724f757451756f74654d6963726f676f6e735065724172676f6e6f74427944657374696e6174696f6e436861696e0001040205021804000855012054686520636f6e736572766174697665207472616e736665722d6f75742071756f746520666c6f6f72207468617420746865206e657874206e65776c79206f70656e6564207472616e736665722073686f756c649020736e617073686f74206f6e20656163682064657374696e6174696f6e20636861696e2ebc4e657874436f756e63696c417070726f76616c51756575654e6f6e6365427944657374696e6174696f6e436861696e0101040205023020000000000000000004310120546865206e657874206f7574626f756e6420617070726f76616c2d7175657565206e6f6e636520746f2061737369676e206f6e20656163682064657374696e6174696f6e20636861696e2eb8436f756e63696c417070726f76616c5175657565427944657374696e6174696f6e436861696e416e644e6f6e63650001080205a108a508040004210120546865206f726465726564206f7574626f756e6420636f756e63696c20617070726f76616c20717565756520666f7220656163682064657374696e6174696f6e20636861696e2e684d696e74696e67417574686f72697469657342795369676e6572000104020d02b9080400042101204c6f63616c204d696e74696e6720417574686f72697479207265636f726473206b657965642062792074686569722064657374696e6174696f6e207369676e696e67206b65792eb84d696e696d756d4d696e74696e67417574686f7269747956616c7565427944657374696e6174696f6e436861696e010104020502184010270000000000000000000000000000085101205065722d636861696e206f7665727269646520666f7220746865206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f20726567697374657220614c204d696e74696e6720417574686f726974792ef04d696e74696e67417574686f7269747941637469766174696f6e52657061796d656e7450726963696e67427944657374696e6174696f6e436861696e000104020502c5040400085d012050726963696e6720696e70757473207573656420746f2072657061792072656c617965727320666f72204d696e74696e6720417574686f726974792061637469766174696f6e2062617463686573206f6e20656163684c2064657374696e6174696f6e20636861696e2e984e6578745472616e736665724f75744e6f6e6365427953656e64696e674163636f756e74496401010402003020000000000000000004dc204e657874206f7574626f756e64207472616e73666572206e6f6e636520666f7220656163682073656e64696e67206163636f756e742e3c5472616e736665724f7574427949640001040234c5080400048c204f7574626f756e64207472616e7366657273206279207472616e736665722069642e9c50656e64696e67436f6c6c61746572616c697a6174696f6e52657175657374734279436861696e010104020502e108040004050120436f6c6c61746572616c697a6174696f6e207265717565737473207374696c6c206f70656e206f6e20656163682064657374696e6174696f6e20636861696e2eb44e6f6e5465726d696e616c5472616e736665724f7574436f756e74427944657374696e6174696f6e436861696e010104020502101000000000042101204e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f7574207265717565737473206f6e20656163682064657374696e6174696f6e20636861696e2ebc50656e64696e675472616e736665724f757443697263756c6174696f6e427944657374696e6174696f6e436861696e010104020502ed0880000000000000000000000000000000000000000000000000000000000000000004c42050656e64696e67206f7574626f756e64207072696e636970616c2062792064657374696e6174696f6e20636861696e2e01b904010102384c457468657265756d4275726e4163636f756e7400806d6f646c78636861696e7472006275726e0000000000000000000000000000000445012043616e6f6e6963616c20457468657265756d206275726e2d6163636f756e74696e67206163636f756e7420726570726573656e74696e672066756e6473206d6f76656420746f20457468657265756d2e70526563656e745472616e73666572526574656e74696f6e5469636b7330204038000000000000084d0120526574656e74696f6e2077696e646f772c20696e207469636b732c20666f7220726563656e74204172676f6e207472616e736665722065766964656e63652075736564206279206f7065726174696f6e616c28206163636f756e74732e704d6178416374697669746965735065725265636569707450726f6f66101010000000043d01204d6178696d756d206e756d626572206f66206f726465726564206761746577617920616374697669746965732074686174206d6179207368617265206f6e6520726563656970742070726f6f662e704d61785265636569707450726f6f667350657245787472696e73696310100a000000043d01204d6178696d756d206e756d626572206f662070726f76656e20726563656970742070726f6f66732074686174206d617920626520737570706c69656420696e206f6e652065787472696e7369632e444d6178436f756e63696c4d656d62657273101064000000042101204d6178696d756d206e756d626572206f66206d656d62657273207468652061637469766520476c6f62616c2049737375616e636520436f756e63696c206d61792063617272792e604d61785175657565417070726f76616c7350657243616c6c101020000000046101204d6178696d756d206e756d626572206f6620636f6e746967756f757320717565756520617070726f76616c73206f6e6520636f756e63696c206d656d626572206d6179207375626d697420696e206f6e652063616c6c2e845472616e736665724f757456616c6964697479457468657265756d426c6f636b733020401901000000000008210120457468657265756d2d626c6f636b2077696e646f7720616464656420746f20746865206c617465737420766572696669656420626c6f636b207768656e206f70656e696e67206138207472616e73666572206f75742e844d61785665726966696564457865637574696f6e426c6f636b4167655469636b7330203c00000000000000084101204d6178696d756d206167652c20696e207469636b732c206f662074686520766572696669656420457468657265756d20657865637574696f6e20616e63686f72207573656420746f206f70656e206138207472616e73666572206f75742ea45472616e736665724f75744d696e74696e67417574686f726974795469704261736973506f696e747310100a000000043501204d696e74696e6720617574686f72697479207469702072617465206170706c69656420746f207472616e736665722d6f757420726571756573747320696e20626173697320706f696e74732e784d696e5472616e73666572436f6c6c61746572616c496e6372656d656e74184010270000000000000000000000000000085d01204d696e696d756d206e6f726d616c697a656420636f6c6c61746572616c20696e6372656d656e7420616363657074656420666f72206f6e65207472616e7366657220756e6c6573732074686520696e6372656d656e74a820636f6d706c65746573207468652072656d61696e696e6720756e636f766572656420616d6f756e742eac44656661756c744d696e696d756d4d696e74696e67417574686f726974794d6963726f676f6e56616c75651840102700000000000000000000000000000859012044656661756c74206d696e696d756d206e6f726d616c697a6564206d6963726f676f6e2076616c756520726571756972656420746f2072656769737465722061204d696e74696e6720417574686f72697479206f6e5c206f6e652064657374696e6174696f6e20636861696e2ea44d617850656e64696e675472616e736665724f75747350657244657374696e6174696f6e436861696e101064000000046101204d6178696d756d206e756d626572206f66206e6f6e2d7465726d696e616c207472616e736665722d6f757420726571756573747320747261636b656420666f72206f6e652064657374696e6174696f6e20636861696e2e54436f756e63696c526f746174696f6e4672616d657330200a00000000000000085101204d696e696d756d2072656d61696e696e67206672616d6520636f6d6d69746d656e74207265717569726564207768656e2072656164696e67207661756c7420636f6d6d697474656420636f6c6c61746572616c050120636170616369747920666f7220636f756e63696c20776569676874696e6720616e64204d696e74696e6720417574686f7269747920636f6c6c61746572616c2e806d61785f70726f6f665f657865637574696f6e5f6865616465725f6465707468101040000000044501204d6178696d756d20657865637574696f6e2068656164657273206361727269656420696e206f6e6520726563656970742070726f6f662773207461726765742d746f2d616e63686f7220636861696e2e01f10824f508042c34417574686f72697a6543616c6cfd089048436865636b4e6f6e5a65726f53656e64657201099040436865636b5370656356657273696f6e05091038436865636b547856657273696f6e09091030436865636b47656e657369730d093438436865636b4d6f7274616c69747911093428436865636b4e6f6e63651909902c436865636b5765696768741d0990604368617267655472616e73616374696f6e5061796d656e7421099044436865636b4d657461646174614861736825093109345765696768745265636c61696d2d09903509\"\n}\n","{\n \"specName\": \"argon\",\n \"implName\": \"argon\",\n \"authoringVersion\": 1,\n \"specVersion\": 151,\n \"implVersion\": 10,\n \"apis\": [\n [\"0xbab599c4f0d362c6\", 1],\n [\"0xf3ff14d5ab527059\", 3],\n [\"0xd2bc9897eed08f15\", 3],\n [\"0xbc9d89904f5b923f\", 1],\n [\"0xdf6acb689907609b\", 5],\n [\"0xed99c5acb25eedf5\", 3],\n [\"0xab3c0572291feb8b\", 2],\n [\"0x37c8bb1350a9a2a8\", 4],\n [\"0xf78b278be53f454c\", 2],\n [\"0x61571683e6d7a7c8\", 1],\n [\"0x37e397fc7c91f5e4\", 2],\n [\"0x51c97e4020145cb0\", 1],\n [\"0x40fe3ad401f8959a\", 6],\n [\"0x11de59f9923f03d8\", 1],\n [\"0x0090f9d890bb0bb2\", 1],\n [\"0x05dd9be92cc17d28\", 3],\n [\"0xfff0fb031985f8a1\", 2],\n [\"0xccd9de6396c899ca\", 1],\n [\"0xfbc577b9d747efd6\", 1],\n [\"0xe6683faaa563317a\", 2],\n [\"0x5e4dc2ce83c23f09\", 1]\n ],\n \"transactionVersion\": 5,\n \"systemVersion\": 1,\n \"stateVersion\": 1\n}\n","{\n \"mainnet\": \"0xee11bf2ff8838fcb0832c09085c5319a08ba6111c225ecd899fe659872d9d45d\",\n \"testnet\": \"0x66dc4e5ff85faddb0311b768eb73a58d9a00c65f06056ffaa370a1b1354d7411\"\n}\n","import { ArgonClient } from './index';\n\nexport interface IArgonCpiSnapshot {\n // The target price of the argon as a fixed point number (18 decimals)\n argonUsdTargetPrice: bigint;\n // The current price of the argon as a fixed point number (18 decimals)\n argonUsdPrice: bigint;\n // The block hash in which the cpi was finalized\n finalizedBlock: Uint8Array;\n tick: bigint;\n}\n\n/**\n * The WageProtector class is used to protect wages from inflation by using the current Argon Price Index to adjust the\n * baseAmount to current conditions. This ensures that the wage is always stable and does not lose or gain value based on\n * demand for the argon or fiat monetary supply changes.\n */\nexport class WageProtector {\n constructor(public latestCpi: IArgonCpiSnapshot) {}\n\n /**\n * Converts the base wage to the current wage using the latest CPI snapshot\n *\n * @param baseWage The base wage to convert\n * @returns The protected wage\n */\n public getProtectedWage(baseWage: bigint): bigint {\n return (baseWage * this.latestCpi.argonUsdTargetPrice) / this.latestCpi.argonUsdPrice;\n }\n\n /**\n * Subscribes to the current CPI and calls the callback function whenever the CPI changes\n * @param client The ArgonClient to use\n * @param callback The callback function to call when the CPI changes\n * @returns An object with an unsubscribe function that can be called to stop the subscription\n */\n public static async subscribe(\n client: ArgonClient,\n callback: (cpi: WageProtector) => void,\n ): Promise<{\n unsubscribe: () => void;\n }> {\n const unsubscribe = await client.query.priceIndex.current(async cpi => {\n if (cpi.isNone) {\n return;\n }\n const finalizedBlock = await client.rpc.chain.getFinalizedHead();\n\n callback(\n new WageProtector({\n argonUsdTargetPrice: cpi.value.argonUsdTargetPrice.toBigInt(),\n argonUsdPrice: cpi.value.argonUsdPrice.toBigInt(),\n finalizedBlock: new Uint8Array(finalizedBlock),\n tick: cpi.value.tick.toBigInt(),\n }),\n );\n });\n return { unsubscribe };\n }\n\n /**\n * Creates a new WageProtector instance by subscribing to the current CPI and waiting for the first value\n * @param client The ArgonClient to use\n */\n public static async create(client: ArgonClient): Promise<WageProtector> {\n return new Promise<WageProtector>(async (resolve, reject) => {\n try {\n const { unsubscribe } = await WageProtector.subscribe(client, x => {\n resolve(x);\n unsubscribe();\n });\n } catch (e) {\n reject(e);\n }\n });\n }\n}\n","import BigNumber from 'bignumber.js';\nimport type { ArgonClient } from './index';\nimport { EventRecord } from '@polkadot/types/interfaces/system';\n\nexport const MICROGONS_PER_ARGON = 1_000_000;\ntype IDispatchErrorLike = {\n isModule: boolean;\n asModule: Parameters<ArgonClient['registry']['findMetaError']>[0];\n toString(): string;\n};\n\nexport function formatArgons(microgons: bigint | number): string {\n if (microgons === undefined || microgons === null) return 'na';\n const isNegative = microgons < 0;\n let format = BigNumber(microgons.toString())\n .abs()\n .div(MICROGONS_PER_ARGON)\n .toFormat(2, BigNumber.ROUND_FLOOR);\n if (format.endsWith('.00')) {\n format = format.slice(0, -3);\n }\n return `${isNegative ? '-' : ''}₳${format}`;\n}\n\nexport async function gettersToObject<T>(obj: T): Promise<T> {\n if (obj === null || obj === undefined || typeof obj !== 'object') return obj;\n\n const keys = [];\n\n for (const key in obj) {\n keys.push(key);\n }\n\n if (Symbol.iterator in obj) {\n const iterableToArray = [];\n // @ts-expect-error - it should iterate by virtue of Symbol.iterator\n for (const item of obj) {\n iterableToArray.push(await gettersToObject(item));\n }\n return iterableToArray as T;\n }\n\n const result = {} as any;\n for (const key of keys) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n // Skip functions\n if (descriptor && typeof descriptor.value === 'function') {\n continue;\n }\n const value = descriptor && descriptor.get ? descriptor.get.call(obj) : obj[key as keyof T];\n if (typeof value === 'function') continue;\n\n result[key] = await gettersToObject(value);\n }\n return result as T;\n}\n\nexport function dispatchErrorToString(client: ArgonClient, error: IDispatchErrorLike) {\n let message = error.toString();\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n message = `${section}.${name}: ${docs.join(' ')}`;\n }\n return message;\n}\n\nexport function isOutdatedTransactionError(error: unknown): boolean {\n const message = error instanceof Error ? error.message : String(error);\n return (\n message.includes('Invalid Transaction: Transaction is outdated') ||\n message.includes('InvalidTransaction::Stale')\n );\n}\n\n// ExtrinsicError\nexport class ExtrinsicError extends Error {\n constructor(\n public readonly errorCode: string,\n public readonly details?: string,\n public readonly batchInterruptedIndex?: number,\n public readonly txFee: bigint = 0n,\n ) {\n super(errorCode);\n }\n\n public override toString() {\n if (this.batchInterruptedIndex !== undefined) {\n return `${this.errorCode} ${this.details ?? ''} (Batch interrupted at index ${this.batchInterruptedIndex})`;\n }\n return `${this.errorCode} ${this.details ?? ''}`;\n }\n}\n\nexport function dispatchErrorToExtrinsicError(\n client: ArgonClient,\n error: IDispatchErrorLike,\n batchInterruptedIndex?: number,\n txFee?: bigint,\n) {\n if (error.isModule) {\n const decoded = client.registry.findMetaError(error.asModule);\n const { docs, name, section } = decoded;\n return new ExtrinsicError(`${section}.${name}`, docs.join(' '), batchInterruptedIndex, txFee);\n }\n return new ExtrinsicError(error.toString(), undefined, batchInterruptedIndex, txFee);\n}\n\n/**\n * Check for an extrinsic success event in the given events. Helpful to validate the result of an extrinsic inclusion in a block (it will be included even if it fails)\n * @param events The events to check\n * @param client The client to use\n * @returns A promise that resolves if the extrinsic was successful, and rejects if it failed\n */\nexport function checkForExtrinsicSuccess(\n events: EventRecord[],\n client: ArgonClient,\n): Promise<void> {\n return new Promise((resolve, reject) => {\n for (const { event } of events) {\n if (client.events.system.ExtrinsicSuccess.is(event)) {\n resolve();\n } else if (client.events.system.ExtrinsicFailed.is(event)) {\n // extract the data for this event\n const [dispatchError] = event.data;\n let errorInfo = dispatchError.toString();\n\n if (dispatchError.isModule) {\n const decoded = client.registry.findMetaError(dispatchError.asModule);\n errorInfo = `${decoded.section}.${decoded.name}`;\n }\n\n reject(new Error(`${event.section}.${event.method}:: ExtrinsicFailed:: ${errorInfo}`));\n }\n }\n });\n}\n\n/**\n * Return a bigint value using a canonical field first, then named fallback fields on the same source object.\n * Helpful when reading runtime records that may use older field names across spec versions.\n * @param value The preferred bigint-like value, usually from the current field name\n * @param source The object to read fallback fields from\n * @param fallbackFields The fallback field names to check in order\n * @param fallback The value to return if no preferred or fallback field is present\n * @returns The preferred or fallback value converted to bigint\n */\nexport function getBigIntFallback<T extends object>(\n value: IBigIntLike | undefined,\n source: T,\n fallbackFields: readonly string[],\n fallback = 0n,\n): bigint {\n if (typeof value === 'bigint') return value;\n if (value !== undefined) return value.toBigInt();\n\n const record = source as Record<string, IBigIntLike | undefined>;\n\n for (const fieldName of fallbackFields) {\n const field = record[fieldName];\n if (typeof field === 'bigint') return field;\n if (field !== undefined) return field.toBigInt();\n }\n\n return fallback;\n}\n\ntype IBigIntLike = bigint | { toBigInt(): bigint };\n","import { ArgonClient, GenericEvent, SpRuntimeDispatchError } from './index';\nimport { dispatchErrorToExtrinsicError, ExtrinsicError } from './utils';\nimport type { ISubmittableResult } from '@polkadot/types/types/extrinsic';\nimport { DispatchError } from '@polkadot/types/interfaces';\n\nexport type ITxProgressCallback = (progressToInBlock: number, result?: TxResult) => void;\n\nexport class TxResult {\n #isBroadcast = false;\n #submissionError?: Error;\n\n set isBroadcast(value: boolean) {\n this.#isBroadcast = value;\n this.updateProgress();\n }\n\n get isBroadcast(): boolean {\n return this.#isBroadcast;\n }\n\n set submissionError(value: Error) {\n if (value) {\n this.#submissionError = value;\n this.finalizedReject(value);\n this.inBlockReject(value);\n this.updateProgress();\n }\n }\n\n get submissionError(): Error | undefined {\n return this.#submissionError;\n }\n\n public waitForFinalizedBlock: Promise<Uint8Array>;\n public waitForInFirstBlock: Promise<Uint8Array>;\n public events: GenericEvent[] = [];\n\n public extrinsicError: ExtrinsicError | Error | undefined;\n public extrinsicIndex: number | undefined;\n\n public txProgressCallback?: ITxProgressCallback;\n /**\n * The index of the batch that was interrupted, if any.\n */\n public batchInterruptedIndex?: number;\n public blockHash?: Uint8Array;\n public blockNumber?: number;\n /**\n * The final fee paid for the transaction, including the fee tip.\n */\n public finalFee?: bigint;\n /**\n * The fee tip paid for the transaction.\n */\n public finalFeeTip?: bigint;\n\n public txProgress = 0;\n public isFinalized = false;\n\n protected finalizedResolve!: (block: Uint8Array) => void;\n protected finalizedReject!: (error: ExtrinsicError | Error) => void;\n protected inBlockResolve!: (block: Uint8Array) => void;\n protected inBlockReject!: (error: ExtrinsicError | Error) => void;\n\n constructor(\n protected readonly client: ArgonClient,\n public extrinsic: {\n signedHash: string;\n method: any;\n submittedTime: Date;\n submittedAtBlockNumber: number;\n accountAddress: string;\n nonce: number;\n },\n ) {\n this.waitForFinalizedBlock = new Promise((resolve, reject) => {\n this.finalizedResolve = resolve;\n this.finalizedReject = reject;\n });\n this.waitForInFirstBlock = new Promise((resolve, reject) => {\n this.inBlockResolve = resolve;\n this.inBlockReject = reject;\n });\n // drown reject\n this.waitForFinalizedBlock.catch(() => null);\n this.waitForInFirstBlock.catch(() => null);\n }\n\n public async setSeenInBlock(block: {\n blockHash: Uint8Array;\n blockNumber?: number;\n extrinsicIndex: number;\n events: GenericEvent[];\n }): Promise<void> {\n const { blockHash, blockNumber, events } = block;\n if (blockHash !== this.blockHash) {\n this.parseEvents(events);\n this.blockHash = blockHash;\n this.blockNumber =\n blockNumber ??\n (await this.client.rpc.chain.getHeader(blockHash).then(h => h.number.toNumber()));\n this.extrinsicIndex = block.extrinsicIndex;\n this.updateProgress();\n if (this.extrinsicError) {\n this.inBlockReject(this.extrinsicError);\n } else {\n this.inBlockResolve(blockHash);\n }\n }\n }\n\n public setFinalized() {\n this.isFinalized = true;\n this.updateProgress();\n\n let error = this.extrinsicError ?? this.submissionError;\n if (!error && !this.blockHash) {\n error = new Error('Cannot finalize transaction before it is included in a block');\n }\n\n if (error) {\n this.finalizedReject(error);\n this.inBlockReject(error);\n } else {\n this.finalizedResolve(this.blockHash!);\n this.inBlockResolve(this.blockHash!);\n }\n }\n\n public onSubscriptionResult(result: ISubmittableResult) {\n const { events, status, isFinalized, txIndex } = result;\n const extrinsicEvents = events.map(x => x.event);\n\n if (status.isBroadcast) {\n this.isBroadcast = true;\n if (result.internalError) this.submissionError = result.internalError;\n }\n if (status.isInBlock) {\n void this.setSeenInBlock({\n blockHash: Uint8Array.from(status.asInBlock),\n events: extrinsicEvents,\n extrinsicIndex: txIndex!,\n });\n }\n if (isFinalized) {\n this.setFinalized();\n }\n }\n\n private updateProgress() {\n if (this.isFinalized || this.submissionError) {\n this.txProgress = 100;\n } else if (this.blockNumber) {\n const elapsedBlocks = this.blockNumber - this.extrinsic.submittedAtBlockNumber;\n const FINALIZATION_BLOCKS = 5;\n const remainingPercent = Math.max(0, FINALIZATION_BLOCKS - elapsedBlocks) * 20;\n const percent = 100 - remainingPercent;\n this.txProgress = Math.min(percent, 99);\n } else if (this.extrinsic.submittedAtBlockNumber) {\n this.txProgress = 10;\n }\n this.txProgressCallback?.(this.txProgress);\n }\n\n private parseEvents(events: GenericEvent[]) {\n let encounteredError: SpRuntimeDispatchError | undefined;\n for (const event of events) {\n if (this.client.events.system.ExtrinsicFailed.is(event)) {\n const { dispatchError } = event.data;\n encounteredError ??= dispatchError;\n }\n if (this.client.events.utility.BatchInterrupted.is(event)) {\n const { index, error } = event.data;\n this.batchInterruptedIndex = index.toNumber();\n encounteredError = error;\n }\n if (this.client.events.transactionPayment.TransactionFeePaid.is(event)) {\n const { actualFee, tip } = event.data;\n this.finalFee = actualFee.toBigInt();\n this.finalFeeTip = tip.toBigInt();\n }\n }\n if (encounteredError) {\n this.extrinsicError = dispatchErrorToExtrinsicError(\n this.client,\n encounteredError as unknown as DispatchError,\n this.batchInterruptedIndex,\n this.finalFee,\n );\n } else {\n this.extrinsicError = undefined;\n }\n this.events = events;\n }\n}\n","import { waitForLoad } from './index';\nimport type { ArgonClient } from './index';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { SignerOptions } from '@polkadot/api/types';\nimport type { KeyringPair } from '@polkadot/keyring/types';\nimport { ITxProgressCallback, TxResult } from './TxResult';\n\nexport type TxSigningAccount =\n | KeyringPair\n | { address: string; signer: NonNullable<SignerOptions['signer']> };\n\nexport type ISubmittableOptions = Partial<Omit<SignerOptions, 'signer'>> & {\n tip?: bigint;\n logResults?: boolean;\n useLatestNonce?: boolean;\n txProgressCallback?: ITxProgressCallback;\n disableAutomaticTxTracking?: boolean;\n};\n\nexport class TxSubmitter {\n public readonly address: string;\n\n constructor(\n public readonly client: ArgonClient,\n public tx: SubmittableExtrinsic,\n public readonly account: TxSigningAccount,\n ) {\n this.address = account.address;\n }\n\n public async feeEstimate(tip?: bigint): Promise<bigint> {\n const { partialFee } = await this.tx.paymentInfo(this.address, { tip });\n return partialFee.toBigInt();\n }\n\n public async canAfford(\n options: {\n tip?: bigint;\n unavailableBalance?: bigint;\n includeExistentialDeposit?: boolean;\n } = {},\n ): Promise<{ canAfford: boolean; availableBalance: bigint; txFee: bigint }> {\n const { tip, unavailableBalance } = options;\n const account = await this.client.query.system.account(this.address);\n let availableBalance = account.data.free.toBigInt();\n const userBalance = availableBalance;\n if (unavailableBalance) {\n availableBalance -= unavailableBalance;\n }\n const existentialDeposit = options.includeExistentialDeposit\n ? this.client.consts.balances.existentialDeposit.toBigInt()\n : 0n;\n const fees = await this.feeEstimate(tip);\n const totalCharge = fees + (tip ?? 0n);\n const canAfford = availableBalance >= totalCharge + existentialDeposit;\n return { canAfford, availableBalance: userBalance, txFee: fees };\n }\n\n public async sign(options: ISubmittableOptions = {}): Promise<SubmittableExtrinsic> {\n const { useLatestNonce, ...apiOptions } = options;\n await waitForLoad();\n if (useLatestNonce && apiOptions.nonce === undefined) {\n apiOptions.nonce = await this.client.rpc.system.accountNextIndex(this.address);\n }\n\n if ('signer' in this.account) {\n return await this.tx.signAsync(this.address, { ...apiOptions, signer: this.account.signer });\n }\n\n return await this.tx.signAsync(this.account, apiOptions);\n }\n\n public async submitSigned(\n signedTx: SubmittableExtrinsic,\n options: ISubmittableOptions = {},\n ): Promise<TxResult> {\n const blockHeight = await this.client.rpc.chain.getHeader().then(h => h.number.toNumber());\n if (options.logResults) {\n this.logRequest();\n }\n const txHash = signedTx.hash.toHex();\n const result = new TxResult(this.client, {\n signedHash: txHash,\n method: signedTx.method.toHuman(),\n accountAddress: this.address,\n submittedTime: new Date(),\n submittedAtBlockNumber: blockHeight,\n nonce: signedTx.nonce.toNumber(),\n });\n result.txProgressCallback = options.txProgressCallback;\n if (options.disableAutomaticTxTracking !== true) {\n await signedTx.send(result.onSubscriptionResult.bind(result));\n } else {\n try {\n await signedTx.send();\n result.isBroadcast = true;\n } catch (error) {\n result.submissionError = error as Error;\n }\n }\n return result;\n }\n\n public async submit(options: ISubmittableOptions = {}): Promise<TxResult> {\n const signedTx = await this.sign(options);\n return await this.submitSigned(signedTx, options);\n }\n\n private logRequest() {\n let toHuman = (this.tx.toHuman() as any).method;\n const txString = [];\n let api = formatCall(toHuman);\n const args: any[] = [];\n if (api === 'proxy.proxy') {\n toHuman = toHuman.args.call;\n txString.push('Proxy');\n api = formatCall(toHuman);\n }\n if (api.startsWith('utility.batch')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const calls = toHuman.args.calls.map(formatCall).join(', ');\n txString.push(`Batch[${calls}]`);\n } else {\n txString.push(api);\n args.push(toHuman.args);\n }\n args.unshift(txString.join('->'));\n console.log('Submitting transaction from %s:', this.address, ...args);\n }\n}\n\nfunction formatCall(call: any): string {\n return `${call.section}.${call.method}`;\n}\n","import { Keyring, KeyringPair, mnemonicGenerate } from './index';\n\nexport function keyringFromSuri(\n suri: string,\n cryptoType: 'sr25519' | 'ed25519' = 'sr25519',\n): KeyringPair {\n return new Keyring({ type: cryptoType }).createFromUri(suri);\n}\n\nexport function createKeyringPair(opts: { cryptoType?: 'sr25519' | 'ed25519' }): KeyringPair {\n const { cryptoType } = opts;\n const seed = mnemonicGenerate();\n return keyringFromSuri(seed, cryptoType);\n}\n","import { getOfflineRegistry, type ArgonPrimitivesDigestsFrameInfo, type Header } from './index';\n\nexport function getTickFromHeader(header: Header): number | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'aura') {\n return getOfflineRegistry().createType('u64', data).toNumber();\n }\n }\n }\n return undefined;\n}\n\nexport function getAuthorFromHeader(header: Header): string | undefined {\n for (const x of header.digest.logs) {\n if (x.isPreRuntime) {\n const [engineId, data] = x.asPreRuntime;\n if (engineId.toString() === 'pow_') {\n return getOfflineRegistry().createType('AccountId32', data).toHuman();\n }\n }\n }\n return undefined;\n}\n\nexport function getFrameInfoFromHeader(\n header: Header,\n): { isNewFrame: boolean; frameId: number; frameRewardTicksRemaining: number } | undefined {\n for (const x of header.digest.logs) {\n if (x.isConsensus) {\n const [engineId, data] = x.asConsensus;\n if (engineId.toString() === 'fram') {\n const decoded: ArgonPrimitivesDigestsFrameInfo = getOfflineRegistry().createType(\n 'ArgonPrimitivesDigestsFrameInfo',\n data,\n );\n return {\n isNewFrame: decoded.isNewFrame.toPrimitive(),\n frameId: decoded.frameId.toNumber(),\n frameRewardTicksRemaining: decoded.frameRewardTicksRemaining.toNumber(),\n };\n }\n }\n }\n return undefined;\n}\n","import {\n type ArgonClient,\n type ArgonPrimitivesVault,\n FIXED_U128_DECIMALS,\n formatArgons,\n fromFixedNumber,\n MICROGONS_PER_ARGON,\n PERMILL_DECIMALS,\n toFixedNumber,\n TxSubmitter,\n} from './index';\nimport BigNumber from 'bignumber.js';\nimport bs58check from 'bs58check';\nimport { hexToU8a } from '@polkadot/util';\nimport { TxResult } from './TxResult';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport type { PriceIndex } from './PriceIndex';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport type {\n bool,\n BTreeMap,\n Bytes,\n Compact,\n Option,\n Struct,\n u128,\n u64,\n} from '@polkadot/types-codec';\nimport type { AccountId32 } from '@polkadot/types/interfaces/runtime';\nimport type { ITuple } from '@polkadot/types-codec/types';\nimport { ArgonPrimitivesVaultVaultTerms } from '@polkadot/types/lookup';\n\ninterface ArgonPrimitivesVaultV144 extends Struct {\n readonly operatorAccountId: AccountId32;\n readonly securitization: Compact<u128>;\n readonly argonsLocked: Compact<u128>;\n readonly argonsPendingActivation: Compact<u128>;\n readonly argonsScheduledForRelease: BTreeMap<u64, u128>;\n readonly securitizationRatio: Compact<u128>;\n readonly isClosed: bool;\n readonly terms: ArgonPrimitivesVaultVaultTerms;\n readonly pendingTerms: Option<ITuple<[u64, ArgonPrimitivesVaultVaultTerms]>>;\n readonly openedTick: Compact<u64>;\n}\n\nexport class Vault {\n public securitization!: bigint;\n public securitizationLocked!: bigint;\n public securitizationPendingActivation!: bigint;\n /**\n * Map of bitcoin height to amount of securitization released at that height\n */\n public securitizationReleaseSchedule: Map<number, bigint>;\n public terms!: ITerms;\n public operatorAccountId!: string;\n public isClosed!: boolean;\n public vaultId: number;\n public pendingTerms?: ITerms;\n public pendingTermsChangeTick?: number;\n public openedDate: Date;\n public openedTick: number;\n public securitizationRatio!: number;\n\n public lockedSatoshis!: number;\n public securitizedSatoshis!: number;\n public name?: string;\n public lastNameChangeTick?: number;\n public bitcoinLockDelegateAccount?: string;\n\n constructor(\n id: number,\n vault: ArgonPrimitivesVault,\n public tickDuration: number,\n ) {\n this.vaultId = id;\n this.openedTick = vault.openedTick.toNumber();\n this.openedDate = new Date(this.openedTick * this.tickDuration);\n this.securitizationReleaseSchedule = new Map();\n this.load(vault);\n }\n\n public load(vault: ArgonPrimitivesVault | ArgonPrimitivesVaultV144): void {\n this.securitization = vault.securitization.toBigInt();\n this.securitizationRatio = fromFixedNumber(\n vault.securitizationRatio.toBigInt(),\n FIXED_U128_DECIMALS,\n ).toNumber();\n this.securitizationReleaseSchedule.clear();\n let schedule: BTreeMap<u64, u128>;\n if ('argonsLocked' in vault) {\n // spec 143 compatibility - don't bother with ratio as it was forced to 1:1\n this.securitizationLocked = vault.argonsLocked.toBigInt();\n this.securitizationPendingActivation = vault.argonsPendingActivation.toBigInt();\n schedule = vault.argonsScheduledForRelease;\n } else {\n this.securitizationLocked = vault.securitizationLocked.toBigInt();\n this.securitizationPendingActivation = vault.securitizationPendingActivation.toBigInt();\n schedule = vault.securitizationReleaseSchedule;\n }\n if (schedule.size > 0) {\n for (const [bitcoinHeight, amount] of schedule.entries()) {\n this.securitizationReleaseSchedule.set(bitcoinHeight.toNumber(), amount.toBigInt());\n }\n }\n this.terms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n vault.terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: vault.terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n if ('lockedSatoshis' in vault) {\n this.lockedSatoshis = vault.lockedSatoshis.toNumber();\n this.securitizedSatoshis = vault.securitizedSatoshis.toNumber();\n } else {\n this.lockedSatoshis = 0;\n this.securitizedSatoshis = 0;\n }\n\n this.operatorAccountId = vault.operatorAccountId.toString();\n this.isClosed = vault.isClosed.valueOf();\n this.pendingTerms = undefined;\n this.pendingTermsChangeTick = undefined;\n this.name = undefined;\n this.lastNameChangeTick = undefined;\n this.bitcoinLockDelegateAccount = undefined;\n if (vault.pendingTerms.isSome) {\n const [tickApply, terms] = vault.pendingTerms.value;\n this.pendingTermsChangeTick = tickApply.toNumber();\n this.pendingTerms = {\n bitcoinAnnualPercentRate: fromFixedNumber(\n terms.bitcoinAnnualPercentRate.toBigInt(),\n FIXED_U128_DECIMALS,\n ),\n bitcoinBaseFee: terms.bitcoinBaseFee.toBigInt(),\n treasuryProfitSharing: fromFixedNumber(\n vault.terms.treasuryProfitSharing.toBigInt(),\n PERMILL_DECIMALS,\n ),\n };\n }\n if ('name' in vault && vault.name.isSome) {\n this.name = decodeVaultName(vault.name.unwrap());\n }\n if ('lastNameChangeTick' in vault && vault.lastNameChangeTick.isSome) {\n this.lastNameChangeTick = vault.lastNameChangeTick.unwrap().toNumber();\n }\n if ('bitcoinLockDelegateAccount' in vault && vault.bitcoinLockDelegateAccount.isSome) {\n this.bitcoinLockDelegateAccount = vault.bitcoinLockDelegateAccount.unwrap().toHuman();\n }\n }\n\n public availableBitcoinSpace(): bigint {\n const availableSecuritization = this.availableSecuritization();\n const microgons = BigNumber(availableSecuritization).div(this.securitizationRatioBN());\n return bigNumberToBigInt(microgons);\n }\n\n public availableSecuritization(): bigint {\n return this.securitization - this.securitizationLocked;\n }\n\n public availableBondSpace(\n priceIndex: PriceIndex,\n bondLots?: Iterable<{ activeBonds: number }>,\n bondFullCapacityPerFrame?: boolean,\n ): bigint {\n if (this.securitizedSatoshis <= 0) return 0n;\n\n const microgonsPerBond = BigInt(MICROGONS_PER_ARGON);\n const totalBondCapacityMicrogons = priceIndex.getSatoshiPriceInTargetMicrogons(\n BigInt(this.securitizedSatoshis),\n );\n const capacityMicrogons = bondFullCapacityPerFrame\n ? totalBondCapacityMicrogons\n : totalBondCapacityMicrogons / 10n;\n const bondCapacity = Number(capacityMicrogons / microgonsPerBond);\n const activeBonds = [...(bondLots ?? [])].reduce(\n (sum, bondLot) => sum + bondLot.activeBonds,\n 0,\n );\n const availableBonds = activeBonds < bondCapacity ? bondCapacity - activeBonds : 0;\n\n return BigInt(availableBonds) * microgonsPerBond;\n }\n\n public getRelockCapacity(): bigint {\n return [...this.securitizationReleaseSchedule.values()].reduce((acc, val) => acc + val, 0n);\n }\n\n public securitizationRatioBN(): BigNumber {\n return new BigNumber(this.securitizationRatio);\n }\n\n public activatedSecuritization(): bigint {\n return this.securitizationLocked - this.securitizationPendingActivation;\n }\n\n /**\n * Returns the amount of securitization available to match per treasury pool\n */\n public activatedSecuritizationPerSlot(): bigint {\n const activated = this.activatedSecuritization();\n return activated / 10n;\n }\n\n public calculateBitcoinFee(amount: bigint): bigint {\n const feeBn = this.terms.bitcoinAnnualPercentRate\n .multipliedBy(amount)\n .integerValue(BigNumber.ROUND_CEIL);\n return BigInt(feeBn.toString()) + this.terms.bitcoinBaseFee;\n }\n\n public static async get(\n client: ArgonClient | ApiDecoration<'promise'>,\n vaultId: number,\n tickDurationMillis?: number,\n ): Promise<Vault> {\n const rawVault = await client.query.vaults.vaultsById(vaultId);\n if (rawVault.isNone) {\n throw new Error(`Vault with id ${vaultId} not found`);\n }\n const tickDuration =\n tickDurationMillis ??\n (await client.query.ticks.genesisTicker().then(x => x.tickDurationMillis.toNumber()))!;\n return new Vault(vaultId, rawVault.unwrap(), tickDuration);\n }\n\n public static async create(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n securitization: bigint | number;\n securitizationRatio: number;\n annualPercentRate: number;\n baseFee: bigint | number;\n bitcoinXpub: string;\n name?: string;\n treasuryProfitSharing: number;\n doNotExceedBalance?: bigint;\n } & ISubmittableOptions,\n config: { tickDurationMillis?: number } = {},\n ): Promise<{ getVault(): Promise<Vault>; txResult: TxResult }> {\n const {\n securitization,\n securitizationRatio,\n annualPercentRate,\n baseFee,\n bitcoinXpub,\n name,\n tip,\n doNotExceedBalance,\n } = args;\n let xpubBytes = hexToU8a(bitcoinXpub);\n if (xpubBytes.length !== 78) {\n if (\n bitcoinXpub.startsWith('xpub') ||\n bitcoinXpub.startsWith('tpub') ||\n bitcoinXpub.startsWith('zpub')\n ) {\n const bytes = bs58check.decode(bitcoinXpub);\n if (bytes.length !== 78) {\n throw new Error('Invalid Bitcoin xpub key length, must be 78 bytes');\n }\n xpubBytes = bytes;\n }\n }\n if (securitizationRatio < 1 || securitizationRatio > 2) {\n throw new Error('Securitization ratio must be between 1 and 2');\n }\n const encodedName = encodeVaultName(name);\n const vaultParams = {\n terms: {\n // convert to fixed u128\n bitcoinAnnualPercentRate: toFixedNumber(annualPercentRate, FIXED_U128_DECIMALS),\n bitcoinBaseFee: BigInt(baseFee),\n treasuryProfitSharing: toFixedNumber(args.treasuryProfitSharing, PERMILL_DECIMALS),\n },\n securitizationRatio: toFixedNumber(securitizationRatio, FIXED_U128_DECIMALS),\n securitization: BigInt(securitization),\n bitcoinXpubkey: xpubBytes,\n name: encodedName,\n };\n const tx = new TxSubmitter(client, client.tx.vaults.create(vaultParams), txSigner);\n if (doNotExceedBalance) {\n const finalTip = tip ?? 0n;\n let txFee = await tx.feeEstimate(finalTip);\n while (txFee + finalTip + vaultParams.securitization > doNotExceedBalance) {\n vaultParams.securitization = doNotExceedBalance - txFee - finalTip;\n tx.tx = client.tx.vaults.create(vaultParams);\n txFee = await tx.feeEstimate(finalTip);\n }\n }\n const canAfford = await tx.canAfford({ tip, unavailableBalance: BigInt(securitization) });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient balance to create vault. Required: ${formatArgons(securitization)}, Available: ${formatArgons(canAfford.availableBalance)}`,\n );\n }\n\n const result = await tx.submit({\n ...args,\n useLatestNonce: true,\n });\n\n async function getVault(): Promise<Vault> {\n await result.waitForFinalizedBlock;\n let vaultId: number | undefined;\n for (const event of result.events) {\n if (client.events.vaults.VaultCreated.is(event)) {\n vaultId = event.data.vaultId.toNumber();\n break;\n }\n }\n if (vaultId === undefined) {\n throw new Error('Vault creation failed, no VaultCreated event found');\n }\n return Vault.get(client, vaultId, config.tickDurationMillis);\n }\n return { getVault, txResult: result };\n }\n\n public static async setName(\n client: ArgonClient,\n txSigner: TxSigningAccount,\n args: {\n name?: string | null;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const tx = new TxSubmitter(\n client,\n client.tx.vaults.setName(encodeVaultName(args.name)),\n txSigner,\n );\n\n return tx.submit({\n ...args,\n useLatestNonce: true,\n });\n }\n}\n\nexport interface ITerms {\n readonly bitcoinAnnualPercentRate: BigNumber;\n readonly bitcoinBaseFee: bigint;\n readonly treasuryProfitSharing: BigNumber;\n}\nfunction bigNumberToBigInt(bn: BigNumber): bigint {\n return BigInt(bn.integerValue(BigNumber.ROUND_DOWN).toString());\n}\n\nfunction decodeVaultName(name: Bytes): string {\n return new TextDecoder().decode(Uint8Array.from(name));\n}\n\nfunction encodeVaultName(name?: string | null): string | null {\n if (name === undefined || name === null) {\n return null;\n }\n if (!/^[A-Z][A-Za-z0-9]{0,17}$/.test(name)) {\n throw new Error(\n 'Vault name must start with a capital letter and contain at most 18 alphanumeric characters',\n );\n }\n return name;\n}\n","import BigNumber from 'bignumber.js';\n\nexport function toFixedNumber(\n value: string | number | BigNumber, // accept string to avoid early precision loss\n decimals: number,\n): bigint {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value);\n // truncate toward 0; use ROUND_FLOOR if you really need floor for positives\n const int = bn.times(factor).integerValue(BigNumber.ROUND_DOWN);\n return BigInt(int.toFixed(0));\n}\n\nexport function fromFixedNumber(value: bigint, decimals: number = FIXED_U128_DECIMALS): BigNumber {\n const factor = new BigNumber(10).pow(decimals);\n const bn = new BigNumber(value.toString());\n return bn.div(factor);\n}\n\nexport const FIXED_U128_DECIMALS = 18;\nexport const PERMILL_DECIMALS = 6;\n","import {\n ArgonClient,\n ArgonPrimitivesBitcoinBitcoinNetwork,\n ArgonPrimitivesBitcoinUtxoRef,\n getBigIntFallback,\n} from './index';\nimport { GenericEvent } from '@polkadot/types';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type { ISubmittableOptions, TxSigningAccount } from './TxSubmitter';\nimport { TxSubmitter } from './TxSubmitter';\nimport { TxResult } from './TxResult';\nimport { u8aToHex } from '@polkadot/util';\nimport { ApiDecoration } from '@polkadot/api/types';\nimport { PriceIndex } from './PriceIndex';\nimport { bool, Option, u128 } from '@polkadot/types-codec';\nimport { formatArgons } from './utils';\nimport type { Vault } from './Vault';\nimport BigNumber from 'bignumber.js';\n\nexport const SATS_PER_BTC = 100_000_000n;\n\ntype IQueryableClient = ArgonClient | ApiDecoration<'promise'>;\ntype UtxoRefLike =\n | ArgonPrimitivesBitcoinUtxoRef\n | { txid: string | Uint8Array; outputIndex: number };\n\ntype UtxoRefOption = { unwrap: () => ArgonPrimitivesBitcoinUtxoRef };\n\nfunction normalizeUtxoRef(utxoRef: UtxoRefLike): {\n txid: string;\n outputIndex: number;\n} {\n let txid = utxoRef.txid;\n if (typeof txid === 'object' && 'toHex' in txid) {\n txid = txid.toHex();\n } else if (typeof txid !== 'string') {\n txid = u8aToHex(txid);\n }\n let outputIndex = utxoRef.outputIndex;\n if (typeof outputIndex !== 'number') {\n outputIndex = outputIndex.toNumber();\n }\n return { txid, outputIndex };\n}\n\nexport class BitcoinLock implements IBitcoinLock {\n public utxoId: number;\n public p2wshScriptHashHex: string;\n public vaultId: number;\n public lockedTargetPrice: bigint;\n public liquidityPromised: bigint;\n public ownerAccount: string;\n public satoshis: bigint;\n public utxoSatoshis?: bigint;\n public vaultPubkey: string;\n public securityFees: bigint;\n public vaultClaimPubkey: string;\n public ownerPubkey: string;\n public vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n public vaultClaimHeight: number;\n public openClaimHeight: number;\n public createdAtHeight: number;\n public isFunded: boolean;\n public createdAtArgonBlock: number;\n public fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n\n constructor(data: IBitcoinLock) {\n this.utxoId = data.utxoId;\n this.p2wshScriptHashHex = data.p2wshScriptHashHex;\n this.vaultId = data.vaultId;\n this.lockedTargetPrice = data.lockedTargetPrice;\n this.liquidityPromised = data.liquidityPromised;\n this.ownerAccount = data.ownerAccount;\n this.satoshis = data.satoshis;\n this.utxoSatoshis = data.utxoSatoshis;\n this.vaultPubkey = data.vaultPubkey;\n this.securityFees = data.securityFees;\n this.vaultClaimPubkey = data.vaultClaimPubkey;\n this.ownerPubkey = data.ownerPubkey;\n this.vaultXpubSources = data.vaultXpubSources;\n this.vaultClaimHeight = data.vaultClaimHeight;\n this.openClaimHeight = data.openClaimHeight;\n this.createdAtHeight = data.createdAtHeight;\n this.isFunded = data.isFunded;\n this.fundHoldExtensionsByBitcoinExpirationHeight =\n data.fundHoldExtensionsByBitcoinExpirationHeight;\n this.createdAtArgonBlock = data.createdAtArgonBlock;\n }\n\n /**\n * Gets the UTXO reference by ID.\n * @param client - client at the block height to query the UTXO reference at a specific point in time.\n * @return An object containing the transaction ID and output index, or undefined if not found.\n * @return.txid - The Bitcoin transaction ID of the UTXO.\n * @return.vout - The output index of the UTXO in the transaction.\n * @return.bitcoinTxid - The Bitcoin transaction ID of the UTXO formatted in little endian\n */\n public async getFundingUtxoRef(\n client: IQueryableClient,\n ): Promise<{ txid: string; vout: number; bitcoinTxid: string } | undefined> {\n let refRaw: Option<ArgonPrimitivesBitcoinUtxoRef>;\n if (\n 'utxoIdToRef' in client.query.bitcoinUtxos &&\n typeof client.query.bitcoinUtxos.utxoIdToRef === 'function'\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n refRaw = await client.query.bitcoinUtxos.utxoIdToRef(this.utxoId);\n } else {\n refRaw = await client.query.bitcoinUtxos.utxoIdToFundingUtxoRef(this.utxoId);\n }\n if (!refRaw || refRaw.isNone) {\n return;\n }\n const ref = refRaw.unwrap();\n\n const txid = u8aToHex(ref.txid);\n const bitcoinTxid = u8aToHex(ref.txid.slice().reverse());\n const vout = ref.outputIndex.toNumber();\n return { txid, vout, bitcoinTxid };\n }\n\n public async findPendingMints(client: IQueryableClient): Promise<bigint[]> {\n const pendingMint = await client.query.mint.pendingMintUtxos();\n const mintsPending: bigint[] = [];\n for (const [utxoIdRaw, _accountId, mintAmountRaw] of pendingMint) {\n if (utxoIdRaw.toNumber() === this.utxoId) {\n mintsPending.push(mintAmountRaw.toBigInt());\n }\n }\n return mintsPending;\n }\n\n public async calculateRatchetingCosts(\n client: IQueryableClient,\n priceIndex: PriceIndex,\n vault: Vault,\n microgonsAtTargetPerBtc?: bigint,\n ): Promise<{ burnAmount: bigint; ratchetingFee: bigint }> {\n const { createdAtHeight, vaultClaimHeight, lockedTargetPrice, satoshis } = this;\n const currentTargetPrice =\n microgonsAtTargetPerBtc !== undefined\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n\n let ratchetingFee = vault.terms.bitcoinBaseFee;\n let burnAmount = 0n;\n\n // ratchet up\n if (currentTargetPrice > lockedTargetPrice) {\n const diffTargetAmount = currentTargetPrice - lockedTargetPrice;\n const amountToMint = BitcoinLock.calculateRedemptionAmount(priceIndex, diffTargetAmount);\n const bitcoinFee = vault.calculateBitcoinFee(amountToMint);\n const percentageFee = bitcoinFee - vault.terms.bitcoinBaseFee;\n\n const currentBitcoinHeight = await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const fullTerm = Math.max(1, vaultClaimHeight - createdAtHeight);\n const elapsedBlocks = Math.max(0, currentBitcoinHeight - createdAtHeight);\n const cappedRemainingBlocks = Math.max(0, fullTerm - elapsedBlocks);\n const proratedFee = (percentageFee * BigInt(cappedRemainingBlocks)) / BigInt(fullTerm);\n ratchetingFee = vault.terms.bitcoinBaseFee + proratedFee;\n } else {\n burnAmount = BitcoinLock.calculateRedemptionAmount(priceIndex, currentTargetPrice);\n }\n\n return {\n ratchetingFee,\n burnAmount,\n };\n }\n\n public async ratchet(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n txSigner: TxSigningAccount;\n vault: Vault;\n microgonsAtTargetPerBtc?: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n txResult: TxResult;\n getRatchetResult: () => Promise<{\n securityFee: bigint;\n txFee: bigint;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n pendingMint: bigint;\n burned: bigint;\n blockHeight: number;\n bitcoinBlockHeight: number;\n }>;\n }> {\n const { priceIndex, txSigner, tip = 0n, vault, client, microgonsAtTargetPerBtc } = args;\n\n const ratchetingCosts = await this.calculateRatchetingCosts(\n client,\n priceIndex,\n vault,\n microgonsAtTargetPerBtc,\n );\n const tx = client.tx.bitcoinLocks.ratchet(this.utxoId, { V1: { microgonsAtTargetPerBtc } });\n const txSubmitter = new TxSubmitter(client, tx, txSigner);\n const canAfford = await txSubmitter.canAfford({\n tip,\n unavailableBalance: BigInt(ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee),\n });\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to ratchet lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(\n ratchetingCosts.burnAmount + ratchetingCosts.ratchetingFee,\n )}`,\n );\n }\n\n const txResult = await txSubmitter.submit(args);\n\n const getRatchetResult = async () => {\n const blockHash = await txResult.waitForFinalizedBlock;\n const ratchetEvent = txResult.events.find(x =>\n client.events.bitcoinLocks.BitcoinLockRatcheted.is(x),\n );\n if (!ratchetEvent) {\n throw new Error(`Ratchet event not found in transaction events`);\n }\n const api = await client.at(blockHash);\n const bitcoinBlockHeight = await api.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.unwrap().blockHeight.toNumber());\n const {\n amountBurned,\n liquidityPromised: liquidityPromisedRaw,\n newTargetPrice: newTargetPriceRaw,\n oldTargetPrice: oldTargetPriceRaw,\n securityFee,\n } = ratchetEvent.data;\n\n const liquidityPromised = liquidityPromisedRaw.toBigInt();\n const newTargetPrice = newTargetPriceRaw.toBigInt();\n const oldTargetPrice = oldTargetPriceRaw.toBigInt();\n const pendingMint =\n newTargetPrice > oldTargetPrice\n ? BitcoinLock.calculateRedemptionAmount(priceIndex, newTargetPrice - oldTargetPrice)\n : liquidityPromised;\n\n return {\n txFee: txResult.finalFee ?? 0n,\n blockHeight: txResult.blockNumber!,\n bitcoinBlockHeight,\n pendingMint,\n liquidityPromised,\n lockedTargetPrice: newTargetPrice,\n burned: amountBurned.toBigInt(),\n securityFee: securityFee.toBigInt(),\n };\n };\n\n return {\n txResult,\n getRatchetResult,\n };\n }\n\n public calculateRedemptionAmount(priceIndex: PriceIndex): bigint {\n return BitcoinLock.calculateRedemptionAmountFromSatoshis(\n priceIndex,\n this.satoshis,\n this.lockedTargetPrice,\n );\n }\n\n public async requestRelease(\n args: {\n client: ArgonClient;\n priceIndex: PriceIndex;\n releaseRequest: IReleaseRequest;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const {\n priceIndex,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n txSigner,\n tip = 0n,\n client,\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const submitter = new TxSubmitter(\n client,\n client.tx.bitcoinLocks.requestRelease(this.utxoId, toScriptPubkey, bitcoinNetworkFee),\n txSigner,\n );\n\n const redemptionAmount = this.calculateRedemptionAmount(priceIndex);\n\n const canAfford = await submitter.canAfford({\n tip,\n unavailableBalance: BigInt(redemptionAmount),\n });\n\n if (!canAfford.canAfford) {\n throw new Error(\n `Insufficient funds to release lock. Available: ${formatArgons(canAfford.availableBalance)}, Required: ${formatArgons(redemptionAmount + canAfford.txFee + tip)}`,\n );\n }\n return submitter.submit({\n logResults: true,\n ...args,\n });\n }\n\n public async getReleaseRequest(\n client: IQueryableClient,\n ): Promise<IReleaseRequestDetails | undefined> {\n const requestMaybe = await client.query.bitcoinLocks.lockReleaseRequestsByUtxoId(this.utxoId);\n if (!requestMaybe.isSome) {\n return undefined;\n }\n const request = requestMaybe.unwrap();\n return {\n toScriptPubkey: request.toScriptPubkey.toHex(),\n bitcoinNetworkFee: request.bitcoinNetworkFee.toBigInt(),\n dueFrame: request.cosignDueFrame.toNumber(),\n vaultId: request.vaultId.toNumber(),\n redemptionAmount: getBigIntFallback(request.redemptionAmount, request, ['redemptionPrice']),\n };\n }\n\n /**\n * Finds the cosign signature for a vault lock by UTXO ID. Optionally waits for the signature\n * @param client - The Argon client with rpc access\n * @param finalizedStateOnly - If true, only checks finalized state\n * @param waitForSignatureMillis - Optional timeout in milliseconds to wait for the signature. If -1, waits indefinitely.\n */\n public async findVaultCosignSignature(\n client: ArgonClient,\n finalizedStateOnly = false,\n waitForSignatureMillis?: number,\n ): Promise<{ blockHeight: number; signature: Uint8Array } | undefined> {\n let queryClient = client as IQueryableClient;\n if (finalizedStateOnly) {\n const finalizedHead = await client.rpc.chain.getFinalizedHead();\n queryClient = await client.at(finalizedHead);\n }\n const releaseHeight = await queryClient.query.bitcoinLocks.lockReleaseCosignHeightById(\n this.utxoId,\n );\n if (releaseHeight.isSome) {\n const releaseHeightValue = releaseHeight.unwrap().toNumber();\n const signature = await this.getVaultCosignSignature(client, releaseHeightValue);\n if (signature) {\n return { blockHeight: releaseHeightValue, signature };\n }\n }\n\n if (!waitForSignatureMillis) {\n return undefined;\n }\n\n return await new Promise(async (resolve, reject) => {\n let timeout: NodeJS.Timeout | undefined;\n const unsub = await client.rpc.chain.subscribeNewHeads(header => {\n const atHeight = header.number.toNumber();\n this.getVaultCosignSignature(client, atHeight)\n .then(signature => {\n if (signature) {\n unsub?.();\n clearTimeout(timeout);\n resolve({ signature, blockHeight: atHeight });\n }\n })\n .catch(err => {\n console.error(`Error checking for cosign signature at height ${atHeight}:`, err);\n });\n });\n if (waitForSignatureMillis !== -1) {\n timeout = setTimeout(() => {\n unsub?.();\n reject(new Error(`Timeout waiting for cosign signature for UTXO ID ${this.utxoId}`));\n }, waitForSignatureMillis);\n }\n });\n }\n\n public async getVaultCosignSignature(\n client: ArgonClient,\n atHeight: number,\n ): Promise<Uint8Array | undefined> {\n const blockHash = await BitcoinLock.blockHashAtHeight(client, atHeight);\n if (!blockHash) {\n console.warn(`Block hash not found for height ${atHeight}`);\n return undefined;\n }\n\n const blockEvents = await client.at(blockHash).then(api => api.query.system.events());\n for (const event of blockEvents) {\n if (client.events.bitcoinLocks.BitcoinUtxoCosigned.is(event.event)) {\n const { utxoId: id, signature } = event.event.data;\n if (id.toNumber() === this.utxoId) {\n return new Uint8Array(signature);\n }\n }\n }\n return undefined;\n }\n\n public static async getUtxoIdFromEvents(client: IQueryableClient, events: GenericEvent[]) {\n for (const event of events) {\n if (client.events.bitcoinLocks.BitcoinLockCreated.is(event)) {\n return event.data.utxoId.toNumber();\n }\n }\n return undefined;\n }\n\n public static calculateRedemptionAmountFromSatoshis(\n priceIndex: PriceIndex,\n satoshis: bigint,\n lockedTargetPrice?: bigint,\n ): bigint {\n const btcMicrogonsAtTarget = priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n return this.calculateRedemptionAmount(priceIndex, btcMicrogonsAtTarget, lockedTargetPrice);\n }\n\n public static calculateRedemptionAmount(\n priceIndex: PriceIndex,\n btcMicrogonsAtTarget: bigint,\n maxMicrogonsAtTarget?: bigint,\n ): bigint {\n let price = btcMicrogonsAtTarget;\n if (maxMicrogonsAtTarget !== undefined && maxMicrogonsAtTarget < btcMicrogonsAtTarget) {\n price = maxMicrogonsAtTarget;\n }\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n\n return BigInt(\n new BigNumber(price.toString())\n .times(multiplierBn)\n .integerValue(BigNumber.ROUND_DOWN)\n .toFixed(0),\n );\n }\n\n private static redemptionMultiplierBn(priceIndex: PriceIndex): BigNumber {\n const r = priceIndex.rValue;\n\n if (r.gte(1)) {\n // Case 1: no penalty\n return new BigNumber(1);\n } else if (r.gte(0.9)) {\n // Case 2: quadratic curve\n // Formula: 20r² - 38r + 19\n return new BigNumber(20).times(r.pow(2)).minus(new BigNumber(38).times(r)).plus(19);\n } else if (r.gte(0.01)) {\n // Case 3: rational linear formula\n // Formula: (0.5618r + 0.3944) / r\n return new BigNumber(0.5618).times(r).plus(0.3944).div(r);\n } else {\n // Case 4: extreme deviation\n // Formula: (1 / r) * (0.576r + 0.4)\n return new BigNumber(1).div(r).times(new BigNumber(0.576).times(r).plus(0.4));\n }\n }\n\n public static async getConfig(client: IQueryableClient): Promise<IBitcoinLockConfig> {\n const bitcoinNetwork = await client.query.bitcoinUtxos.bitcoinNetwork();\n return {\n lockReleaseCosignDeadlineFrames:\n client.consts.bitcoinLocks.lockReleaseCosignDeadlineFrames.toNumber(),\n pendingConfirmationExpirationBlocks:\n client.consts.bitcoinUtxos.maxPendingConfirmationBlocks.toNumber(),\n tickDurationMillis: await client.query.ticks\n .genesisTicker()\n .then(x => x.tickDurationMillis.toNumber()),\n bitcoinNetwork,\n lockSatoshiAllowedVariance:\n client.consts.bitcoinUtxos.maximumSatoshiThresholdFromExpected?.toNumber() ?? 10_000,\n };\n }\n\n public static async getBitcoinConfirmedBlockHeight(client: IQueryableClient): Promise<number> {\n return await client.query.bitcoinUtxos\n .confirmedBitcoinBlockTip()\n .then(x => x.value?.blockHeight.toNumber() ?? 0);\n }\n\n public static async submitVaultSignature(\n args: {\n client: ArgonClient;\n utxoId: number;\n vaultSignature: Uint8Array;\n txSigner: TxSigningAccount;\n } & ISubmittableOptions,\n ): Promise<TxResult> {\n const { utxoId, vaultSignature, txSigner, client } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n const signature = u8aToHex(vaultSignature);\n const tx = client.tx.bitcoinLocks.cosignRelease(utxoId, signature);\n const submitter = new TxSubmitter(client, tx, txSigner);\n\n return await submitter.submit(args);\n }\n\n public static async createIncreaseSecuritizationTx(\n args: {\n utxoId: number;\n client: ArgonClient;\n newSatoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, newSatoshis, utxoId } = args;\n const txBuilder = client.tx.bitcoinLocks.increaseSecuritization;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, newSatoshis);\n }\n\n public static async createFundWithUtxoCandidateTx(\n args: {\n client: ArgonClient;\n utxoId: number;\n utxoRef: UtxoRefLike;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, utxoId, utxoRef } = args;\n const txBuilder = client.tx.bitcoinUtxos?.fundWithUtxoCandidate;\n if (!txBuilder?.meta) {\n return undefined;\n }\n return txBuilder(utxoId, normalizeUtxoRef(utxoRef));\n }\n\n public static async createOrphanedUtxoReleaseRequestTx(\n args: {\n client: ArgonClient;\n utxoRef: UtxoRefLike;\n releaseRequest: IReleaseRequest;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const {\n client,\n utxoRef,\n releaseRequest: { bitcoinNetworkFee, toScriptPubkey },\n } = args;\n\n if (!toScriptPubkey.startsWith('0x')) {\n throw new Error('toScriptPubkey must be a hex string starting with 0x');\n }\n\n const txBuilder = client.tx.bitcoinLocks.requestOrphanedUtxoRelease;\n if (!txBuilder?.meta) {\n return undefined;\n }\n\n return txBuilder(normalizeUtxoRef(utxoRef), toScriptPubkey, bitcoinNetworkFee);\n }\n\n public static async createOrphanedUtxoCosignTx(\n args: {\n client: ArgonClient;\n orphanOwner: string;\n utxoRef: UtxoRefLike;\n vaultSignature: Uint8Array;\n } & ISubmittableOptions,\n ): Promise<SubmittableExtrinsic | undefined> {\n const { client, orphanOwner, utxoRef, vaultSignature } = args;\n if (!vaultSignature || vaultSignature.byteLength < 70 || vaultSignature.byteLength > 73) {\n throw new Error(\n `Invalid vault signature length: ${vaultSignature.byteLength}. Must be 70-73 bytes.`,\n );\n }\n if (!client.tx.bitcoinLocks.cosignOrphanedUtxoRelease?.meta) {\n return undefined;\n }\n const signature = u8aToHex(vaultSignature);\n return client.tx.bitcoinLocks.cosignOrphanedUtxoRelease(\n orphanOwner,\n normalizeUtxoRef(utxoRef),\n signature,\n );\n }\n\n public static async get(\n client: IQueryableClient,\n utxoId: number,\n ): Promise<BitcoinLock | undefined> {\n const utxoRaw = await client.query.bitcoinLocks.locksByUtxoId(utxoId);\n if (!utxoRaw.isSome) {\n return;\n }\n const utxo = utxoRaw.unwrap();\n const p2shBytesPrefix = '0020';\n const wscriptHash = utxo.utxoScriptPubkey.asP2wsh.wscriptHash.toHex().replace('0x', '');\n const p2wshScriptHashHex = `0x${p2shBytesPrefix}${wscriptHash}`;\n const vaultId = utxo.vaultId.toNumber();\n const lockedTargetPrice = getBigIntFallback(utxo.lockedTargetPrice, utxo, [\n 'lockedMarketRate',\n 'peggedPrice',\n ]);\n const liquidityPromised = utxo.liquidityPromised.toBigInt();\n const ownerAccount = utxo.ownerAccount.toHuman();\n const satoshis = utxo.satoshis.toBigInt();\n const utxoSatoshis = utxo.utxoSatoshis?.isSome ? utxo.utxoSatoshis.value.toBigInt() : undefined;\n const vaultPubkey = utxo.vaultPubkey.toHex();\n const vaultClaimPubkey = utxo.vaultClaimPubkey.toHex();\n const ownerPubkey = utxo.ownerPubkey.toHex();\n const [fingerprint, cosign_hd_index, claim_hd_index] = utxo.vaultXpubSources;\n const vaultXpubSources = {\n parentFingerprint: new Uint8Array(fingerprint),\n cosignHdIndex: cosign_hd_index.toNumber(),\n claimHdIndex: claim_hd_index.toNumber(),\n };\n\n const createdAtArgonBlock = utxo.createdAtArgonBlock?.toNumber() ?? 0;\n const securityFees = utxo.securityFees.toBigInt();\n const vaultClaimHeight = utxo.vaultClaimHeight.toNumber();\n const openClaimHeight = utxo.openClaimHeight.toNumber();\n const createdAtHeight = utxo.createdAtHeight.toNumber();\n const isFunded = ((utxo as { isVerified?: bool })?.isVerified ?? utxo.isFunded).toJSON();\n const fundHoldExtensionsByBitcoinExpirationHeight = Object.fromEntries(\n [...utxo.fundHoldExtensions.entries()].map(([x, y]) => [x.toNumber(), y.toBigInt()]),\n );\n return new BitcoinLock({\n utxoId,\n p2wshScriptHashHex,\n vaultId,\n lockedTargetPrice,\n liquidityPromised,\n ownerAccount,\n satoshis,\n utxoSatoshis,\n vaultPubkey,\n vaultClaimPubkey,\n ownerPubkey,\n vaultXpubSources,\n vaultClaimHeight,\n openClaimHeight,\n createdAtHeight,\n securityFees,\n isFunded,\n fundHoldExtensionsByBitcoinExpirationHeight,\n createdAtArgonBlock,\n });\n }\n\n public static async blockHashAtHeight(\n client: ArgonClient,\n atHeight: number,\n ): Promise<string | undefined> {\n for (let i = 0; i < 10; i++) {\n const currentHeight = await client.query.system.number().then(x => x.toNumber());\n if (atHeight > currentHeight) {\n console.warn(\n `Requested block height ${atHeight} is greater than current height ${currentHeight}. Retrying...`,\n );\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n const hash = await client.rpc.chain.getBlockHash(atHeight).then(x => x.toHex());\n if (hash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n console.warn(`Block hash not found for height ${atHeight}. Retrying...`);\n await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second before retrying\n continue;\n }\n return hash;\n }\n return undefined;\n }\n\n public static async createInitializeTx(args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n satoshis: bigint;\n txSigner: TxSigningAccount;\n reducedBalanceBy?: bigint;\n microgonsAtTargetPerBtc?: bigint;\n tip?: bigint;\n initializeForAccountId?: string;\n }) {\n const {\n vault,\n priceIndex,\n txSigner,\n satoshis,\n tip = 0n,\n ownerBitcoinPubkey,\n client,\n microgonsAtTargetPerBtc = null,\n initializeForAccountId,\n } = args;\n if (ownerBitcoinPubkey.length !== 33) {\n throw new Error(\n `Invalid Bitcoin key length: ${ownerBitcoinPubkey.length}. Must be a compressed pukey (33 bytes).`,\n );\n }\n\n let tx: SubmittableExtrinsic;\n if (initializeForAccountId) {\n tx = client.tx.bitcoinLocks.initializeFor(\n initializeForAccountId,\n vault.vaultId,\n satoshis,\n ownerBitcoinPubkey,\n {\n V1: {\n microgonsAtTargetPerBtc,\n },\n },\n );\n } else {\n tx = client.tx.bitcoinLocks.initialize(vault.vaultId, satoshis, ownerBitcoinPubkey, {\n V1: {\n microgonsAtTargetPerBtc,\n },\n });\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const targetPrice =\n microgonsAtTargetPerBtc !== null\n ? (microgonsAtTargetPerBtc * satoshis) / SATS_PER_BTC\n : priceIndex.getSatoshiPriceInTargetMicrogons(satoshis);\n const unlockAmount = this.calculateRedemptionAmount(priceIndex, targetPrice);\n const isVaultOwner = txSigner.address === vault.operatorAccountId;\n const securityFee = isVaultOwner ? 0n : vault.calculateBitcoinFee(unlockAmount);\n\n const { canAfford, availableBalance, txFee } = await submitter.canAfford({\n tip,\n unavailableBalance: securityFee + (args.reducedBalanceBy ?? 0n),\n includeExistentialDeposit: true,\n });\n return {\n tx,\n securityFee,\n txFee,\n canAfford,\n availableBalance,\n txFeePlusTip: txFee + tip,\n };\n }\n\n public static async initialize(\n args: {\n client: ArgonClient;\n vault: Vault;\n priceIndex: PriceIndex;\n ownerBitcoinPubkey: Uint8Array;\n txSigner: TxSigningAccount;\n satoshis: bigint;\n } & ISubmittableOptions,\n ): Promise<{\n getLock(): Promise<{ lock: BitcoinLock; createdAtHeight: number }>;\n txResult: TxResult;\n securityFee: bigint;\n }> {\n const { txSigner, client } = args;\n\n const { tx, securityFee, canAfford, txFeePlusTip } = await this.createInitializeTx(args);\n if (!canAfford) {\n throw new Error(\n `Insufficient funds to initialize bitcoin lock. Required security fee: ${formatArgons(securityFee)}, Tx fee plus tip: ${formatArgons(txFeePlusTip)}`,\n );\n }\n const submitter = new TxSubmitter(client, tx, txSigner);\n const txResult = await submitter.submit({ logResults: true, ...args });\n\n return {\n getLock: () => this.getBitcoinLockFromTxResult(client, txResult),\n txResult,\n securityFee,\n };\n }\n\n public static async getBitcoinLockFromTxResult(\n client: IQueryableClient,\n txResult: TxResult,\n ): Promise<{\n lock: BitcoinLock;\n createdAtHeight: number;\n txResult: TxResult;\n }> {\n await txResult.waitForFinalizedBlock;\n const blockHeight = txResult.blockNumber!;\n const utxoId = (await this.getUtxoIdFromEvents(client, txResult.events)) ?? 0;\n if (utxoId === 0) {\n throw new Error('Bitcoin lock creation failed, no UTXO ID found in transaction events');\n }\n const lock = await this.get(client, utxoId);\n if (!lock) {\n throw new Error(`Lock with ID ${utxoId} not found after initialization`);\n }\n return { lock, createdAtHeight: blockHeight, txResult };\n }\n\n public static satoshisRequiredForRedemptionAmount(\n priceIndex: PriceIndex,\n redemptionAmount: bigint,\n ): bigint {\n if (redemptionAmount <= 0n) return 0n;\n\n const multiplierBn = this.redemptionMultiplierBn(priceIndex);\n const targetMicrogonsPerBtc = priceIndex.getSatoshiPriceInTargetMicrogons(SATS_PER_BTC);\n let requiredTargetMicrogons = BigInt(\n new BigNumber(redemptionAmount.toString())\n .div(multiplierBn)\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n while (this.calculateRedemptionAmount(priceIndex, requiredTargetMicrogons) < redemptionAmount) {\n requiredTargetMicrogons += 1n;\n }\n\n let satoshis = BigInt(\n new BigNumber(requiredTargetMicrogons.toString())\n .times(SATS_PER_BTC.toString())\n .div(targetMicrogonsPerBtc.toString())\n .integerValue(BigNumber.ROUND_CEIL)\n .toFixed(0),\n );\n\n // The forward path floors target microgons from sats, then floors the redemption amount.\n // Verify the computed sats satisfy both boundaries, then step down to the minimal sat count.\n while (this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis) < redemptionAmount) {\n satoshis += 1n;\n }\n while (\n satoshis > 0n &&\n this.calculateRedemptionAmountFromSatoshis(priceIndex, satoshis - 1n) >= redemptionAmount\n ) {\n satoshis -= 1n;\n }\n\n return satoshis;\n }\n}\n\nexport interface IBitcoinLockConfig {\n lockReleaseCosignDeadlineFrames: number;\n pendingConfirmationExpirationBlocks: number;\n tickDurationMillis: number;\n bitcoinNetwork: ArgonPrimitivesBitcoinBitcoinNetwork;\n lockSatoshiAllowedVariance: number;\n}\nexport interface IReleaseRequest {\n toScriptPubkey: string;\n bitcoinNetworkFee: bigint;\n}\n\nexport interface IReleaseRequestDetails extends IReleaseRequest {\n dueFrame: number;\n vaultId: number;\n redemptionAmount: bigint;\n}\n\nexport interface IBitcoinLock {\n utxoId: number;\n p2wshScriptHashHex: string;\n vaultId: number;\n lockedTargetPrice: bigint;\n liquidityPromised: bigint;\n ownerAccount: string;\n satoshis: bigint;\n utxoSatoshis?: bigint;\n vaultPubkey: string;\n securityFees: bigint;\n vaultClaimPubkey: string;\n ownerPubkey: string;\n vaultXpubSources: {\n parentFingerprint: Uint8Array;\n cosignHdIndex: number;\n claimHdIndex: number;\n };\n vaultClaimHeight: number;\n openClaimHeight: number;\n createdAtHeight: number;\n isFunded: boolean;\n createdAtArgonBlock: number;\n fundHoldExtensionsByBitcoinExpirationHeight: Record<number, bigint>;\n}\n","import type { ArgonClient } from './index';\nimport { FIXED_U128_DECIMALS, fromFixedNumber } from './convert';\nimport { MICROGONS_PER_ARGON } from './utils';\nimport BigNumber from 'bignumber.js';\nimport { ApiDecoration } from '@polkadot/api/types';\n\nconst SATS_PER_BTC = 100_000_000n;\n\nexport class PriceIndex {\n btcUsdPrice?: BigNumber;\n argonotUsdPrice?: BigNumber;\n argonUsdPrice?: BigNumber;\n argonUsdTargetPrice?: BigNumber;\n argonTimeWeightedAverageLiquidity?: BigNumber;\n lastUpdatedTick?: number;\n\n async load(client: ArgonClient | ApiDecoration<'promise'>): Promise<this> {\n const current = await client.query.priceIndex.current();\n if (!current.isSome) {\n this.argonUsdPrice = undefined;\n this.argonotUsdPrice = undefined;\n this.btcUsdPrice = undefined;\n this.argonUsdTargetPrice = undefined;\n this.argonTimeWeightedAverageLiquidity = undefined;\n this.lastUpdatedTick = undefined;\n return this;\n }\n const value = current.unwrap();\n\n this.btcUsdPrice = fromFixedNumber(value.btcUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonotUsdPrice = fromFixedNumber(value.argonotUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdPrice = fromFixedNumber(value.argonUsdPrice.toBigInt(), FIXED_U128_DECIMALS);\n this.argonUsdTargetPrice = fromFixedNumber(\n value.argonUsdTargetPrice.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.argonTimeWeightedAverageLiquidity = fromFixedNumber(\n value.argonTimeWeightedAverageLiquidity.toBigInt(),\n FIXED_U128_DECIMALS,\n );\n this.lastUpdatedTick = value.tick.toNumber();\n return this;\n }\n\n getSatoshiPriceInMarketMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents.multipliedBy(MICROGONS_PER_ARGON).dividedBy(this.argonUsdPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n getSatoshiPriceInTargetMicrogons(satoshis: bigint | number): bigint {\n if (this.btcUsdPrice === undefined || this.argonUsdTargetPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n\n const satoshiCents = this.btcUsdPrice.multipliedBy(satoshis).dividedBy(SATS_PER_BTC);\n\n const microgons = satoshiCents\n .multipliedBy(MICROGONS_PER_ARGON)\n .dividedBy(this.argonUsdTargetPrice);\n return BigInt(microgons.integerValue(BigNumber.ROUND_DOWN).toString());\n }\n\n get rValue(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n return this.argonUsdPrice.div(this.argonUsdTargetPrice);\n }\n\n get argonCpi(): BigNumber {\n if (this.argonUsdTargetPrice === undefined || this.argonUsdPrice === undefined) {\n throw new Error('PriceIndex not loaded');\n }\n const ratio = this.argonUsdTargetPrice.div(this.argonUsdPrice);\n return ratio.minus(1);\n }\n}\n","import type { Abi, Hex } from 'viem';\nimport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonTokenArtifact as rawArgonTokenArtifact,\n argonotTokenAbi,\n argonotTokenArtifact as rawArgonotTokenArtifact,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayMintingAuthorization as rawHashMintingGatewayMintingAuthorization,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n hashMintingGatewayTransferOutOfArgonRequest as rawHashMintingGatewayTransferOutOfArgonRequest,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n mintingGatewayArtifact as rawMintingGatewayArtifact,\n proxyAdminAbi,\n proxyAdminArtifact as rawProxyAdminArtifact,\n transparentUpgradeableProxyAbi,\n transparentUpgradeableProxyArtifact as rawTransparentUpgradeableProxyArtifact,\n} from '@argonprotocol/ethereum-contracts';\n\nexport type * from '@argonprotocol/ethereum-contracts';\n\nexport type EvmContractArtifact = {\n abi: Abi;\n bytecode: Hex;\n};\n\nexport const argonTokenArtifact = rawArgonTokenArtifact as EvmContractArtifact;\nexport const argonotTokenArtifact = rawArgonotTokenArtifact as EvmContractArtifact;\nexport const mintingGatewayArtifact = rawMintingGatewayArtifact as EvmContractArtifact;\nexport const proxyAdminArtifact = rawProxyAdminArtifact as EvmContractArtifact;\nexport const transparentUpgradeableProxyArtifact =\n rawTransparentUpgradeableProxyArtifact as EvmContractArtifact;\n\nexport type MintingGatewayTransferOutOfArgonRequest = Parameters<\n typeof rawHashMintingGatewayTransferOutOfArgonRequest\n>[0];\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n) {\n return rawHashMintingGatewayTransferOutOfArgonRequest(request);\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n gateway: Parameters<typeof rawHashMintingGatewayMintingAuthorization>[0],\n authorization: Omit<\n Parameters<typeof rawHashMintingGatewayMintingAuthorization>[1],\n 'request'\n > & {\n request: MintingGatewayTransferOutOfArgonRequest;\n },\n) {\n return rawHashMintingGatewayMintingAuthorization(gateway, authorization);\n}\n\nexport {\n ArgonTokenEvents,\n ArgonotTokenEvents,\n CanonicalMintableBurnableERC20Events,\n ICanonicalTokenEvents,\n MINTING_GATEWAY_RUNTIME_DECIMALS,\n MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE,\n MINTING_GATEWAY_TOKEN_DECIMALS,\n MINTING_GATEWAY_UPDATE_KINDS,\n MintingGatewayEvents,\n ProxyAdminEvents,\n TransparentUpgradeableProxyEvents,\n argonTokenAbi,\n argonotTokenAbi,\n canonicalMintableBurnableErc20Abi,\n encodeMintingGatewayCouncilSnapshot,\n encodeMintingGatewayGlobalIssuanceCouncilRotateTarget,\n encodeMintingGatewayMintingAuthorityActivationTarget,\n encodeMintingGatewayMintingAuthorityDeactivateTarget,\n hashMintingGatewayActivateMintingAuthority,\n hashMintingGatewayActivateMintingAuthorityApproval,\n hashMintingGatewayGatewayUpdateApproval,\n hashMintingGatewayGlobalIssuanceCouncil,\n hashMintingGatewayMintingAuthority,\n hashMintingGatewayMintingAuthorityDeactivation,\n hashMintingGatewayRotateGlobalIssuanceCouncil,\n hashMintingGatewayRotateGlobalIssuanceCouncilApproval,\n iCanonicalTokenAbi,\n mintingGatewayAbi,\n proxyAdminAbi,\n transparentUpgradeableProxyAbi,\n};\n","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonToken\",\n \"sourceName\": \"contracts/ArgonToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b506040516200151d3803806200151d833981016040819052620000349162000246565b6040518060400160405280600581526020016420b933b7b760d91b8152506040518060400160405280600481526020016320a923a760e11b815250828280604051806040016040528060018152602001603160f81b815250858581600390816200009f919062000313565b506004620000ae828262000313565b50620000c091508390506005620001cc565b61012052620000d1816006620001cc565b61014052815160208084019190912060e052815190820120610100524660a0526200015e60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018757506001600160a01b0381163b155b15620001b557604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000451915050565b5f602083511015620001eb57620001e38362000204565b9050620001fe565b81620001f8848262000313565b5060ff90505b92915050565b5f80829050601f8151111562000231578260405163305a27a960e01b8152600401620001ac9190620003df565b80516200023e826200042d565b179392505050565b5f6020828403121562000257575f80fd5b81516001600160a01b03811681146200026e575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200029e57607f821691505b602082108103620002bd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200030e57805f5260205f20601f840160051c81016020851015620002ea5750805b601f840160051c820191505b818110156200030b575f8155600101620002f6565b50505b505050565b81516001600160401b038111156200032f576200032f62000275565b620003478162000340845462000289565b84620002c3565b602080601f8311600181146200037d575f8415620003655750858301515b5f19600386901b1c1916600185901b178555620003d7565b5f85815260208120601f198616915b82811015620003ad578886015182559484019460019091019084016200038c565b5085821015620003cb57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200040d57858101830151858201604001528201620003ef565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002bd575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bb5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea26469706673582212206e9d018754cb5d550223464c63359b0418ad130854c3f81a6691b076de1bcab964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ArgonotToken\",\n \"sourceName\": \"contracts/ArgonotToken.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"allowance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientAllowance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"balance\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"needed\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC20InsufficientBalance\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"approver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidApprover\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidReceiver\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"sender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC20InvalidSpender\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ERC2612ExpiredSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signer\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC2612InvalidSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentNonce\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidAccountNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"gateway\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidShortString\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OnlyGateway\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"str\",\n \"type\": \"string\"\n }\n ],\n \"name\": \"StringTooLong\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Approval\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [],\n \"name\": \"EIP712DomainChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Transfer\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"DOMAIN_SEPARATOR\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"allowance\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"approve\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"burnFrom\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"decimals\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"eip712Domain\",\n \"outputs\": [\n {\n \"internalType\": \"bytes1\",\n \"name\": \"fields\",\n \"type\": \"bytes1\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"string\",\n \"name\": \"version\",\n \"type\": \"string\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"chainId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"verifyingContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"salt\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"extensions\",\n \"type\": \"uint256[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gateway\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"mint\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"name\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"nonces\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"permit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"symbol\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"totalSupply\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transfer\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"to\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"value\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"transferFrom\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x61018060405234801562000011575f80fd5b50604051620015213803806200152183398101604081905262000034916200024a565b60405180604001604052806007815260200166105c99dbdb9bdd60ca1b81525060405180604001604052806006815260200165105491d393d560d21b815250828280604051806040016040528060018152602001603160f81b81525085858160039081620000a3919062000317565b506004620000b2828262000317565b50620000c491508390506005620001d0565b61012052620000d5816006620001d0565b61014052815160208084019190912060e052815190820120610100524660a0526200016260e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b03811615806200018b57506001600160a01b0381163b155b15620001b957604051628ecbc360e51b81526001600160a01b03821660048201526024015b60405180910390fd5b6001600160a01b0316610160525062000455915050565b5f602083511015620001ef57620001e78362000208565b905062000202565b81620001fc848262000317565b5060ff90505b92915050565b5f80829050601f8151111562000235578260405163305a27a960e01b8152600401620001b09190620003e3565b8051620002428262000431565b179392505050565b5f602082840312156200025b575f80fd5b81516001600160a01b038116811462000272575f80fd5b9392505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002a257607f821691505b602082108103620002c157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200031257805f5260205f20601f840160051c81016020851015620002ee5750805b601f840160051c820191505b818110156200030f575f8155600101620002fa565b50505b505050565b81516001600160401b0381111562000333576200033362000279565b6200034b816200034484546200028d565b84620002c7565b602080601f83116001811462000381575f8415620003695750858301515b5f19600386901b1c1916600185901b178555620003db565b5f85815260208120601f198616915b82811015620003b15788860151825594840194600190910190840162000390565b5085821015620003cf57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f602080835283518060208501525f5b818110156200041157858101830151858201604001528201620003f3565b505f604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c1575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051611062620004bf5f395f81816101450152818161038401526103e201525f61089801525f61086b01525f6107ac01525f61078401525f6106df01525f61070901525f61073301526110625ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c806370a082311161009357806395d89b411161006357806395d89b4114610239578063a9059cbb14610241578063d505accf14610254578063dd62ed3e14610267575f80fd5b806370a08231146101d057806379cc6790146101f85780637ecebe001461020b57806384b0196e1461021e575f80fd5b806323b872dd116100ce57806323b872dd14610191578063313ce567146101a45780633644e515146101b357806340c10f19146101bb575f80fd5b806306fdde03146100ff578063095ea7b31461011d578063116191b61461014057806318160ddd1461017f575b5f80fd5b61010761029f565b6040516101149190610dde565b60405180910390f35b61013061012b366004610e12565b61032f565b6040519015158152602001610114565b6101677f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061019f366004610e3a565b610348565b60405160128152602001610114565b61018361036b565b6101ce6101c9366004610e12565b610379565b005b6101836101de366004610e73565b6001600160a01b03165f9081526020819052604090205490565b6101ce610206366004610e12565b6103d7565b610183610219366004610e73565b610437565b610226610454565b6040516101149796959493929190610e8c565b610107610496565b61013061024f366004610e12565b6104a5565b6101ce610262366004610f23565b6104b2565b610183610275366004610f90565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6060600380546102ae90610fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546102da90610fc1565b80156103255780601f106102fc57610100808354040283529160200191610325565b820191905f5260205f20905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b5f3361033c8185856105e8565b60019150505b92915050565b5f336103558582856105fa565b610360858585610676565b506001949350505050565b5f6103746106d3565b905090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103c957604051634ca65edb60e11b81523360048201526024015b60405180910390fd5b6103d382826107fc565b5050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461042257604051634ca65edb60e11b81523360048201526024016103c0565b61042d8233836105fa565b6103d38282610830565b6001600160a01b0381165f90815260076020526040812054610342565b5f6060805f805f6060610465610864565b61046d610891565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6060600480546102ae90610fc1565b5f3361033c818585610676565b834211156104d65760405163313c898160e11b8152600481018590526024016103c0565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886105218c6001600160a01b03165f90815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f61057b826108be565b90505f61058a828787876108ea565b9050896001600160a01b0316816001600160a01b0316146105d1576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016103c0565b6105dc8a8a8a6105e8565b50505050505050505050565b6105f58383836001610916565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811015610670578181101561066257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103c0565b61067084848484035f610916565b50505050565b6001600160a01b03831661069f57604051634b637e8f60e11b81525f60048201526024016103c0565b6001600160a01b0382166106c85760405163ec442f0560e01b81525f60048201526024016103c0565b6105f58383836109e8565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561072b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561075557507f000000000000000000000000000000000000000000000000000000000000000090565b610374604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166108255760405163ec442f0560e01b81525f60048201526024016103c0565b6103d35f83836109e8565b6001600160a01b03821661085957604051634b637e8f60e11b81525f60048201526024016103c0565b6103d3825f836109e8565b60606103747f00000000000000000000000000000000000000000000000000000000000000006005610b0e565b60606103747f00000000000000000000000000000000000000000000000000000000000000006006610b0e565b5f6103426108ca6106d3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f806108fa88888888610bb7565b92509250925061090a8282610c7f565b50909695505050505050565b6001600160a01b03841661093f5760405163e602df0560e01b81525f60048201526024016103c0565b6001600160a01b03831661096857604051634a1406b160e11b81525f60048201526024016103c0565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561067057826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109da91815260200190565b60405180910390a350505050565b6001600160a01b038316610a12578060025f828254610a079190610ff9565b90915550610a829050565b6001600160a01b0383165f9081526020819052604090205481811015610a645760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103c0565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216610a9e57600280548290039055610abc565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610b0191815260200190565b60405180910390a3505050565b606060ff8314610b2857610b2183610d37565b9050610342565b818054610b3490610fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6090610fc1565b8015610bab5780601f10610b8257610100808354040283529160200191610bab565b820191905f5260205f20905b815481529060010190602001808311610b8e57829003601f168201915b50505050509050610342565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610bf057505f91506003905082610c75565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610c41573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116610c6c57505f925060019150829050610c75565b92505f91508190505b9450945094915050565b5f826003811115610c9257610c92611018565b03610c9b575050565b6001826003811115610caf57610caf611018565b03610ccd5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610ce157610ce1611018565b03610d025760405163fce698f760e01b8152600481018290526024016103c0565b6003826003811115610d1657610d16611018565b036103d3576040516335e2f38360e21b8152600481018290526024016103c0565b60605f610d4383610d74565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561034257604051632cd44ac360e21b815260040160405180910390fd5b5f81518084525f5b81811015610dbf57602081850181015186830182015201610da3565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610df06020830184610d9b565b9392505050565b80356001600160a01b0381168114610e0d575f80fd5b919050565b5f8060408385031215610e23575f80fd5b610e2c83610df7565b946020939093013593505050565b5f805f60608486031215610e4c575f80fd5b610e5584610df7565b9250610e6360208501610df7565b9150604084013590509250925092565b5f60208284031215610e83575f80fd5b610df082610df7565b60ff60f81b881681525f602060e06020840152610eac60e084018a610d9b565b8381036040850152610ebe818a610d9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b81811015610f1157835183529284019291840191600101610ef5565b50909c9b505050505050505050505050565b5f805f805f805f60e0888a031215610f39575f80fd5b610f4288610df7565b9650610f5060208901610df7565b95506040880135945060608801359350608088013560ff81168114610f73575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610fa1575f80fd5b610faa83610df7565b9150610fb860208401610df7565b90509250929050565b600181811c90821680610fd557607f821691505b602082108103610ff357634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561034257634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52602160045260245ffdfea2646970667358221220c62571b244292ccda84ab1b2953222061893d87e6d315e3029f315e76ebe035d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"6252\": [\n {\n \"length\": 32,\n \"start\": 1843\n }\n ],\n \"6254\": [\n {\n \"length\": 32,\n \"start\": 1801\n }\n ],\n \"6256\": [\n {\n \"length\": 32,\n \"start\": 1759\n }\n ],\n \"6258\": [\n {\n \"length\": 32,\n \"start\": 1924\n }\n ],\n \"6260\": [\n {\n \"length\": 32,\n \"start\": 1964\n }\n ],\n \"6263\": [\n {\n \"length\": 32,\n \"start\": 2155\n }\n ],\n \"6266\": [\n {\n \"length\": 32,\n \"start\": 2200\n }\n ],\n \"10253\": [\n {\n \"length\": 32,\n \"start\": 325\n },\n {\n \"length\": 32,\n \"start\": 900\n },\n {\n \"length\": 32,\n \"start\": 994\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ArgonotToken.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"MintingGateway\",\n \"sourceName\": \"contracts/MintingGateway.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"argonTokenAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"argonotTokenAddress\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"ArrayLengthMismatch\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ECDSAInvalidSignature\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"length\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureLength\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"ECDSAInvalidSignatureS\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilNotBootstrapped\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"GlobalIssuanceCouncilQuorumNotMet\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"authorized\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"required\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InsufficientAuthorizedCollateral\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidChainId\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"expected\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"provided\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"InvalidCurrentCouncilSnapshot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidGlobalIssuanceCouncilMember\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidInitialization\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidMicrogonCollateralForArgonotPayout\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthority\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"expectedSigner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recoveredSigner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"InvalidMintingAuthorityDeactivationSigner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"expected\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"provided\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"InvalidQueueNonce\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"expected\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"provided\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"InvalidSignatureCount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidSignatureOrder\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"maxRate\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"providedRate\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"InvalidTransferOutRate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n }\n ],\n \"name\": \"InvalidUpdateKind\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"LatestGatewayUpdateCannotDeactivate\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MigrationAlreadyCompleted\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityAlreadyActive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MintingAuthorityTransferCapacityExceeded\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"caller\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"NotGuardianOrOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotInitializing\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"amount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"RuntimeAmountOverflow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"TransferOutOfArgonAlreadyFinalized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"currentBlock\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"TransferOutOfArgonNotExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"UnsupportedToken\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAdminSafe\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroAmount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroGuardian\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroMicrogonsPerArgonot\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"index\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ZeroRecipient\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ZeroSigningKey\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilBootstrapped\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"previousCouncilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilForceUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"GlobalIssuanceCouncilRotated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousGuardian\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newGuardian\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"GuardianUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint64\",\n \"name\": \"version\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"Initialized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonTotalAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotRecipientCount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"argonotTotalAmount\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"MigrationCompleted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"coactivationCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint32\",\n \"name\": \"sharedSignatureCount\",\n \"type\": \"uint32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityActivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"MintingAuthorityDeactivated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonCanceled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.MintingAuthorityCollateral[]\",\n \"name\": \"mintingCollateral\",\n \"type\": \"tuple[]\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferOutOfArgonFinalized\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"from\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"gatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonApprovalsNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonCirculation\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"argonotCirculation\",\n \"type\": \"uint128\"\n }\n ],\n \"indexed\": false,\n \"internalType\": \"struct MintingGateway.GatewayActivityState\",\n \"name\": \"gatewayState\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"TransferToArgonStarted\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"RUNTIME_TO_ERC20_SCALE\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"TOKEN_DECIMALS\",\n \"outputs\": [\n {\n \"internalType\": \"uint8\",\n \"name\": \"\",\n \"type\": \"uint8\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"locatorIndex\",\n \"type\": \"uint64\"\n }\n ],\n \"name\": \"activityBlockLocators\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"blockNumber\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"startGatewayActivityNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"endGatewayActivityNonce\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"currentCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"queueNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"enum MintingGateway.GatewayUpdateKind\",\n \"name\": \"kind\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"payload\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes[]\",\n \"name\": \"signatures\",\n \"type\": \"bytes[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.GatewayUpdate[]\",\n \"name\": \"updates\",\n \"type\": \"tuple[]\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"relayerArgonAccountId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"applyGatewayUpdates\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsHash\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonApprovalsNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotCirculation\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"argonotToken\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"cancelTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"argonTransferNonce\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"chainId\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonsPerArgonot\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"recipient\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint64\",\n \"name\": \"validUntilBlock\",\n \"type\": \"uint64\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"mintingAuthorityTip\",\n \"type\": \"uint128\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonRequest\",\n \"name\": \"request\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"signature\",\n \"type\": \"bytes\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MintingAuthorization[]\",\n \"name\": \"authorizations\",\n \"type\": \"tuple[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.TransferOutOfArgonProof\",\n \"name\": \"proof\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"finalizeTransferOutOfArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"transferId\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"finalizedTransferOutOfArgonIds\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"isFinalized\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"signers\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"weights\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.CouncilSnapshot\",\n \"name\": \"nextCouncil\",\n \"type\": \"tuple\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"nextMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"forceUpdateActiveCouncil\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"gatewayActivityNonce\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"globalIssuanceCouncil\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"totalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"memberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"epochMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"guardian\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"adminSafe\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"councilHash\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilMemberCount\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"councilTotalWeight\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"initialMicrogonsPerArgonot\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"initialize\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"latestActivityBlockLocatorIndex\",\n \"outputs\": [\n {\n \"internalType\": \"uint64\",\n \"name\": \"\",\n \"type\": \"uint64\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"maxTransferOutMicrogonsPerArgonot\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonMigration\",\n \"type\": \"tuple\"\n },\n {\n \"components\": [\n {\n \"internalType\": \"address[]\",\n \"name\": \"recipients\",\n \"type\": \"address[]\"\n },\n {\n \"internalType\": \"uint256[]\",\n \"name\": \"amounts\",\n \"type\": \"uint256[]\"\n }\n ],\n \"internalType\": \"struct MintingGateway.MigrationAssetDistribution\",\n \"name\": \"argonotMigration\",\n \"type\": \"tuple\"\n }\n ],\n \"name\": \"migrate\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"migrationCompleted\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"signingKey\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"mintingAuthorityCollateralRemaining\",\n \"outputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"microgonCollateral\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"micronotCollateral\",\n \"type\": \"uint128\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"guardianAddress\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setGuardian\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"argonAccountId\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"deadline\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint8\",\n \"name\": \"v\",\n \"type\": \"uint8\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"r\",\n \"type\": \"bytes32\"\n },\n {\n \"internalType\": \"bytes32\",\n \"name\": \"s\",\n \"type\": \"bytes32\"\n }\n ],\n \"name\": \"startTransferToArgon\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint128\",\n \"name\": \"amount\",\n \"type\": \"uint128\"\n }\n ],\n \"name\": \"toTokenAmount\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x60c060405234801562000010575f80fd5b506040516200458638038062004586833981016040819052620000339162000128565b6001600160a01b03808316608052811660a0526200005062000058565b50506200015e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000a95760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620001095780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b80516001600160a01b038116811462000123575f80fd5b919050565b5f80604083850312156200013a575f80fd5b62000145836200010c565b915062000155602084016200010c565b90509250929050565b60805160a0516143c7620001bf5f395f81816102df015281816112520152818161131401528181611c9f0152611d3101525f818161042901528181610b6001528181610fad0152818161120f01528181611c6e0152611cf401526143c75ff3fe608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405234801561000f575f80fd5b50600436106101f2575f3560e01c80636e2c7769116101145780638da5cb5b116100a9578063c017c90211610079578063c017c902146104d2578063d68d6311146104e5578063e52580a6146104f8578063ecec10a414610560578063f2fde38b14610573575f80fd5b80638da5cb5b14610466578063905d031f1461046e578063a3eb8961146104c1578063beabb591146104ca575f80fd5b80637c9afa67116100e45780637c9afa671461040257806383a4d591146104245780638456cb591461044b5780638a0dac4a14610453575f80fd5b80636e2c7769146103cc5780636e888c46146103df578063715018a6146103f257806378d350e0146103fa575f80fd5b80632ef29f3b1161018a578063452a93201161015a578063452a93201461038157806359b23872146103935780635b7f415c1461039b5780635c975abb146103b5575f80fd5b80632ef29f3b1461032157806331677980146103425780633f4ba83a14610366578063422ad8f61461036e575f80fd5b80631a5d93fd116101c55780631a5d93fd146102615780631c1eeae1146102a95780631e07f89e146102da5780632ceeddf514610319575f80fd5b8063014c72f6146101f657806309af0e3c1461020b578063138f87811461023b57806318a8f1f01461024e575b5f80fd5b610209610204366004613745565b610586565b005b60085461021e906001600160801b031681565b6040516001600160801b0390911681526020015b60405180910390f35b6102096102493660046137a0565b6106bd565b61020961025c366004613809565b610e22565b600454600554600654600754610280939291906001600160801b031684565b604080519485526020850193909352918301526001600160801b03166060820152608001610232565b5f546102c290600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610232565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610232565b61021e610fa7565b61033461032f366004613876565b611035565b604051908152602001610232565b60035461035690600160401b900460ff1681565b6040519015158152602001610232565b610209611066565b61020961037c36600461388f565b611078565b5f54610301906001600160a01b031681565b6103346111b4565b6103a3601281565b60405160ff9091168152602001610232565b5f805160206143728339815191525460ff16610356565b6001546102c2906001600160401b031681565b6102096103ed3660046138aa565b6111ce565b6102096112fd565b61021e61130e565b610356610410366004613909565b600a6020525f908152604090205460ff1681565b6103017f000000000000000000000000000000000000000000000000000000000000000081565b61020961136e565b610209610461366004613920565b6113c9565b610301611447565b6104a161047c366004613920565b60096020525f90815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610232565b61033460025481565b6103a3600681565b6102096104e0366004613939565b611475565b6003546102c2906001600160401b031681565b610536610506366004613994565b600b6020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b0394851681529284166020840152921691810191909152606001610232565b61020961056e3660046139ba565b61168f565b610209610581366004613920565b6119c2565b61058e6119ff565b806001600160801b03165f036105b757604051632440a7dd60e01b815260040160405180910390fd5b5f808061063d6105c78680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250610605925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250899250611a31915050565b6040805160808101825260045481526005546020820152600654918101919091526007546001600160801b03166060820152929550909350915061068384848488611b4f565b8381604001517f33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d915360405160405180910390a3505050505050565b6106c5611ba0565b6106ce82611bd0565b6106e66106e160e0840160c08501613920565b611c3a565b6106f7610100830160e08401613876565b6001600160801b03165f0361071f57604051631f2a200560e01b815260040160405180910390fd5b61072f60c0830160a08401613994565b6001600160401b0316431115610780574361075060c0840160a08501613994565b604051635728c7dd60e11b815260048101929092526001600160401b031660248201526044015b60405180910390fd5b5f61078a83611d8f565b905061079581611e98565b6107a56080840160608501613876565b6001600160801b03165f036107cd57604051632440a7dd60e01b815260040160405180910390fd5b6008546001600160801b0316806107ea6080860160608701613876565b6001600160801b03161115610836578061080a6080860160608701613876565b6040516343082d3360e01b81526001600160801b03928316600482015291166024820152604401610777565b5f8080806108448780613a51565b90506001600160401b0381111561085d5761085d613a9d565b6040519080825280602002602001820160405280156108a657816020015b604080516060810182525f80825260208083018290529282015282525f1990920191018161087b5790505b5090505f5b6108b58880613a51565b9050811015610b5557366108c98980613a51565b838181106108d9576108d9613ab1565b90506020028101906108eb9190613ac5565b90505f61093161091f61091a8d6109056020870187613876565b6109156040880160208901613876565b611eca565b611f57565b61092c6040850185613ae3565b611f89565b9050846001600160a01b0316816001600160a01b031611610965576040516309cf9e4960e11b815260040160405180910390fd5b6001600160a01b0381165f9081526009602090815260409091209061098c90840184613876565b81546001600160801b03918216911610806109cc57506109b26040840160208501613876565b81546001600160801b03918216600160801b909104909116105b156109f5576040516364fc3cd160e11b81526001600160a01b0383166004820152602401610777565b610a026020840184613876565b815482905f90610a1c9084906001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550826020016020810190610a539190613876565b81548290601090610a75908490600160801b90046001600160801b0316613b39565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550825f016020810190610aab9190613876565b610ab59089613b60565b9750610ac76040840160208501613876565b610ad19088613b60565b96506040518060600160405280836001600160a01b03168152602001845f016020810190610aff9190613876565b6001600160801b03168152602001846020016020810190610b209190613876565b6001600160801b0316815250858581518110610b3e57610b3e613ab1565b6020908102919091010152509350506001016108ab565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610b9060e08a0160c08b01613920565b6001600160a01b031603610c5e575f610bab6006600a613c60565b610bbb60808b0160608c01613876565b6001600160801b0316856001600160801b0316610bd89190613c6e565b610be29190613c85565b90505f610bf8826001600160801b038816613ca4565b9050610c0b6101008b0160e08c01613876565b6001600160801b0316811015610c575780610c2d6101008c0160e08d01613876565b60405162f9825560e61b815260048101929092526001600160801b03166024820152604401610777565b5050610ced565b6001600160801b03841615610c8657604051630994a0f360e11b815260040160405180910390fd5b610c97610100890160e08a01613876565b6001600160801b0316836001600160801b03161015610ced5782610cc26101008a0160e08b01613876565b60405162f9825560e61b81526001600160801b03928316600482015291166024820152604401610777565b610d0b865f908152600a60205260409020805460ff19166001179055565b610d1b60e0890160c08a01613920565b6001600160a01b03166340c10f19610d3960a08b0160808c01613920565b610d4d61032f6101008d0160e08e01613876565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044015f604051808303815f87803b158015610d90575f80fd5b505af1158015610da2573d5f803e3d5ffd5b505050505f610daf611fb3565b90507f64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d0687610de360e08c0160c08d01613920565b610df46101008d0160e08e01613876565b85610dfe86612003565b604051610e0f959493929190613cf9565b60405180910390a1505050505050505050565b610e2a611ba0565b610e3387611c3a565b856001600160801b03165f03610e5c57604051631f2a200560e01b815260040160405180910390fd5b5f610e6687611035565b60405163d505accf60e01b8152336004820152306024820152604481018290526064810187905260ff8616608482015260a4810185905260c481018490529091506001600160a01b0389169063d505accf9060e4015f604051808303815f87803b158015610ed2575f80fd5b505af1158015610ee4573d5f803e3d5ffd5b505060405163079cc67960e41b8152336004820152602481018490526001600160a01b038b1692506379cc679091506044015f604051808303815f87803b158015610f2d575f80fd5b505af1158015610f3f573d5f803e3d5ffd5b505050505f610f4c611fb3565b90506001600160a01b038916337f3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d938a8a610f8586612003565b604051610f9493929190613d91565b60405180910390a3505050505050505050565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102b9190613db5565b612078565b905090565b5f61104260066012613dcc565b61104d90600a613c60565b611060906001600160801b038416613c6e565b92915050565b61106e6119ff565b6110766120c8565b565b611080611ba0565b61108981611bd0565b61109c6106e160e0830160c08401613920565b6110ad610100820160e08301613876565b6001600160801b03165f036110d557604051631f2a200560e01b815260040160405180910390fd5b6110e560c0820160a08301613994565b6001600160401b03164311611130574361110560c0830160a08401613994565b6040516374276dcf60e11b815260048101929092526001600160401b03166024820152604401610777565b5f61113a82611d8f565b905061114581611e98565b611163815f908152600a60205260409020805460ff19166001179055565b5f61116c611fb3565b90507f3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e4528261119983612003565b6040516111a7929190613de5565b60405180910390a1505050565b6111c060066012613dcc565b6111cb90600a613c60565b81565b6111d66119ff565b6111de611ba0565b600354600160401b900460ff161561120957604051633dbff3b560e01b815260040160405180910390fd5b5f61124a7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6112456020880188613a51565b612127565b90505f61127b7f00000000000000000000000000000000000000000000000000000000000000006112388580613a51565b6003805460ff60401b1916600160401b17905590507fc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d06456112bb8580613a51565b9050836112c88680613a51565b6040516112ef94939250869093845260208401929092526040830152606082015260800190565b60405180910390a150505050565b6113056119ff565b6110765f612266565b5f6110307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611007573d5f803e3d5ffd5b5f546001600160a01b031633148015906113a1575061138b611447565b6001600160a01b0316336001600160a01b031614155b156113c15760405163354de03160e21b8152336004820152602401610777565b6110766122d6565b6113d16119ff565b6001600160a01b0381166113f85760405163a91f6a8960e01b815260040160405180910390fd5b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad9099190a35050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f61147e61231e565b805490915060ff600160401b82041615906001600160401b03165f811580156114a45750825b90505f826001600160401b031660011480156114bf5750303b155b9050811580156114cd575080155b156114eb5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561151557845460ff60401b1916600160401b1785555b6001600160a01b038b1661153c576040516314030c0360e11b815260040160405180910390fd5b6001600160a01b038a166115635760405163a91f6a8960e01b815260040160405180910390fd5b88158061156e575087155b80611577575086155b156115975760405163665c282b60e01b81525f6004820152602401610777565b856001600160801b03165f036115c057604051632440a7dd60e01b815260040160405180910390fd5b6115c98b612346565b6115d1612357565b5f80546001600160a01b0319166001600160a01b038c161790556115f789888a89611b4f565b600880546001600160801b0319166001600160801b03881617905560405189907fac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1905f90a2831561168257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b611697611ba0565b81158015906116f55750600283836116b0600182613e0d565b8181106116bf576116bf613ab1565b90506020028101906116d19190613e20565b6116e2906040810190602001613e34565b60028111156116f3576116f3613df9565b145b156117135760405163bf3d210b60e01b815260040160405180910390fd5b60065461173357604051632c1dfd4f60e11b815260040160405180910390fd5b5f61173d8561235f565b6002549091505f846001600160401b0381111561175c5761175c613a9d565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b5090505f856001600160401b038111156117a1576117a1613a9d565b6040519080825280602002602001820160405280156117ca578160200160208202803683370190505b5090505f6117da88888585612524565b90505f5b878110156119b657368989838181106117f9576117f9613ab1565b905060200281019061180b9190613e20565b600180549192505f91611829916001600160401b0390911690613e52565b90506001600160401b0381166118426020840184613994565b6001600160401b03161461188a578061185e6020840184613994565b604051635efa452960e11b81526001600160401b03928316600482015291166024820152604401610777565b600261189c6040840160208501613e34565b60028111156118ad576118ad613df9565b036118c4576118bd82888b61278b565b96506119ac565b5f6118d56040840160208501613e34565b60028111156118e6576118e6613df9565b03611901576118f78289898c612974565b90985096506119ac565b60016119136040840160208501613e34565b600281111561192457611924613df9565b0361196c576118bd8289898787148a888151811061194457611944613ab1565b60200260200101518a898151811061195e5761195e613ab1565b60200260200101518f612b61565b61197c6040830160208401613e34565b600281111561198d5761198d613df9565b60405163b99607f960e01b815260ff9091166004820152602401610777565b50506001016117de565b50505050505050505050565b6119ca6119ff565b6001600160a01b0381166119f357604051631e4fbdf760e01b81525f6004820152602401610777565b6119fc81612266565b50565b33611a08611447565b6001600160a01b0316146110765760405163118cdaa760e01b8152336004820152602401610777565b5f805f85515f03611a575760405163665c282b60e01b81525f6004820152602401610777565b8451865114611a795760405163512509d360e11b815260040160405180910390fd5b5f805b8751811015611b33575f888281518110611a9857611a98613ab1565b602002602001015190505f888381518110611ab557611ab5613ab1565b602002602001015190505f6001600160a01b0316826001600160a01b03161480611add575080155b80611afa5750836001600160a01b0316826001600160a01b031611155b15611b1b5760405163665c282b60e01b815260048101849052602401610777565b611b258187613ca4565b955090925050600101611a7c565b5086519150611b43878787612df3565b93505093509350939050565b60408051608081018252848152602081018490529081018590526001600160801b039091166060909101819052600492909255600555600691909155600780546001600160801b0319169091179055565b5f805160206143728339815191525460ff16156110765760405163d93c066560e01b815260040160405180910390fd5b466001600160401b038116611beb6060840160408501613994565b6001600160401b031614611c365780611c0a6060840160408501613994565b6040516332e3634d60e21b81526001600160401b03928316600482015291166024820152604401610777565b5050565b6001600160a01b038116611c6c57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580611cc957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316155b15611cf257604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015611d6657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b156119fc57604051635f8b555b60e11b81526001600160a01b0382166004820152602401610777565b5f8135611da26040840160208501613994565b611db26060850160408601613994565b611dc26080860160608701613876565b611dd260a0870160808801613920565b611de260c0880160a08901613994565b611df260e0890160c08a01613920565b611e036101008a0160e08b01613876565b611e156101208b016101008c01613876565b60408051602081019a909a526001600160401b03988916908a015295871660608901526001600160801b0394851660808901526001600160a01b0393841660a08901529590911660c08701521660e08501529182166101008401521661012082015261014001604051602081830303815290604052805190602001209050919050565b5f818152600a602052604090205460ff16156119fc57604051632910aca360e01b815260048101829052602401610777565b5f7f28bf99522b0d2f26a76cdeda71578156383bbae91175ca503165cfdbbd1ff34a4630611ef787611d8f565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b0380851660a0830152831660c082015260e0015b6040516020818303038152906040528051906020012090505b9392505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c91909152603c902090565b5f805f80611f98878787612e09565b925092509250611fa88282612e50565b509095945050505050565b5f8054611fd190600160a01b90046001600160401b03166001613e52565b5f805467ffffffffffffffff60a01b1916600160a01b6001600160401b03841602179055905061200081612f08565b90565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810182526001600160401b038085168252600154166020820152908101612051610fa7565b6001600160801b0316815260200161206761130e565b6001600160801b0316905292915050565b5f8061208660066012613dcc565b61209190600a613c60565b61209b9084613c85565b90506001600160801b0381111561106057604051639940a77560e01b815260048101829052602401610777565b6120d06130d1565b5f80516020614372833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b5f8382146121485760405163512509d360e11b815260040160405180910390fd5b5f5b8481101561225c575f86868381811061216557612165613ab1565b905060200201602081019061217a9190613920565b90505f85858481811061218f5761218f613ab1565b60200291909101359150506001600160a01b0382166121c457604051633bca2f5160e21b815260048101849052602401610777565b805f036121e457604051631f2a200560e01b815260040160405180910390fd5b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390528a16906340c10f19906044015f604051808303815f87803b15801561222b575f80fd5b505af115801561223d573d5f803e3d5ffd5b50505050808461224d9190613ca4565b9350505080600101905061214a565b5095945050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122de611ba0565b5f80516020614372833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833612109565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611060565b61234e613100565b6119fc81613125565b611076613100565b6123916040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f80806124226123a18680613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152506123df925050506020880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250506007546001600160801b03169150611a319050565b9250925092506004600201548314158061243e57506004548214155b8061244b57506005548114155b1561247757600654604051633b21437560e21b8152600481019190915260248101849052604401610777565b6040805160a081019091528061248d8780613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020908101906124d290880188613a51565b808060200260200160405190810160405280939291908181526020018383602002808284375f920191909152505050908252506020810194909452604084019290925260609092019190915292915050565b825f816001600160401b0381111561253e5761253e613a9d565b604051908082528060200260200182016040528015612567578160200160208202803683370190505b5090505f80865b80156125d95761257d81613e72565b9050600289898381811061259357612593613ab1565b90506020028101906125a59190613e20565b6125b6906040810190602001613e34565b60028111156125c7576125c7613df9565b146125d4578094506125d9565b61256e565b505f5b8781101561277f575f8989838181106125f7576125f7613ab1565b90506020028101906126099190613e20565b61261a906040810190602001613e34565b9050600181600281111561263057612630613df9565b0361266f5781858563ffffffff168151811061264e5761264e613ab1565b63ffffffff9092166020928302919091019091015261266c84613e87565b93505b5f81600281111561268257612682613df9565b148061268d57508582145b15612776578989838181106126a4576126a4613ab1565b90506020028101906126b69190613e20565b6126c4906060810190613a51565b6126cf915084613ea9565b925063ffffffff841615612776575f5b8463ffffffff1681101561276e575f86828151811061270057612700613ab1565b602002602001015163ffffffff169050858a828151811061272357612723613ab1565b602002602001019063ffffffff16908163ffffffff16815250508489828151811061275057612750613ab1565b63ffffffff90921660209283029190910190910152506001016126df565b505f93505f92505b506001016125dc565b50505050949350505050565b5f8061279a6040860186613ae3565b8101906127a79190613f1e565b90506127b66060860186613a51565b90506001146127f15760016127ce6060870187613a51565b604051636b01174760e11b81526004810193909352602483015250604401610777565b6128096128016020870187613994565b82518661312d565b91505f61284761281884611f57565b6128256060890189613a51565b5f81811061283557612835613ab1565b905060200281019061092c9190613ae3565b9050815f01516001600160a01b0316816001600160a01b031614612894578151604051630be4b0e160e01b81526001600160a01b0391821660048201529082166024820152604401610777565b81516001600160a01b039081165f9081526009602090815260408083208054875190951684529083209290925590916001600160801b0380821692600160801b90920416906128e5908a018a613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028690555f612914611fb3565b86519091506001600160a01b03167ff92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd84848b61294f86612003565b60405161295f9493929190613f65565b60405180910390a25050505050509392505050565b6129a66040518060a0016040528060608152602001606081526020015f80191681526020015f81526020015f81525090565b5f806129b56040880188613ae3565b8101906129c29190614028565b905080602001516001600160801b03165f036129f157604051632440a7dd60e01b815260040160405180910390fd5b5f805f612a10845f01515f0151855f0151602001518660200151611a31565b91945092509050612a43612a2760208c018c613994565b60408b015186518051602091820151918901519091908d613194565b9450612a7585612a5660608d018d613a51565b612a5f91614145565b8b5160208d015160608e015160808f01516131c9565b612a858383838760200151611b4f565b602084810151600880546001600160801b0319166001600160801b03909216919091179055612ab6908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028590555f612ae5611fb3565b90507fb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded9638489612b1384612003565b604051612b2293929190614204565b60405180910390a1506040805160a081018252855151815294516020908101519086015284019290925260608301526080820152915094509492505050565b5f80612b7060408a018a613ae3565b810190612b7d919061421f565b60408101519091506001600160a01b0316612bab5760405163611b32ab60e01b815260040160405180910390fd5b80516001600160801b0316158015612bce575060208101516001600160801b0316155b15612bfd576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b63ffffffff85161580612c14575063ffffffff8416155b15612c43576040808201519051632edcd91760e21b81526001600160a01b039091166004820152602401610777565b6040808201516001600160a01b03165f90815260096020522080546001600160801b0316151580612c8457508054600160801b90046001600160801b031615155b15612cb357604080830151905163cb96603760e01b81526001600160a01b039091166004820152602401610777565b612cdc612cc360208c018c613994565b8a60400151845f0151856020015186604001518d61320e565b92508615612cf557612cf583612a5660608d018d613a51565b60408051808201825283516001600160801b0390811682526020808601518216818401908152868501516001600160a01b03165f9081526009835294909420925193518216600160801b0293909116929092179055612d56908b018b613994565b6001805467ffffffffffffffff19166001600160401b039290921691909117905560028390555f612d85611fb3565b905082604001516001600160a01b03167fc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d845f015185602001518a8a8a612dcb88612003565b604051612ddd96959493929190614288565b60405180910390a2505050979650505050505050565b5f838383604051602001611f37939291906142c9565b5f80806041849003612e3d578435602086013560408701355f1a612e2f8982858561323c565b955095509550505050612e47565b505f915060029050825b93509350939050565b5f826003811115612e6357612e63613df9565b03612e6c575050565b6001826003811115612e8057612e80613df9565b03612e9e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612eb257612eb2613df9565b03612ed35760405163fce698f760e01b815260048101829052602401610777565b6003826003811115612ee757612ee7613df9565b03611c36576040516335e2f38360e21b815260048101829052602401610777565b60035443906001600160401b03165f03612fca576003805467ffffffffffffffff19166001908117909155604080516060810182526001600160401b03938416815293831660208086018281529286019182525f93909352600b90925292517f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf8054945192518416600160801b0267ffffffffffffffff60801b19938516600160401b026001600160801b031990961692909416919091179390931716179055565b6003546001600160401b039081165f908152600b60205260409020805490918381169116036130205780546001600160401b03909316600160801b0267ffffffffffffffff60801b199093169290921790915550565b6003545f90613039906001600160401b03166001613e52565b600380546001600160401b0392831667ffffffffffffffff19909116811790915560408051606081018252958316865295821660208087018281528789019283525f938452600b9091529690912094518554965191518316600160801b0267ffffffffffffffff60801b19928416600160401b026001600160801b031990981691909316179590951794909416939093179091555050565b5f805160206143728339815191525460ff1661107657604051638dfc202b60e01b815260040160405180910390fd5b613108613304565b61107657604051631afcd79f60e31b815260040160405180910390fd5b6119ca613100565b604080517fad7e1df8fff16b907a93b4116c7590060dfa3b9c396a8b815e8290b0dff45cba602082015246918101919091523060608201526001600160401b03841660808201526001600160a01b03831660a082015260c081018290525f9060e001611f37565b5f806131a1868686612df3565b90506131bb88885f846131b58b8b8b61331d565b88613388565b9150505b9695505050505050565b5f806131d78888888861343a565b915091506131e7828286866135ad565b6132045760405163079842ab60e41b815260040160405180910390fd5b5050505050505050565b5f613231878760016001600160a01b03871661322b8a8a8a613611565b87613388565b979650505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561327557505f915060039050826132fa565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156132c6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b0381166132f157505f9250600191508290506132fa565b92505f91508190505b9450945094915050565b5f61330d61231e565b54600160401b900460ff16919050565b5f7f82ce6440aa5dde11f3613892819b630b62342bacf93e16a292d5c8783aafa4c3463061334c878787612df3565b6040805160208101959095528401929092526001600160a01b0316606083015260808201526001600160801b03831660a082015260c001611f37565b5f7f41936771719a172aa959076ca6aafb826eaf332dd0c9e7860901c398ef42da05463089898960028111156133c0576133c0613df9565b6040805160208101979097528601949094526001600160a01b0390921660608501526001600160401b0316608084015260a083015260ff1660c082015260e0810185905261010081018490526101208101839052610140016040516020818303038152906040528051906020012090509695505050505050565b5f805f8061344788611f57565b90505f805b88518110156135a0575f613479848b848151811061346c5761346c613ab1565b602002602001015161366d565b9050846001600160a01b0316816001600160a01b0316116134ad576040516309cf9e4960e11b815260040160405180910390fd5b8851831080156134e75750806001600160a01b03168984815181106134d4576134d4613ab1565b60200260200101516001600160a01b0316105b156134fc576134f583614359565b92506134ad565b88518314806135365750806001600160a01b031689848151811061352257613522613ab1565b60200260200101516001600160a01b031614155b156135575760405163665c282b60e01b815260048101839052602401610777565b61356087614359565b965087838151811061357457613574613ab1565b6020026020010151866135879190613ca4565b955093508361359583614359565b92505060010161344c565b5050505094509492505050565b5f806135b98684613e0d565b90506135c684605a613c6e565b6135d1866064613c6e565b106135e0576001915050613609565b6002811115801561360557506135f7846050613c6e565b613602866064613c6e565b10155b9150505b949350505050565b5f7f1cd7f89e34f6154d6f8387a08ffafc689e347b8d5809913b07c58a42995dff664630613640878787613695565b6040805160208101959095528401929092526001600160a01b03166060830152608082015260a001611f37565b5f805f8061367b86866136cb565b92509250925061368b8282612e50565b5090949350505050565b604080516001600160801b0380861660208301528416918101919091526001600160a01b03821660608201525f90608001611f37565b5f805f8351604103613702576020840151604085015160608601515f1a6136f48882858561323c565b95509550955050505061370d565b505081515f91506002905b9250925092565b5f60408284031215613724575f80fd5b50919050565b80356001600160801b0381168114613740575f80fd5b919050565b5f8060408385031215613756575f80fd5b82356001600160401b0381111561376b575f80fd5b61377785828601613714565b9250506137866020840161372a565b90509250929050565b5f6101208284031215613724575f80fd5b5f8061014083850312156137b2575f80fd5b6137bc848461378f565b91506101208301356001600160401b038111156137d7575f80fd5b8301602081860312156137e8575f80fd5b809150509250929050565b80356001600160a01b0381168114613740575f80fd5b5f805f805f805f60e0888a03121561381f575f80fd5b613828886137f3565b96506138366020890161372a565b95506040880135945060608801359350608088013560ff81168114613859575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215613886575f80fd5b611f508261372a565b5f61012082840312156138a0575f80fd5b611f50838361378f565b5f80604083850312156138bb575f80fd5b82356001600160401b03808211156138d1575f80fd5b6138dd86838701613714565b935060208501359150808211156138f2575f80fd5b506138ff85828601613714565b9150509250929050565b5f60208284031215613919575f80fd5b5035919050565b5f60208284031215613930575f80fd5b611f50826137f3565b5f805f805f8060c0878903121561394e575f80fd5b613957876137f3565b9550613965602088016137f3565b945060408701359350606087013592506080870135915061398860a0880161372a565b90509295509295509295565b5f602082840312156139a4575f80fd5b81356001600160401b0381168114611f50575f80fd5b5f805f80606085870312156139cd575f80fd5b84356001600160401b03808211156139e3575f80fd5b6139ef88838901613714565b95506020870135915080821115613a04575f80fd5b818701915087601f830112613a17575f80fd5b813581811115613a25575f80fd5b8860208260051b8501011115613a39575f80fd5b95986020929092019750949560400135945092505050565b5f808335601e19843603018112613a66575f80fd5b8301803591506001600160401b03821115613a7f575f80fd5b6020019150600581901b3603821315613a96575f80fd5b9250929050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112613ad9575f80fd5b9190910192915050565b5f808335601e19843603018112613af8575f80fd5b8301803591506001600160401b03821115613b11575f80fd5b602001915036819003821315613a96575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b03828116828216039080821115613b5957613b59613b25565b5092915050565b6001600160801b03818116838216019080821115613b5957613b59613b25565b600181815b80851115613bba57815f1904821115613ba057613ba0613b25565b80851615613bad57918102915b93841c9390800290613b85565b509250929050565b5f82613bd057506001611060565b81613bdc57505f611060565b8160018114613bf25760028114613bfc57613c18565b6001915050611060565b60ff841115613c0d57613c0d613b25565b50506001821b611060565b5060208310610133831016604e8410600b8410161715613c3b575081810a611060565b613c458383613b80565b805f1904821115613c5857613c58613b25565b029392505050565b5f611f5060ff841683613bc2565b808202811582820484141761106057611060613b25565b5f82613c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561106057611060613b25565b6001600160401b038082511683528060208301511660208401525060408101516001600160801b03808216604085015280606084015116606085015250505050565b5f610100808301888452602060018060a01b03808a16602087015260406001600160801b03808b16604089015260608660608a01528596508a518087526101208a01975060208c0196505f5b81811015613d78578751805187168a52878101518516888b01528501518416858a01529782019796860196600101613d45565b5050505050505050809150506131bf6080830184613cb7565b6001600160801b03841681526020810183905260c081016136096040830184613cb7565b5f60208284031215613dc5575f80fd5b5051919050565b60ff828116828216039081111561106057611060613b25565b82815260a08101611f506020830184613cb7565b634e487b7160e01b5f52602160045260245ffd5b8181038181111561106057611060613b25565b5f8235607e19833603018112613ad9575f80fd5b5f60208284031215613e44575f80fd5b813560038110611f50575f80fd5b6001600160401b03818116838216019080821115613b5957613b59613b25565b5f81613e8057613e80613b25565b505f190190565b5f63ffffffff808316818103613e9f57613e9f613b25565b6001019392505050565b63ffffffff818116838216019080821115613b5957613b59613b25565b604080519081016001600160401b0381118282101715613ee857613ee8613a9d565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613f1657613f16613a9d565b604052919050565b5f60208284031215613f2e575f80fd5b604051602081018181106001600160401b0382111715613f5057613f50613a9d565b604052613f5c836137f3565b81529392505050565b6001600160801b038581168252841660208201526040810183905260e08101613f916060830184613cb7565b95945050505050565b5f6001600160401b03821115613fb257613fb2613a9d565b5060051b60200190565b5f82601f830112613fcb575f80fd5b81356020613fe0613fdb83613f9a565b613eee565b8083825260208201915060208460051b870101935086841115614001575f80fd5b602086015b8481101561401d5780358352918301918301614006565b509695505050505050565b5f6020808385031215614039575f80fd5b82356001600160401b038082111561404f575f80fd5b9084019060408287031215614062575f80fd5b61406a613ec6565b823582811115614078575f80fd5b830160408189031215614089575f80fd5b614091613ec6565b81358481111561409f575f80fd5b8201601f81018a136140af575f80fd5b80356140bd613fdb82613f9a565b81815260059190911b8201880190888101908c8311156140db575f80fd5b928901925b82841015614100576140f1846137f3565b825292890192908901906140e0565b84525050508186013584811115614115575f80fd5b6141218a828501613fbc565b828801525082525061413483850161372a565b848201528094505050505092915050565b5f614152613fdb84613f9a565b80848252602080830192508560051b85013681111561416f575f80fd5b855b818110156141f85780356001600160401b038082111561418f575f80fd5b90880190601f36818401126141a2575f80fd5b8235828111156141b4576141b4613a9d565b6141c5818301601f19168801613eee565b925080835236878286010111156141da575f80fd5b80878501888501375f90830187015250865250938201938201614171565b50919695505050505050565b8381526020810183905260c081016136096040830184613cb7565b5f6060828403121561422f575f80fd5b604051606081018181106001600160401b038211171561425157614251613a9d565b60405261425d8361372a565b815261426b6020840161372a565b602082015261427c604084016137f3565b60408201529392505050565b6001600160801b0387811682528616602082015263ffffffff85811660408301528416606082015260808101839052610120810161323160a0830184613cb7565b606080825284519082018190525f906020906080840190828801845b8281101561430a5781516001600160a01b0316845292840192908401906001016142e5565b505050838103828501528551808252868301918301905f5b8181101561433e57835183529284019291840191600101614322565b50506001600160801b03861660408601529250613609915050565b5f6001820161436a5761436a613b25565b506001019056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a26469706673582212203a214c965eb3956ff07c645a3f97f11e09a50d6ac5d1cd5276785c6492dc75a964736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"10415\": [\n {\n \"length\": 32,\n \"start\": 1065\n },\n {\n \"length\": 32,\n \"start\": 2912\n },\n {\n \"length\": 32,\n \"start\": 4013\n },\n {\n \"length\": 32,\n \"start\": 4623\n },\n {\n \"length\": 32,\n \"start\": 7278\n },\n {\n \"length\": 32,\n \"start\": 7412\n }\n ],\n \"10418\": [\n {\n \"length\": 32,\n \"start\": 735\n },\n {\n \"length\": 32,\n \"start\": 4690\n },\n {\n \"length\": 32,\n \"start\": 4884\n },\n {\n \"length\": 32,\n \"start\": 7327\n },\n {\n \"length\": 32,\n \"start\": 7473\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/MintingGateway.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"ProxyAdmin\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [],\n \"name\": \"UPGRADE_INTERFACE_VERSION\",\n \"outputs\": [\n {\n \"internalType\": \"string\",\n \"name\": \"\",\n \"type\": \"string\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ITransparentUpgradeableProxy\",\n \"name\": \"proxy\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"upgradeAndCall\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": \"0x608060405234801561000f575f80fd5b506040516104fe3803806104fe83398101604081905261002e916100bd565b80806001600160a01b03811661005d57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100668161006e565b5050506100ea565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cd575f80fd5b81516001600160a01b03811681146100e3575f80fd5b9392505050565b610407806100f75f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"deployedBytecode\": \"0x608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea2646970667358221220a77b010ffc05154c8ed3b21e0cdf2179e335e6d013ff360980053dbb46437bf164736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {},\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","{\n \"_format\": \"hh3-artifact-1\",\n \"contractName\": \"TransparentUpgradeableProxy\",\n \"sourceName\": \"contracts/ProxyArtifacts.sol\",\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"logic\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"initialOwner\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"data\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"payable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"target\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AddressEmptyCode\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"admin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidAdmin\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"ERC1967InvalidImplementation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967NonPayable\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ERC1967ProxyUninitialized\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"FailedCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ProxyDeniedAdminAccess\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"previousAdmin\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"newAdmin\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"AdminChanged\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"implementation\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Upgraded\",\n \"type\": \"event\"\n },\n {\n \"stateMutability\": \"payable\",\n \"type\": \"fallback\"\n }\n ],\n \"bytecode\": \"0x60a0604052604051610d9c380380610d9c8339810160408190526100229161036c565b82828282818051610046576040516330a289cf60e21b815260040160405180910390fd5b61005082826100b1565b50508160405161005f90610330565b6001600160a01b039091168152602001604051809103905ff080158015610088573d5f803e3d5ffd5b506001600160a01b03166080526100a66100a160805190565b61010f565b50505050505061044e565b6100ba8261017c565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115610103576100fe82826101fa565b505050565b61010b61029b565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61014e5f80516020610d7c833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a1610179816102bc565b50565b806001600160a01b03163b5f036101b657604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f61020784846102f9565b905080801561022857505f3d118061022857505f846001600160a01b03163b115b1561023d5761023561030c565b915050610295565b801561026757604051639996b31560e01b81526001600160a01b03851660048201526024016101ad565b3d1561027a57610275610325565b610293565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156102ba5760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b0381166102e557604051633173bdd160e11b81525f60048201526024016101ad565b805f80516020610d7c8339815191526101d9565b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b6104fc8061088083390190565b80516001600160a01b0381168114610353575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037e575f80fd5b6103878461033d565b9250602061039681860161033d565b60408601519093506001600160401b03808211156103b2575f80fd5b818701915087601f8301126103c5575f80fd5b8151818111156103d7576103d7610358565b604051601f8201601f19908116603f011681019083821181831017156103ff576103ff610358565b816040528281528a86848701011115610416575f80fd5b5f93505b82841015610437578484018601518185018701529285019261041a565b5f8684830101528096505050505050509250925092565b60805161041b6104655f395f6010015261041b5ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033608060405234801561000f575f80fd5b506040516104fc3803806104fc83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b610407806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610372565b3480156100e9575f80fd5b506100616100f836600461038b565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef28690349061014890869086906004016103a6565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff808211156102a9575f80fd5b818601915086601f8301126102bc575f80fd5b8135818111156102ce576102ce61024c565b604051601f8201601f19908116603f011681019083821181831017156102f6576102f661024c565b8160405282815289602084870101111561030e575f80fd5b826020860160208301375f6020848301015280955050505050509250925092565b5f81518084525f5b8181101561035357602081850181015186830182015201610337565b505f602082860101526020601f19601f83011685010191505092915050565b602081525f610384602083018461032f565b9392505050565b5f6020828403121561039b575f80fd5b813561038481610238565b6001600160a01b03831681526040602082018190525f906103c99083018461032f565b94935050505056fea26469706673582212208a952449a6513ce6e7c752fad582ca8ddfcf06eb769c229368d768903cc14def64736f6c63430008180033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103\",\n \"deployedBytecode\": \"0x608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f8061009136600481846102e1565b81019061009e919061031c565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61028b565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f6101f784846102aa565b905080801561021857505f3d118061021857505f846001600160a01b03163b115b1561022d576102256102bd565b915050610285565b801561025757604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b3d1561026a576102656102d6565b610283565b60405163d6bda27560e01b815260040160405180910390fd5b505b92915050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b5f805f835160208501865af49392505050565b6040513d81523d5f602083013e3d602001810160405290565b6040513d5f823e3d81fd5b5f80858511156102ef575f80fd5b838611156102fb575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561032d575f80fd5b82356001600160a01b0381168114610343575f80fd5b9150602083013567ffffffffffffffff8082111561035f575f80fd5b818501915085601f830112610372575f80fd5b81358181111561038457610384610308565b604051601f8201601f19908116603f011681019083821181831017156103ac576103ac610308565b816040528281528860208487010111156103c4575f80fd5b826020860160208301375f602084830101528095505050505050925092905056fea264697066735822122003fe3380608f83dc64b6ab04abfdbeb77e575c0db025da8987b304f5b8a53c8d64736f6c63430008180033\",\n \"linkReferences\": {},\n \"deployedLinkReferences\": {},\n \"immutableReferences\": {\n \"1213\": [\n {\n \"length\": 32,\n \"start\": 16\n }\n ]\n },\n \"inputSourceName\": \"project/contracts/ProxyArtifacts.sol\",\n \"buildInfoId\": \"solc-0_8_24-0b1aeb87b938c690e17cb94e6c60ba6e2ad7e4c9\"\n}","//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ArgonotToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const argonotTokenAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// CanonicalMintableBurnableERC20\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const canonicalMintableBurnableErc20Abi = [\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n {\n type: 'error',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'allowance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientAllowance',\n },\n {\n type: 'error',\n inputs: [\n { name: 'sender', internalType: 'address', type: 'address' },\n { name: 'balance', internalType: 'uint256', type: 'uint256' },\n { name: 'needed', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'ERC20InsufficientBalance',\n },\n {\n type: 'error',\n inputs: [{ name: 'approver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidApprover',\n },\n {\n type: 'error',\n inputs: [{ name: 'receiver', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidReceiver',\n },\n {\n type: 'error',\n inputs: [{ name: 'sender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSender',\n },\n {\n type: 'error',\n inputs: [{ name: 'spender', internalType: 'address', type: 'address' }],\n name: 'ERC20InvalidSpender',\n },\n {\n type: 'error',\n inputs: [{ name: 'deadline', internalType: 'uint256', type: 'uint256' }],\n name: 'ERC2612ExpiredSignature',\n },\n {\n type: 'error',\n inputs: [\n { name: 'signer', internalType: 'address', type: 'address' },\n { name: 'owner', internalType: 'address', type: 'address' },\n ],\n name: 'ERC2612InvalidSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'currentNonce', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidAccountNonce',\n },\n {\n type: 'error',\n inputs: [{ name: 'gateway', internalType: 'address', type: 'address' }],\n name: 'InvalidGateway',\n },\n { type: 'error', inputs: [], name: 'InvalidShortString' },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'OnlyGateway',\n },\n {\n type: 'error',\n inputs: [{ name: 'str', internalType: 'string', type: 'string' }],\n name: 'StringTooLong',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n { type: 'event', anonymous: false, inputs: [], name: 'EIP712DomainChanged' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'eip712Domain',\n outputs: [\n { name: 'fields', internalType: 'bytes1', type: 'bytes1' },\n { name: 'name', internalType: 'string', type: 'string' },\n { name: 'version', internalType: 'string', type: 'string' },\n { name: 'chainId', internalType: 'uint256', type: 'uint256' },\n { name: 'verifyingContract', internalType: 'address', type: 'address' },\n { name: 'salt', internalType: 'bytes32', type: 'bytes32' },\n { name: 'extensions', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gateway',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'name',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'symbol',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ICanonicalToken\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const iCanonicalTokenAbi = [\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address', indexed: true },\n { name: 'spender', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Approval',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'to', internalType: 'address', type: 'address', indexed: true },\n { name: 'value', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'Transfer',\n },\n {\n type: 'function',\n inputs: [],\n name: 'DOMAIN_SEPARATOR',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n ],\n name: 'allowance',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'approve',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'account', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'burnFrom',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'mint',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'nonces',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'owner', internalType: 'address', type: 'address' },\n { name: 'spender', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'permit',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'totalSupply',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transfer',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'from', internalType: 'address', type: 'address' },\n { name: 'to', internalType: 'address', type: 'address' },\n { name: 'value', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'transferFrom',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// MintingGateway\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const mintingGatewayAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'argonTokenAddress', internalType: 'address', type: 'address' },\n { name: 'argonotTokenAddress', internalType: 'address', type: 'address' },\n ],\n stateMutability: 'nonpayable',\n },\n { type: 'error', inputs: [], name: 'ArrayLengthMismatch' },\n { type: 'error', inputs: [], name: 'ECDSAInvalidSignature' },\n {\n type: 'error',\n inputs: [{ name: 'length', internalType: 'uint256', type: 'uint256' }],\n name: 'ECDSAInvalidSignatureLength',\n },\n {\n type: 'error',\n inputs: [{ name: 's', internalType: 'bytes32', type: 'bytes32' }],\n name: 'ECDSAInvalidSignatureS',\n },\n { type: 'error', inputs: [], name: 'EnforcedPause' },\n { type: 'error', inputs: [], name: 'ExpectedPause' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilNotBootstrapped' },\n { type: 'error', inputs: [], name: 'GlobalIssuanceCouncilQuorumNotMet' },\n {\n type: 'error',\n inputs: [\n { name: 'authorized', internalType: 'uint256', type: 'uint256' },\n { name: 'required', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InsufficientAuthorizedCollateral',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidChainId',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'bytes32', type: 'bytes32' },\n { name: 'provided', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'InvalidCurrentCouncilSnapshot',\n },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'InvalidGlobalIssuanceCouncilMember',\n },\n { type: 'error', inputs: [], name: 'InvalidInitialization' },\n { type: 'error', inputs: [], name: 'InvalidMicrogonCollateralForArgonotPayout' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'InvalidMintingAuthority',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expectedSigner', internalType: 'address', type: 'address' },\n { name: 'recoveredSigner', internalType: 'address', type: 'address' },\n ],\n name: 'InvalidMintingAuthorityDeactivationSigner',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint64', type: 'uint64' },\n { name: 'provided', internalType: 'uint64', type: 'uint64' },\n ],\n name: 'InvalidQueueNonce',\n },\n {\n type: 'error',\n inputs: [\n { name: 'expected', internalType: 'uint256', type: 'uint256' },\n { name: 'provided', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'InvalidSignatureCount',\n },\n { type: 'error', inputs: [], name: 'InvalidSignatureOrder' },\n {\n type: 'error',\n inputs: [\n { name: 'maxRate', internalType: 'uint128', type: 'uint128' },\n { name: 'providedRate', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'InvalidTransferOutRate',\n },\n {\n type: 'error',\n inputs: [{ name: 'kind', internalType: 'uint8', type: 'uint8' }],\n name: 'InvalidUpdateKind',\n },\n { type: 'error', inputs: [], name: 'LatestGatewayUpdateCannotDeactivate' },\n { type: 'error', inputs: [], name: 'MigrationAlreadyCompleted' },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityAlreadyActive',\n },\n {\n type: 'error',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'MintingAuthorityTransferCapacityExceeded',\n },\n {\n type: 'error',\n inputs: [{ name: 'caller', internalType: 'address', type: 'address' }],\n name: 'NotGuardianOrOwner',\n },\n { type: 'error', inputs: [], name: 'NotInitializing' },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'error',\n inputs: [{ name: 'amount', internalType: 'uint256', type: 'uint256' }],\n name: 'RuntimeAmountOverflow',\n },\n {\n type: 'error',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'TransferOutOfArgonAlreadyFinalized',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonExpired',\n },\n {\n type: 'error',\n inputs: [\n { name: 'currentBlock', internalType: 'uint256', type: 'uint256' },\n { name: 'validUntilBlock', internalType: 'uint256', type: 'uint256' },\n ],\n name: 'TransferOutOfArgonNotExpired',\n },\n {\n type: 'error',\n inputs: [{ name: 'token', internalType: 'address', type: 'address' }],\n name: 'UnsupportedToken',\n },\n { type: 'error', inputs: [], name: 'ZeroAdminSafe' },\n { type: 'error', inputs: [], name: 'ZeroAmount' },\n { type: 'error', inputs: [], name: 'ZeroGuardian' },\n { type: 'error', inputs: [], name: 'ZeroMicrogonsPerArgonot' },\n {\n type: 'error',\n inputs: [{ name: 'index', internalType: 'uint256', type: 'uint256' }],\n name: 'ZeroRecipient',\n },\n { type: 'error', inputs: [], name: 'ZeroSigningKey' },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true }],\n name: 'GlobalIssuanceCouncilBootstrapped',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousCouncilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: true },\n ],\n name: 'GlobalIssuanceCouncilForceUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'GlobalIssuanceCouncilRotated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousGuardian', internalType: 'address', type: 'address', indexed: true },\n { name: 'newGuardian', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'GuardianUpdated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'version', internalType: 'uint64', type: 'uint64', indexed: false }],\n name: 'Initialized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'argonRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotRecipientCount', internalType: 'uint256', type: 'uint256', indexed: false },\n { name: 'argonotTotalAmount', internalType: 'uint256', type: 'uint256', indexed: false },\n ],\n name: 'MigrationCompleted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'coactivationCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'sharedSignatureCount', internalType: 'uint32', type: 'uint32', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityActivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'signingKey', internalType: 'address', type: 'address', indexed: true },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'MintingAuthorityDeactivated',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Paused',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonCanceled',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'transferId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n { name: 'token', internalType: 'address', type: 'address', indexed: false },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n {\n name: 'mintingCollateral',\n internalType: 'struct MintingGateway.MintingAuthorityCollateral[]',\n type: 'tuple[]',\n components: [\n { name: 'signingKey', internalType: 'address', type: 'address' },\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferOutOfArgonFinalized',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'from', internalType: 'address', type: 'address', indexed: true },\n { name: 'token', internalType: 'address', type: 'address', indexed: true },\n { name: 'amount', internalType: 'uint128', type: 'uint128', indexed: false },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32', indexed: false },\n {\n name: 'gatewayState',\n internalType: 'struct MintingGateway.GatewayActivityState',\n type: 'tuple',\n components: [\n { name: 'gatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonApprovalsNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'argonCirculation', internalType: 'uint128', type: 'uint128' },\n { name: 'argonotCirculation', internalType: 'uint128', type: 'uint128' },\n ],\n indexed: false,\n },\n ],\n name: 'TransferToArgonStarted',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'account', internalType: 'address', type: 'address', indexed: false }],\n name: 'Unpaused',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'RUNTIME_TO_ERC20_SCALE',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'TOKEN_DECIMALS',\n outputs: [{ name: '', internalType: 'uint8', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'locatorIndex', internalType: 'uint64', type: 'uint64' }],\n name: 'activityBlockLocators',\n outputs: [\n { name: 'blockNumber', internalType: 'uint64', type: 'uint64' },\n { name: 'startGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'endGatewayActivityNonce', internalType: 'uint64', type: 'uint64' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'currentCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'updates',\n internalType: 'struct MintingGateway.GatewayUpdate[]',\n type: 'tuple[]',\n components: [\n { name: 'queueNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'kind', internalType: 'enum MintingGateway.GatewayUpdateKind', type: 'uint8' },\n { name: 'payload', internalType: 'bytes', type: 'bytes' },\n { name: 'signatures', internalType: 'bytes[]', type: 'bytes[]' },\n ],\n },\n { name: 'relayerArgonAccountId', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'applyGatewayUpdates',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsHash',\n outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonApprovalsNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotCirculation',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'argonotToken',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n ],\n name: 'cancelTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'request',\n internalType: 'struct MintingGateway.TransferOutOfArgonRequest',\n type: 'tuple',\n components: [\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'argonTransferNonce', internalType: 'uint64', type: 'uint64' },\n { name: 'chainId', internalType: 'uint64', type: 'uint64' },\n { name: 'microgonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n { name: 'recipient', internalType: 'address', type: 'address' },\n { name: 'validUntilBlock', internalType: 'uint64', type: 'uint64' },\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'mintingAuthorityTip', internalType: 'uint128', type: 'uint128' },\n ],\n },\n {\n name: 'proof',\n internalType: 'struct MintingGateway.TransferOutOfArgonProof',\n type: 'tuple',\n components: [\n {\n name: 'authorizations',\n internalType: 'struct MintingGateway.MintingAuthorization[]',\n type: 'tuple[]',\n components: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'signature', internalType: 'bytes', type: 'bytes' },\n ],\n },\n ],\n },\n ],\n name: 'finalizeTransferOutOfArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'transferId', internalType: 'bytes32', type: 'bytes32' }],\n name: 'finalizedTransferOutOfArgonIds',\n outputs: [{ name: 'isFinalized', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'nextCouncil',\n internalType: 'struct MintingGateway.CouncilSnapshot',\n type: 'tuple',\n components: [\n { name: 'signers', internalType: 'address[]', type: 'address[]' },\n { name: 'weights', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n { name: 'nextMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'forceUpdateActiveCouncil',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'gatewayActivityNonce',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'globalIssuanceCouncil',\n outputs: [\n { name: 'totalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'memberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'epochMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'guardian',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n { name: 'adminSafe', internalType: 'address', type: 'address' },\n { name: 'guardianAddress', internalType: 'address', type: 'address' },\n { name: 'councilHash', internalType: 'bytes32', type: 'bytes32' },\n { name: 'councilMemberCount', internalType: 'uint256', type: 'uint256' },\n { name: 'councilTotalWeight', internalType: 'uint256', type: 'uint256' },\n { name: 'initialMicrogonsPerArgonot', internalType: 'uint128', type: 'uint128' },\n ],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'latestActivityBlockLocatorIndex',\n outputs: [{ name: '', internalType: 'uint64', type: 'uint64' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'maxTransferOutMicrogonsPerArgonot',\n outputs: [{ name: '', internalType: 'uint128', type: 'uint128' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [\n {\n name: 'argonMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n {\n name: 'argonotMigration',\n internalType: 'struct MintingGateway.MigrationAssetDistribution',\n type: 'tuple',\n components: [\n { name: 'recipients', internalType: 'address[]', type: 'address[]' },\n { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },\n ],\n },\n ],\n name: 'migrate',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [],\n name: 'migrationCompleted',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [{ name: 'signingKey', internalType: 'address', type: 'address' }],\n name: 'mintingAuthorityCollateralRemaining',\n outputs: [\n { name: 'microgonCollateral', internalType: 'uint128', type: 'uint128' },\n { name: 'micronotCollateral', internalType: 'uint128', type: 'uint128' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n { type: 'function', inputs: [], name: 'pause', outputs: [], stateMutability: 'nonpayable' },\n {\n type: 'function',\n inputs: [],\n name: 'paused',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'guardianAddress', internalType: 'address', type: 'address' }],\n name: 'setGuardian',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'token', internalType: 'address', type: 'address' },\n { name: 'amount', internalType: 'uint128', type: 'uint128' },\n { name: 'argonAccountId', internalType: 'bytes32', type: 'bytes32' },\n { name: 'deadline', internalType: 'uint256', type: 'uint256' },\n { name: 'v', internalType: 'uint8', type: 'uint8' },\n { name: 'r', internalType: 'bytes32', type: 'bytes32' },\n { name: 's', internalType: 'bytes32', type: 'bytes32' },\n ],\n name: 'startTransferToArgon',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'amount', internalType: 'uint128', type: 'uint128' }],\n name: 'toTokenAmount',\n outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n { type: 'function', inputs: [], name: 'unpause', outputs: [], stateMutability: 'nonpayable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// ProxyAdmin\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const proxyAdminAbi = [\n {\n type: 'constructor',\n inputs: [{ name: 'initialOwner', internalType: 'address', type: 'address' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'error',\n inputs: [{ name: 'owner', internalType: 'address', type: 'address' }],\n name: 'OwnableInvalidOwner',\n },\n {\n type: 'error',\n inputs: [{ name: 'account', internalType: 'address', type: 'address' }],\n name: 'OwnableUnauthorizedAccount',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousOwner', internalType: 'address', type: 'address', indexed: true },\n { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },\n ],\n name: 'OwnershipTransferred',\n },\n {\n type: 'function',\n inputs: [],\n name: 'UPGRADE_INTERFACE_VERSION',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'owner',\n outputs: [{ name: '', internalType: 'address', type: 'address' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n inputs: [\n { name: 'proxy', internalType: 'contract ITransparentUpgradeableProxy', type: 'address' },\n { name: 'implementation', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n name: 'upgradeAndCall',\n outputs: [],\n stateMutability: 'payable',\n },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// TransparentUpgradeableProxy\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nexport const transparentUpgradeableProxyAbi = [\n {\n type: 'constructor',\n inputs: [\n { name: 'logic', internalType: 'address', type: 'address' },\n { name: 'initialOwner', internalType: 'address', type: 'address' },\n { name: 'data', internalType: 'bytes', type: 'bytes' },\n ],\n stateMutability: 'payable',\n },\n {\n type: 'error',\n inputs: [{ name: 'target', internalType: 'address', type: 'address' }],\n name: 'AddressEmptyCode',\n },\n {\n type: 'error',\n inputs: [{ name: 'admin', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidAdmin',\n },\n {\n type: 'error',\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address' }],\n name: 'ERC1967InvalidImplementation',\n },\n { type: 'error', inputs: [], name: 'ERC1967NonPayable' },\n { type: 'error', inputs: [], name: 'ERC1967ProxyUninitialized' },\n { type: 'error', inputs: [], name: 'FailedCall' },\n { type: 'error', inputs: [], name: 'ProxyDeniedAdminAccess' },\n {\n type: 'event',\n anonymous: false,\n inputs: [\n { name: 'previousAdmin', internalType: 'address', type: 'address', indexed: false },\n { name: 'newAdmin', internalType: 'address', type: 'address', indexed: false },\n ],\n name: 'AdminChanged',\n },\n {\n type: 'event',\n anonymous: false,\n inputs: [{ name: 'implementation', internalType: 'address', type: 'address', indexed: true }],\n name: 'Upgraded',\n },\n { type: 'fallback', stateMutability: 'payable' },\n] as const;\n\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n// EventMetadataConstants\n//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\n\nimport type { Hex } from 'viem';\n\nexport type ArgonTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonTokenEIP712DomainChanged = {};\n\nexport type ArgonTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ArgonotTokenEIP712DomainChanged = {};\n\nexport type ArgonotTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20Approval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type CanonicalMintableBurnableERC20EIP712DomainChanged = {};\n\nexport type CanonicalMintableBurnableERC20Transfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenApproval = {\n owner: Hex;\n spender: Hex;\n value: bigint;\n};\n\nexport type ICanonicalTokenTransfer = {\n from: Hex;\n to: Hex;\n value: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilBootstrapped = {\n councilHash: Hex;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilForceUpdated = {\n previousCouncilHash: Hex;\n councilHash: Hex;\n};\n\nexport type MintingGatewayActivityState = {\n gatewayActivityNonce: bigint;\n argonApprovalsNonce: bigint;\n argonCirculation: bigint;\n argonotCirculation: bigint;\n};\n\nexport type MintingGatewayGlobalIssuanceCouncilRotated = {\n councilHash: Hex;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayGuardianUpdated = {\n previousGuardian: Hex;\n newGuardian: Hex;\n};\n\nexport type MintingGatewayInitialized = {\n version: bigint;\n};\n\nexport type MintingGatewayMigrationCompleted = {\n argonRecipientCount: bigint;\n argonTotalAmount: bigint;\n argonotRecipientCount: bigint;\n argonotTotalAmount: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n coactivationCount: bigint;\n sharedSignatureCount: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivated = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n relayerArgonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type MintingGatewayPaused = {\n account: Hex;\n};\n\nexport type MintingGatewayTransferOutOfArgonCanceled = {\n transferId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayMintingAuthorityCollateral = {\n signingKey: Hex;\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n};\n\nexport type MintingGatewayTransferOutOfArgonFinalized = {\n transferId: Hex;\n token: Hex;\n amount: bigint;\n mintingCollateral: readonly MintingGatewayMintingAuthorityCollateral[];\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayTransferToArgonStarted = {\n from: Hex;\n token: Hex;\n amount: bigint;\n argonAccountId: Hex;\n gatewayState: MintingGatewayActivityState;\n};\n\nexport type MintingGatewayUnpaused = {\n account: Hex;\n};\n\nexport type ProxyAdminOwnershipTransferred = {\n previousOwner: Hex;\n newOwner: Hex;\n};\n\nexport type TransparentUpgradeableProxyAdminChanged = {\n previousAdmin: Hex;\n newAdmin: Hex;\n};\n\nexport type TransparentUpgradeableProxyUpgraded = {\n implementation: Hex;\n};\n\nexport const ArgonTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ArgonotTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const CanonicalMintableBurnableERC20Events = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n EIP712DomainChanged: {\n name: 'EIP712DomainChanged',\n topic: '0x0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const ICanonicalTokenEvents = {\n Approval: {\n name: 'Approval',\n topic: '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925',\n },\n Transfer: {\n name: 'Transfer',\n topic: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',\n },\n} as const;\n\nexport const MintingGatewayEvents = {\n GlobalIssuanceCouncilBootstrapped: {\n name: 'GlobalIssuanceCouncilBootstrapped',\n topic: '0xac3566d46c25f65b48d269870da4b9349704c79de13ad49b115532834d7e7ed1',\n },\n GlobalIssuanceCouncilForceUpdated: {\n name: 'GlobalIssuanceCouncilForceUpdated',\n topic: '0x33e53e90d61fdc868629a6234670f92c4445196f3f98ebd71935bbc76c7d9153',\n },\n GlobalIssuanceCouncilRotated: {\n name: 'GlobalIssuanceCouncilRotated',\n topic: '0xb3dbfeab9c5013403dc2f2300318b92643b1cb9323077d549b4f93bbddded963',\n },\n GuardianUpdated: {\n name: 'GuardianUpdated',\n topic: '0x064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad909',\n },\n Initialized: {\n name: 'Initialized',\n topic: '0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2',\n },\n MigrationCompleted: {\n name: 'MigrationCompleted',\n topic: '0xc255ddc45163282f24909556f7475ab4ec8eb1d51763b25a4560cee9f43d0645',\n },\n MintingAuthorityActivated: {\n name: 'MintingAuthorityActivated',\n topic: '0xc0f81072946eba75f62302dad0fe56dd420d0b9d311e15b61bbe6e056c29908d',\n },\n MintingAuthorityDeactivated: {\n name: 'MintingAuthorityDeactivated',\n topic: '0xf92f117a698345a1b681cf04280fb5da65a05a9ac88aaacad3e9ee273ce570fd',\n },\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n Paused: {\n name: 'Paused',\n topic: '0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258',\n },\n TransferOutOfArgonCanceled: {\n name: 'TransferOutOfArgonCanceled',\n topic: '0x3cb8789e9bf6f532eec2bc8ffee9b622fc0d6e6daefb7fb6bb2e2f7b2d62e452',\n },\n TransferOutOfArgonFinalized: {\n name: 'TransferOutOfArgonFinalized',\n topic: '0x64d79900ed82270f744ae62db527f4e328e336d8b51e77bc72601391fe779d06',\n },\n TransferToArgonStarted: {\n name: 'TransferToArgonStarted',\n topic: '0x3ab970a848f33363427e47cfbd7a627af0c6e72757f150137e38cef3cee24d93',\n },\n Unpaused: {\n name: 'Unpaused',\n topic: '0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa',\n },\n} as const;\n\nexport const ProxyAdminEvents = {\n OwnershipTransferred: {\n name: 'OwnershipTransferred',\n topic: '0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0',\n },\n} as const;\n\nexport const TransparentUpgradeableProxyEvents = {\n AdminChanged: {\n name: 'AdminChanged',\n topic: '0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f',\n },\n Upgraded: {\n name: 'Upgraded',\n topic: '0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b',\n },\n} as const;\n","import type { Address, ContractFunctionArgs, Hex } from 'viem';\nimport { encodeAbiParameters, keccak256, stringToHex } from 'viem';\nimport { mintingGatewayAbi } from './generated.js';\n\nexport const MINTING_GATEWAY_UPDATE_KINDS = {\n globalIssuanceCouncilRotate: 0,\n mintingAuthorityActivate: 1,\n mintingAuthorityDeactivate: 2,\n} as const;\n\nexport type MintingGatewayHashContext = {\n chainId: bigint;\n gatewayAddress: Address;\n};\n\ntype ApplyGatewayUpdatesArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'applyGatewayUpdates'\n>;\ntype FinalizeTransferOutOfArgonArgs = ContractFunctionArgs<\n typeof mintingGatewayAbi,\n 'nonpayable',\n 'finalizeTransferOutOfArgon'\n>;\ntype MigrateArgs = ContractFunctionArgs<typeof mintingGatewayAbi, 'nonpayable', 'migrate'>;\nexport type MintingGatewayCouncilSnapshot = ApplyGatewayUpdatesArgs[0];\nexport type MintingGatewayGatewayUpdate = ApplyGatewayUpdatesArgs[1][number];\nexport type MintingGatewayTransferOutOfArgonRequest = FinalizeTransferOutOfArgonArgs[0];\nexport type MintingGatewayTransferOutOfArgonProof = FinalizeTransferOutOfArgonArgs[1];\nexport type MintingGatewayMintingAuthorization =\n MintingGatewayTransferOutOfArgonProof['authorizations'][number];\nexport type MintingGatewayMigrationAssetDistribution = MigrateArgs[0];\nexport type MintingGatewayGlobalIssuanceCouncilRotateTarget = {\n council: MintingGatewayCouncilSnapshot;\n epochMicrogonsPerArgonot: bigint;\n};\nexport type MintingGatewayGlobalIssuanceCouncilHashArgs = MintingGatewayCouncilSnapshot & {\n epochMicrogonsPerArgonot: bigint;\n};\n\nexport type MintingGatewayMintingAuthorityActivationTarget = {\n microgonCollateral: bigint;\n micronotCollateral: bigint;\n signingKey: Address;\n};\n\nexport type MintingGatewayMintingAuthorityDeactivateTarget = {\n signingKey: Address;\n};\n\ntype ActivateMintingAuthorityApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayMintingAuthorityActivationTarget;\n};\n\ntype RotateGlobalIssuanceCouncilApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n previousUpdateHash: Hex;\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget;\n};\n\ntype MintingAuthorizationHashArgs = {\n request: MintingGatewayTransferOutOfArgonRequest;\n microgonCollateral: MintingGatewayMintingAuthorization['microgonCollateral'];\n micronotCollateral: MintingGatewayMintingAuthorization['micronotCollateral'];\n};\n\ntype MintingAuthorityDeactivationHashArgs = {\n queueNonce: bigint;\n target: MintingGatewayMintingAuthorityDeactivateTarget;\n previousUpdateHash: Hex;\n};\n\ntype GatewayUpdateApprovalArgs = {\n queueNonce: bigint;\n approvingCouncilHash: Hex;\n kind: (typeof MINTING_GATEWAY_UPDATE_KINDS)[keyof typeof MINTING_GATEWAY_UPDATE_KINDS];\n targetId: Hex;\n targetPayloadHash: Hex;\n previousUpdateHash: Hex;\n};\n\nconst COUNCIL_SNAPSHOT_PARAMETERS = [\n { name: 'signers', type: 'address[]' },\n { name: 'weights', type: 'uint256[]' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n {\n name: 'council',\n type: 'tuple',\n components: COUNCIL_SNAPSHOT_PARAMETERS,\n },\n { name: 'epochMicrogonsPerArgonot', type: 'uint128' },\n ],\n },\n] as const;\n\nconst ACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [\n { name: 'microgonCollateral', type: 'uint128' },\n { name: 'micronotCollateral', type: 'uint128' },\n { name: 'signingKey', type: 'address' },\n ],\n },\n] as const;\n\nconst DEACTIVATION_TARGET_PARAMETERS = [\n {\n type: 'tuple',\n components: [{ name: 'signingKey', type: 'address' }],\n },\n] as const;\n\nconst GATEWAY_UPDATE_APPROVAL_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'bytes32' },\n { type: 'uint8' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n { type: 'bytes32' },\n] as const;\n\nconst MINTING_AUTHORITY_HASH_PARAMETERS = [\n { type: 'uint128' },\n { type: 'uint128' },\n { type: 'address' },\n] as const;\n\nconst MINTING_AUTHORITY_ACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORITY_DEACTIVATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'bytes32' },\n] as const;\n\nfunction signingKeyTargetId(signingKey: Address): Hex {\n return `0x${signingKey.slice(2).padStart(64, '0').toLowerCase()}`;\n}\n\nconst TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint64' },\n { type: 'uint64' },\n { type: 'uint128' },\n { type: 'address' },\n { type: 'uint64' },\n { type: 'address' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst MINTING_AUTHORIZATION_PARAMETERS = [\n { type: 'bytes32' },\n { type: 'uint256' },\n { type: 'address' },\n { type: 'bytes32' },\n { type: 'uint128' },\n { type: 'uint128' },\n] as const;\n\nconst GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG = keccak256(\n stringToHex('ARGON_GLOBAL_ISSUANCE_COUNCIL_ROTATION'),\n);\nconst MINTING_AUTHORITY_ACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_ACTIVATION'),\n);\nconst MINTING_AUTHORITY_DEACTIVATION_TAG = keccak256(\n stringToHex('ARGON_MINTING_AUTHORITY_DEACTIVATION'),\n);\nconst GATEWAY_UPDATE_APPROVAL_TAG = keccak256(stringToHex('ARGON_GATEWAY_UPDATE_APPROVAL'));\nconst TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG = keccak256(\n stringToHex('ARGON_TRANSFER_OUT_OF_ARGON_AUTHORIZATION'),\n);\n\nexport function encodeMintingGatewayCouncilSnapshot(snapshot: MintingGatewayCouncilSnapshot): Hex {\n return encodeAbiParameters(\n [{ type: 'tuple', components: COUNCIL_SNAPSHOT_PARAMETERS }],\n [snapshot],\n );\n}\n\nexport function encodeMintingGatewayGlobalIssuanceCouncilRotateTarget(\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATE_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityActivationTarget(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return encodeAbiParameters(ACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function encodeMintingGatewayMintingAuthorityDeactivateTarget(\n target: MintingGatewayMintingAuthorityDeactivateTarget,\n): Hex {\n return encodeAbiParameters(DEACTIVATION_TARGET_PARAMETERS, [target]);\n}\n\nexport function hashMintingGatewayGlobalIssuanceCouncil(\n council: MintingGatewayGlobalIssuanceCouncilHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(\n [{ type: 'address[]' }, { type: 'uint256[]' }, { type: 'uint128' }],\n [council.signers, council.weights, council.epochMicrogonsPerArgonot],\n ),\n );\n}\n\nexport function hashMintingGatewayMintingAuthority(\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_HASH_PARAMETERS, [\n target.microgonCollateral,\n target.micronotCollateral,\n target.signingKey,\n ]),\n );\n}\n\nexport function hashMintingGatewayActivateMintingAuthorityApproval(\n context: MintingGatewayHashContext,\n args: ActivateMintingAuthorityApprovalArgs,\n): Hex {\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.mintingAuthorityActivate,\n targetId: signingKeyTargetId(args.target.signingKey),\n targetPayloadHash: hashMintingGatewayActivateMintingAuthority(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncilApproval(\n context: MintingGatewayHashContext,\n args: RotateGlobalIssuanceCouncilApprovalArgs,\n): Hex {\n const nextCouncilHash = hashMintingGatewayGlobalIssuanceCouncil({\n ...args.target.council,\n epochMicrogonsPerArgonot: args.target.epochMicrogonsPerArgonot,\n });\n\n return hashMintingGatewayGatewayUpdateApproval(context, {\n queueNonce: args.queueNonce,\n approvingCouncilHash: args.approvingCouncilHash,\n kind: MINTING_GATEWAY_UPDATE_KINDS.globalIssuanceCouncilRotate,\n targetId: nextCouncilHash,\n targetPayloadHash: hashMintingGatewayRotateGlobalIssuanceCouncil(context, args.target),\n previousUpdateHash: args.previousUpdateHash,\n });\n}\n\nexport function hashMintingGatewayActivateMintingAuthority(\n context: MintingGatewayHashContext,\n target: MintingGatewayMintingAuthorityActivationTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_ACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_ACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayMintingAuthority(target),\n ]),\n );\n}\n\nexport function hashMintingGatewayRotateGlobalIssuanceCouncil(\n context: MintingGatewayHashContext,\n target: MintingGatewayGlobalIssuanceCouncilRotateTarget,\n): Hex {\n return keccak256(\n encodeAbiParameters(GLOBAL_ISSUANCE_COUNCIL_ROTATION_PARAMETERS, [\n GLOBAL_ISSUANCE_COUNCIL_ROTATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayGlobalIssuanceCouncil({\n ...target.council,\n epochMicrogonsPerArgonot: target.epochMicrogonsPerArgonot,\n }),\n target.epochMicrogonsPerArgonot,\n ]),\n );\n}\n\nexport function hashMintingGatewayGatewayUpdateApproval(\n context: MintingGatewayHashContext,\n args: GatewayUpdateApprovalArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(GATEWAY_UPDATE_APPROVAL_PARAMETERS, [\n GATEWAY_UPDATE_APPROVAL_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.approvingCouncilHash,\n args.kind,\n args.targetId,\n args.targetPayloadHash,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorityDeactivation(\n context: MintingGatewayHashContext,\n args: MintingAuthorityDeactivationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORITY_DEACTIVATION_PARAMETERS, [\n MINTING_AUTHORITY_DEACTIVATION_TAG,\n context.chainId,\n context.gatewayAddress,\n args.queueNonce,\n args.target.signingKey,\n args.previousUpdateHash,\n ]),\n );\n}\n\nexport function hashMintingGatewayTransferOutOfArgonRequest(\n request: MintingGatewayTransferOutOfArgonRequest,\n): Hex {\n return keccak256(\n encodeAbiParameters(TRANSFER_OUT_OF_ARGON_REQUEST_PARAMETERS, [\n request.argonAccountId,\n request.argonTransferNonce,\n request.chainId,\n request.microgonsPerArgonot,\n request.recipient,\n request.validUntilBlock,\n request.token,\n request.amount,\n request.mintingAuthorityTip,\n ]),\n );\n}\n\nexport function hashMintingGatewayMintingAuthorization(\n context: MintingGatewayHashContext,\n args: MintingAuthorizationHashArgs,\n): Hex {\n return keccak256(\n encodeAbiParameters(MINTING_AUTHORIZATION_PARAMETERS, [\n TRANSFER_OUT_OF_ARGON_AUTHORIZATION_TAG,\n context.chainId,\n context.gatewayAddress,\n hashMintingGatewayTransferOutOfArgonRequest(args.request),\n args.microgonCollateral,\n args.micronotCollateral,\n ]),\n );\n}\n","import argonTokenArtifact from './artifacts/contracts/ArgonToken.sol/ArgonToken.json' with { type: 'json' };\nimport argonotTokenArtifact from './artifacts/contracts/ArgonotToken.sol/ArgonotToken.json' with { type: 'json' };\nimport mintingGatewayArtifact from './artifacts/contracts/MintingGateway.sol/MintingGateway.json' with { type: 'json' };\nimport proxyAdminArtifact from './artifacts/contracts/ProxyArtifacts.sol/ProxyAdmin.json' with { type: 'json' };\nimport transparentUpgradeableProxyArtifact from './artifacts/contracts/ProxyArtifacts.sol/TransparentUpgradeableProxy.json' with { type: 'json' };\n\nexport const MINTING_GATEWAY_RUNTIME_DECIMALS = 6;\nexport const MINTING_GATEWAY_TOKEN_DECIMALS = 18;\nexport const MINTING_GATEWAY_RUNTIME_TO_ERC20_SCALE =\n 10n ** BigInt(MINTING_GATEWAY_TOKEN_DECIMALS - MINTING_GATEWAY_RUNTIME_DECIMALS);\n\nexport type MintingGatewayActivityBlockLocator = {\n blockNumber: bigint;\n startGatewayActivityNonce: bigint;\n endGatewayActivityNonce: bigint;\n};\n\nexport * from './generated.js';\nexport * from './hashing.js';\n\nexport {\n argonTokenArtifact,\n argonotTokenArtifact,\n mintingGatewayArtifact,\n proxyAdminArtifact,\n transparentUpgradeableProxyArtifact,\n};\n","import { BlockHeader, createBlockHeaderFromRPC, type JSONRPCBlock } from '@ethereumjs/block';\nimport { createMerkleProof, createMPT, verifyMPTWithMerkleProof } from '@ethereumjs/mpt';\nimport type { IArgonQueryable } from './index';\nimport { bytesToHex, type Hex, hexToBytes, toHex, toRlp } from 'viem';\nimport {\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n type EthereumReceipt,\n getExecutionClient,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\ntype EthGetBlockByHashRpc = {\n Method: 'eth_getBlockByHash';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\ntype EthGetBlockByNumberRpc = {\n Method: 'eth_getBlockByNumber';\n Parameters: [Hex, true];\n ReturnType: JSONRPCBlock;\n};\n\nexport type ArgonFinalizedExecutionHeader = {\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nexport class ArgonFinalizedExecutionHeaderPathError extends Error {}\n\nexport type EthereumEventLocator = {\n txHash: Hex;\n logIndexes?: number[];\n receipt?: EthereumReceipt;\n};\n\nexport type EthereumEventLocatorBlock = EthereumEventLocator[];\n\nexport type EthereumEventLog = Pick<EthereumReceipt['logs'][number], 'address' | 'data'> & {\n topics: Hex[];\n};\n\ntype LoadedEthereumEventLocator = {\n receipt: EthereumReceipt;\n requestedLogIndexes: number[];\n};\n\nexport type EthereumEventProof = {\n executionBlockProof: {\n anchorBlockHash: Hex;\n targetToAnchorHeaderChain: { rlp: Hex }[];\n };\n blocks: {\n targetBlockNumber: number;\n receiptLogs: {\n transactionIndex: number;\n eventLog: EthereumEventLog;\n }[];\n receiptProof: {\n nodes: Hex[];\n receipts: {\n transactionIndex: number;\n nodeIndexes: number[];\n }[];\n };\n }[];\n};\n\ntype EthereumEventProofBlock = EthereumEventProof['blocks'][number];\ntype EthereumReceiptProof = EthereumEventProofBlock['receiptProof'];\ntype EthereumReceiptLog = EthereumEventProofBlock['receiptLogs'][number];\ntype EthereumCombinedReceiptProofReceipt = EthereumReceiptProof['receipts'][number];\n\nexport function encodeReceiptTrieKey(transactionIndex: number): Uint8Array {\n return transactionIndex === 0 ? Uint8Array.from([0x80]) : toRlp(toHex(transactionIndex), 'bytes');\n}\n\nexport function encodeEthereumReceiptForProof(receipt: EthereumReceipt): Uint8Array {\n const payload = toRlp(\n [\n receipt.root ?? (receipt.status === 'success' ? '0x1' : '0x0'),\n toHex(receipt.cumulativeGasUsed),\n receipt.logsBloom,\n receipt.logs.map(log => [log.address, [...log.topics], log.data]),\n ],\n 'bytes',\n );\n\n switch (receipt.type) {\n case 'legacy':\n return payload;\n case 'eip2930':\n return Uint8Array.from([...hexToBytes('0x01'), ...payload]);\n case 'eip1559':\n return Uint8Array.from([...hexToBytes('0x02'), ...payload]);\n case 'eip4844':\n return Uint8Array.from([...hexToBytes('0x03'), ...payload]);\n case 'eip7702':\n return Uint8Array.from([...hexToBytes('0x04'), ...payload]);\n default:\n throw new Error(`Unsupported Ethereum receipt type ${String(receipt.type)}`);\n }\n}\n\nexport async function buildEthereumEventProof(\n executionSource: EthereumExecutionSource,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n locatorBlocks: EthereumEventLocatorBlock[],\n): Promise<EthereumEventProof> {\n if (locatorBlocks.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n const executionClient = getExecutionClient(executionSource);\n const blocksWithHeaders = await Promise.all(\n locatorBlocks.map(async (locatorBlock, index) => {\n if (locatorBlock.length === 0) {\n throw new Error(`Ethereum event locator block ${index} is empty`);\n }\n\n const loadedLocators = await loadEthereumEventLocators(executionClient, locatorBlock);\n const firstLocator = loadedLocators[0];\n const blockHash = firstLocator.receipt.blockHash;\n\n for (const locator of loadedLocators.slice(1)) {\n if (locator.receipt.blockHash.toLowerCase() !== blockHash.toLowerCase()) {\n throw new Error(`Ethereum event locator block ${index} spans multiple execution blocks`);\n }\n }\n\n const targetHeader = await loadExecutionHeader(executionClient, blockHash);\n if (argonFinalizedExecutionHeader.blockNumber < targetHeader.number) {\n throw new Error(\n `Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash} is behind target block ${blockHash}; wait for relayer sync`,\n );\n }\n return {\n blockHash,\n locators: loadedLocators,\n targetHeader,\n };\n }),\n );\n\n if (blocksWithHeaders.length === 0) {\n throw new Error('At least one Ethereum event locator is required');\n }\n\n blocksWithHeaders.sort((a, b) => Number(a.targetHeader.number - b.targetHeader.number));\n const furthestTargetBlock = blocksWithHeaders[0];\n\n const targetToArgonFinalizedHeaderChain = await buildExecutionHeaderChain(\n executionClient,\n furthestTargetBlock.targetHeader,\n argonFinalizedExecutionHeader,\n );\n\n const blocks: EthereumEventProof['blocks'] = [];\n for (const { blockHash, locators, targetHeader } of blocksWithHeaders) {\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n } else {\n const sharedTargetHeaderOnArgonFinalizedChain =\n targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - furthestTargetBlock.targetHeader.number)\n ];\n if (\n !sharedTargetHeaderOnArgonFinalizedChain ||\n sharedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !== blockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${blockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n }\n\n const receiptLogs: EthereumReceiptLog[] = [];\n const transactionIndexes: number[] = [];\n const seenTransactionIndexes = new Set<number>();\n\n for (const { receipt, requestedLogIndexes } of locators) {\n if (!seenTransactionIndexes.has(receipt.transactionIndex)) {\n seenTransactionIndexes.add(receipt.transactionIndex);\n transactionIndexes.push(receipt.transactionIndex);\n }\n\n for (const index of requestedLogIndexes) {\n const log = receipt.logs[index];\n if (!log) {\n throw new Error(`Missing log ${index} in receipt ${receipt.transactionHash}`);\n }\n\n receiptLogs.push({\n transactionIndex: receipt.transactionIndex,\n eventLog: {\n address: log.address,\n topics: [...log.topics],\n data: log.data,\n },\n });\n }\n }\n\n const receiptProof = await buildCombinedReceiptProof(\n executionClient,\n blockHash,\n transactionIndexes,\n bytesToHex(targetHeader.receiptTrie),\n );\n\n blocks.push({\n targetBlockNumber: Number(targetHeader.number),\n receiptProof,\n receiptLogs,\n });\n }\n\n return {\n executionBlockProof: {\n anchorBlockHash: argonFinalizedExecutionHeader.blockHash,\n targetToAnchorHeaderChain: targetToArgonFinalizedHeaderChain.map(({ rlp }) => ({ rlp })),\n },\n blocks,\n };\n}\n\nexport async function getLatestArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n): Promise<ArgonFinalizedExecutionHeader> {\n const verifierQuery = client.query.ethereumVerifier;\n const latestArgonFinalizedExecutionHeaderHash =\n await verifierQuery.latestExecutionHeaderAnchorBlockHash();\n\n if (latestArgonFinalizedExecutionHeaderHash.isNone) {\n throw new Error('No Argon finalized execution header is available yet; wait for relayer sync');\n }\n\n const blockHash = latestArgonFinalizedExecutionHeaderHash.unwrap().toHex();\n const argonFinalizedExecutionHeaderEntry = await verifierQuery.executionHeaderAnchors(blockHash);\n\n if (argonFinalizedExecutionHeaderEntry.isNone) {\n throw new Error(`Argon finalized execution header ${blockHash} is missing`);\n }\n\n return {\n blockHash,\n blockNumber: argonFinalizedExecutionHeaderEntry.unwrap().blockNumber.toBigInt(),\n };\n}\n\nexport async function waitForArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n targetBlockNumber: bigint,\n options: { pollMs?: number; timeoutMs?: number } = {},\n): Promise<ArgonFinalizedExecutionHeader> {\n const pollMs = options.pollMs ?? 3_000;\n const timeoutMs = options.timeoutMs ?? 5 * 60_000;\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < timeoutMs) {\n try {\n const argonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n if (argonFinalizedExecutionHeader.blockNumber >= targetBlockNumber) {\n return argonFinalizedExecutionHeader;\n }\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n }\n\n await new Promise(resolve => setTimeout(resolve, pollMs));\n }\n\n throw (\n lastError ??\n new Error(\n `Argon finalized execution header did not reach block ${targetBlockNumber} within ${Math.floor(timeoutMs / 1000)}s`,\n )\n );\n}\n\nasync function loadEthereumEventLocators(\n executionClient: EthereumExecutionClient,\n locators: EthereumEventLocator[],\n) {\n return await retryWhileExecutionRpcIndexing(() => {\n return Promise.all(\n locators.map(async ({ txHash, logIndexes, receipt }) => {\n receipt ??= await executionClient.getTransactionReceipt({ hash: txHash });\n const requestedLogIndexes = logIndexes ?? [0];\n if (requestedLogIndexes.length === 0) {\n throw new Error(`At least one log index is required for receipt ${txHash}`);\n }\n\n return {\n receipt,\n requestedLogIndexes,\n } satisfies LoadedEthereumEventLocator;\n }),\n );\n });\n}\n\nexport async function loadExecutionHeader(\n executionClient: EthereumExecutionClient,\n blockTag: Hex | bigint,\n) {\n const blockData = await retryWhileExecutionRpcIndexing(() =>\n typeof blockTag === 'string'\n ? executionClient.request<EthGetBlockByHashRpc>({\n method: 'eth_getBlockByHash',\n params: [blockTag, true],\n })\n : executionClient.request<EthGetBlockByNumberRpc>({\n method: 'eth_getBlockByNumber',\n params: [toHex(blockTag), true],\n }),\n );\n const header = createBlockHeaderFromRPC(blockData);\n\n if (\n typeof blockTag === 'string' &&\n bytesToHex(header.hash()).toLowerCase() !== blockTag.toLowerCase()\n ) {\n throw new Error(`Execution header hash mismatch for block ${blockTag}`);\n }\n\n return header;\n}\n\nexport async function buildExecutionHeaderChain(\n executionClient: EthereumExecutionClient,\n targetHeader: BlockHeader,\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader,\n): Promise<{ blockHash: Hex; rlp: Hex }[]> {\n const targetBlockHash = bytesToHex(targetHeader.hash());\n\n if (targetHeader.number === argonFinalizedExecutionHeader.blockNumber) {\n if (targetBlockHash.toLowerCase() !== argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not the Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return [];\n }\n\n const headers: { blockHash: Hex; rlp: Hex }[] = [];\n let header = await loadExecutionHeader(executionClient, argonFinalizedExecutionHeader.blockHash);\n\n if (header.number !== argonFinalizedExecutionHeader.blockNumber) {\n throw new Error(\n `Execution header ${argonFinalizedExecutionHeader.blockHash} is not block ${argonFinalizedExecutionHeader.blockNumber}`,\n );\n }\n\n while (header.number > targetHeader.number) {\n header = await loadExecutionHeader(executionClient, bytesToHex(header.parentHash));\n headers.push({\n blockHash: bytesToHex(header.hash()),\n rlp: bytesToHex(header.serialize()),\n });\n }\n\n if (\n header.number !== targetHeader.number ||\n bytesToHex(header.hash()).toLowerCase() !== targetBlockHash.toLowerCase()\n ) {\n throw new ArgonFinalizedExecutionHeaderPathError(\n `Target block ${targetBlockHash} is not on the shared execution header chain to Argon finalized execution header ${argonFinalizedExecutionHeader.blockHash}`,\n );\n }\n\n return headers.reverse();\n}\n\nasync function buildCombinedReceiptProof(\n executionClient: EthereumExecutionClient,\n blockHash: Hex,\n transactionIndexes: number[],\n receiptsRoot: Hex,\n): Promise<EthereumReceiptProof> {\n const { receipts } = await retryWhileExecutionRpcIndexing(async () => {\n const block = await executionClient.getBlock({ blockHash });\n const receipts = await Promise.all(\n block.transactions.map(hash => executionClient.getTransactionReceipt({ hash })),\n );\n\n return { receipts };\n });\n\n const trie = await createMPT();\n\n for (const receipt of receipts) {\n await trie.put(\n encodeReceiptTrieKey(receipt.transactionIndex),\n encodeEthereumReceiptForProof(receipt),\n );\n }\n\n if (bytesToHex(trie.root()).toLowerCase() !== receiptsRoot.toLowerCase()) {\n throw new Error(`Receipt trie root mismatch for block ${blockHash}`);\n }\n\n const nodeIndexesByHex = new Map<Hex, number>();\n const sharedNodes: Hex[] = [];\n const proofReceipts = await Promise.all(\n transactionIndexes.map(async transactionIndex => {\n const key = encodeReceiptTrieKey(transactionIndex);\n const proof = await createMerkleProof(trie, key);\n const verifiedReceipt = await verifyMPTWithMerkleProof(trie, trie.root(), key, proof);\n\n if (!verifiedReceipt) {\n throw new Error(\n `Receipt proof verification failed for transaction index ${transactionIndex}`,\n );\n }\n\n return {\n transactionIndex,\n nodeIndexes: proof.map(node => {\n const hexNode = bytesToHex(node);\n const existingIndex = nodeIndexesByHex.get(hexNode);\n if (existingIndex !== undefined) {\n return existingIndex;\n }\n\n const nextIndex = sharedNodes.length;\n sharedNodes.push(hexNode);\n nodeIndexesByHex.set(hexNode, nextIndex);\n return nextIndex;\n }),\n } satisfies EthereumCombinedReceiptProofReceipt;\n }),\n );\n\n return {\n nodes: sharedNodes,\n receipts: proofReceipts,\n };\n}\n","import { createPublicClient, http } from 'viem';\n\nexport type EthereumReceipt = Awaited<\n ReturnType<ReturnType<typeof createPublicClient>['getTransactionReceipt']>\n>;\nexport type EthereumExecutionClient = ReturnType<typeof createPublicClient>;\n\nexport type EthereumExecutionSource = {\n executionRpcUrl?: string;\n executionClient?: EthereumExecutionClient;\n};\n\nconst executionClientsByUrl = new Map<string, EthereumExecutionClient>();\n\nexport function getExecutionClient(source: EthereumExecutionSource): EthereumExecutionClient {\n if (source.executionClient) {\n return source.executionClient;\n }\n if (source.executionRpcUrl) {\n const cached = executionClientsByUrl.get(source.executionRpcUrl);\n if (cached) {\n return cached;\n }\n\n const client = createPublicClient({ transport: http(source.executionRpcUrl) });\n executionClientsByUrl.set(source.executionRpcUrl, client);\n return client;\n }\n\n throw new Error('Ethereum event proof requires an execution client or execution RPC URL');\n}\n\nfunction getExecutionRpcErrorText(error: unknown): string {\n if (error instanceof Error) {\n return [\n error.message,\n 'details' in error && typeof error.details === 'string' ? error.details : undefined,\n ]\n .filter(Boolean)\n .join(' ');\n }\n\n return String(error);\n}\n\n// Dev/test execution RPCs can expose a fresh block before their receipt/log indexes catch up.\n// When that happens, recent reads may fail transiently with \"indexing is in progress\".\nexport async function retryWhileExecutionRpcIndexing<TResult>(\n request: () => Promise<TResult>,\n): Promise<TResult> {\n const startedAt = Date.now();\n let lastError: Error | undefined;\n\n while (Date.now() - startedAt < 30_000) {\n try {\n return await request();\n } catch (error) {\n const errorText = getExecutionRpcErrorText(error);\n if (!errorText.includes('indexing is in progress')) {\n throw error;\n }\n\n lastError = error instanceof Error ? error : new Error(errorText);\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n throw lastError ?? new Error('Timed out waiting for execution RPC indexing');\n}\n","import {\n mintingGatewayAbi,\n MintingGatewayEvents,\n type MintingGatewayGlobalIssuanceCouncilRotated,\n type MintingGatewayMintingAuthorityActivated,\n type MintingGatewayMintingAuthorityDeactivated,\n type MintingGatewayTransferOutOfArgonCanceled,\n type MintingGatewayTransferOutOfArgonFinalized,\n type MintingGatewayTransferToArgonStarted,\n} from './EvmContracts';\nimport { decodeEventLog, getAddress, type Hex } from 'viem';\nimport type { EthereumEventLog } from './EthereumProof';\n\ntype DecodedEthereumGatewayActivity =\n | ({\n kind: typeof MintingGatewayEvents.GlobalIssuanceCouncilRotated.name;\n } & MintingGatewayGlobalIssuanceCouncilRotated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityActivated.name;\n } & MintingGatewayMintingAuthorityActivated)\n | ({\n kind: typeof MintingGatewayEvents.MintingAuthorityDeactivated.name;\n } & MintingGatewayMintingAuthorityDeactivated)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonCanceled.name;\n } & MintingGatewayTransferOutOfArgonCanceled)\n | ({\n kind: typeof MintingGatewayEvents.TransferOutOfArgonFinalized.name;\n } & MintingGatewayTransferOutOfArgonFinalized)\n | ({\n kind: typeof MintingGatewayEvents.TransferToArgonStarted.name;\n } & MintingGatewayTransferToArgonStarted);\n\nexport type EthereumGatewayActivity = DecodedEthereumGatewayActivity & {\n txHash: Hex;\n transactionIndex: number;\n logIndex: number;\n blockHash: Hex;\n blockNumber: bigint;\n};\n\nconst gatewayActivityEvents = [\n MintingGatewayEvents.GlobalIssuanceCouncilRotated,\n MintingGatewayEvents.MintingAuthorityActivated,\n MintingGatewayEvents.MintingAuthorityDeactivated,\n MintingGatewayEvents.TransferOutOfArgonCanceled,\n MintingGatewayEvents.TransferOutOfArgonFinalized,\n MintingGatewayEvents.TransferToArgonStarted,\n] as const;\n\nexport function findEthereumTransferToArgonStartedLogIndexes(\n receipt: { transactionHash: Hex; logs: { address: Hex; topics: Hex[] }[] },\n gatewayAddress: Hex,\n): number[] {\n const normalizedGatewayAddress = getAddress(gatewayAddress).toLowerCase();\n const indexes = receipt.logs.flatMap((log, index) =>\n log.address.toLowerCase() === normalizedGatewayAddress &&\n log.topics[0]?.toLowerCase() === MintingGatewayEvents.TransferToArgonStarted.topic\n ? [index]\n : [],\n );\n\n if (indexes.length === 0) {\n throw new Error(\n `Ethereum receipt ${receipt.transactionHash} did not emit TransferToArgonStarted from gateway ${gatewayAddress}`,\n );\n }\n\n return indexes;\n}\n\nexport function decodeEthereumTransferToArgonStartedLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): MintingGatewayTransferToArgonStarted {\n const decoded = decodeEthereumGatewayActivityLog(log);\n if (decoded.kind !== MintingGatewayEvents.TransferToArgonStarted.name) {\n throw new Error(\n `Expected ${MintingGatewayEvents.TransferToArgonStarted.name} gateway activity log`,\n );\n }\n\n const { kind: _kind, ...transfer } = decoded;\n return transfer;\n}\n\nexport function decodeEthereumGatewayActivityLog(\n log: Pick<EthereumEventLog, 'topics' | 'data'>,\n): DecodedEthereumGatewayActivity {\n const topic = log.topics[0]?.toLowerCase();\n if (!topic) {\n throw new Error('Gateway activity log is missing an event signature topic');\n }\n\n const event = gatewayActivityEvents.find(candidate => candidate.topic === topic);\n if (!event) {\n throw new Error(`Unsupported gateway activity event topic ${topic}`);\n }\n\n const { args } = decodeEventLog({\n abi: mintingGatewayAbi,\n eventName: event.name,\n topics: log.topics as [Hex, ...Hex[]],\n data: log.data,\n strict: true,\n });\n\n return {\n kind: event.name,\n ...args,\n } as DecodedEthereumGatewayActivity;\n}\n","import { mintingGatewayAbi, type MintingGatewayActivityBlockLocator } from './EvmContracts';\nimport type { ArgonClient, IArgonQueryable } from './index';\nimport { getAddress, type Hex, toHex } from 'viem';\nimport {\n decodeEthereumGatewayActivityLog,\n type EthereumGatewayActivity,\n} from './EthereumGatewayActivity';\nimport {\n ArgonFinalizedExecutionHeaderPathError,\n buildExecutionHeaderChain,\n buildEthereumEventProof,\n type ArgonFinalizedExecutionHeader,\n type EthereumEventLocator,\n type EthereumEventLocatorBlock,\n type EthereumEventProof,\n getLatestArgonFinalizedExecutionHeader,\n loadExecutionHeader,\n} from './EthereumProof';\nimport {\n getExecutionClient,\n type EthereumExecutionClient,\n type EthereumExecutionSource,\n retryWhileExecutionRpcIndexing,\n} from './EthereumExecution';\n\nexport type EthereumGatewayActivityProofPayload = {\n previousGatewayActivityNonce: bigint;\n proof: EthereumEventProof;\n gatewayActivityNonceRange: {\n start: bigint;\n end: bigint;\n };\n executionBlockNumberRange: {\n start: bigint;\n end: bigint;\n };\n activities: EthereumGatewayActivity[];\n};\n\ntype DiscoveredGatewayActivities = Pick<\n EthereumGatewayActivityProofPayload,\n 'previousGatewayActivityNonce' | 'activities'\n>;\n\ntype GatewayActivityProofChunk = {\n activities: EthereumGatewayActivity[];\n locatorBlock: EthereumEventLocatorBlock;\n};\n\ntype GatewayProofBounds = {\n activitiesPerReceiptProof: number;\n receiptProofsPerExtrinsic: number;\n sharedHeaderDepth: number;\n};\n\ntype ArgonFinalizedExecutionHeaderPlan = {\n argonFinalizedExecutionHeader: ArgonFinalizedExecutionHeader;\n earliestTargetHeader: Awaited<ReturnType<typeof loadExecutionHeader>>;\n targetToArgonFinalizedHeaderChain: Awaited<ReturnType<typeof buildExecutionHeaderChain>>;\n};\n\ntype EthereumBlockLog = Awaited<ReturnType<EthereumExecutionClient['getLogs']>>[number];\n\nexport async function buildGatewayActivityProofPayload(\n client: IArgonQueryable & Pick<ArgonClient, 'consts'>,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<EthereumGatewayActivityProofPayload | null> {\n const bounds = getGatewayProofBounds(client);\n const discovered = await discoverGatewayActivities(client, options);\n if (!discovered) {\n return null;\n }\n\n const executionClient = getExecutionClient(options);\n const proofChunks = chunkGatewayActivitiesForProof(\n discovered.activities,\n bounds.activitiesPerReceiptProof,\n );\n const argonFinalizedExecutionHeaderPlan = await selectArgonFinalizedExecutionHeader(\n client,\n executionClient,\n proofChunks[0],\n bounds.sharedHeaderDepth,\n );\n if (!argonFinalizedExecutionHeaderPlan) {\n return null;\n }\n\n const acceptedProofChunks = await collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient,\n proofChunks,\n argonFinalizedExecutionHeaderPlan,\n bounds.receiptProofsPerExtrinsic,\n );\n if (acceptedProofChunks.length === 0) {\n return null;\n }\n\n const acceptedActivities = acceptedProofChunks.flatMap(({ activities }) => activities);\n const proof = await buildEthereumEventProof(\n options,\n argonFinalizedExecutionHeaderPlan.argonFinalizedExecutionHeader,\n acceptedProofChunks.map(({ locatorBlock }) => locatorBlock),\n );\n\n return {\n previousGatewayActivityNonce: discovered.previousGatewayActivityNonce,\n proof,\n gatewayActivityNonceRange: {\n start: acceptedActivities[0].gatewayState.gatewayActivityNonce,\n end: acceptedActivities.at(-1)!.gatewayState.gatewayActivityNonce,\n },\n executionBlockNumberRange: {\n start: acceptedActivities[0].blockNumber,\n end: acceptedActivities.at(-1)!.blockNumber,\n },\n activities: acceptedActivities,\n };\n}\n\nasync function loadActivityBlockLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locatorIndex: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<MintingGatewayActivityBlockLocator> {\n const cached = cache.get(locatorIndex);\n if (cached) {\n return cached;\n }\n\n const locator = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'activityBlockLocators',\n args: [locatorIndex],\n });\n const [blockNumber, startGatewayActivityNonce, endGatewayActivityNonce] = locator;\n const loaded: MintingGatewayActivityBlockLocator = {\n blockNumber,\n startGatewayActivityNonce,\n endGatewayActivityNonce,\n };\n cache.set(locatorIndex, loaded);\n return loaded;\n}\n\nasync function findFirstUncoveredActivityBlockLocatorIndex(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n latestLocatorIndex: bigint,\n previousGatewayActivityNonce: bigint,\n cache: Map<bigint, MintingGatewayActivityBlockLocator>,\n): Promise<bigint | null> {\n let low = 1n;\n let high = latestLocatorIndex;\n let firstUncoveredIndex: bigint | null = null;\n\n while (low <= high) {\n const middle = (low + high) / 2n;\n const locator = await loadActivityBlockLocator(executionClient, gatewayAddress, middle, cache);\n\n if (locator.endGatewayActivityNonce > previousGatewayActivityNonce) {\n firstUncoveredIndex = middle;\n high = middle - 1n;\n continue;\n }\n\n low = middle + 1n;\n }\n\n return firstUncoveredIndex;\n}\n\nasync function discoverGatewayActivities(\n client: IArgonQueryable,\n options: EthereumExecutionSource & {\n gatewayAddress: Hex;\n throughExecutionBlockNumber?: bigint;\n },\n): Promise<DiscoveredGatewayActivities | null> {\n const executionClient = getExecutionClient(options);\n const gatewayAddress = getAddress(options.gatewayAddress);\n const latestLocatorIndex = await executionClient.readContract({\n abi: mintingGatewayAbi,\n address: gatewayAddress,\n functionName: 'latestActivityBlockLocatorIndex',\n });\n if (latestLocatorIndex === 0n) {\n return null;\n }\n\n const currentGatewayState =\n await client.query.crosschainTransfer.gatewayStateBySourceChain('Ethereum');\n const previousGatewayActivityNonce = currentGatewayState.isSome\n ? currentGatewayState.unwrap().gatewayActivityNonce.toBigInt()\n : 0n;\n const locatorCache = new Map<bigint, MintingGatewayActivityBlockLocator>();\n const firstLocatorIndex = await findFirstUncoveredActivityBlockLocatorIndex(\n executionClient,\n gatewayAddress,\n latestLocatorIndex,\n previousGatewayActivityNonce,\n locatorCache,\n );\n if (!firstLocatorIndex) {\n return null;\n }\n\n const activities: EthereumGatewayActivity[] = [];\n let expectedGatewayActivityNonce = previousGatewayActivityNonce + 1n;\n\n for (\n let locatorIndex = firstLocatorIndex;\n locatorIndex <= latestLocatorIndex;\n locatorIndex += 1n\n ) {\n const locator = await loadActivityBlockLocator(\n executionClient,\n gatewayAddress,\n locatorIndex,\n locatorCache,\n );\n if (\n options.throughExecutionBlockNumber !== undefined &&\n locator.blockNumber > options.throughExecutionBlockNumber\n ) {\n break;\n }\n if (locator.endGatewayActivityNonce < expectedGatewayActivityNonce) {\n continue;\n }\n\n const blockActivities = await loadGatewayActivitiesForLocator(\n executionClient,\n gatewayAddress,\n locator,\n expectedGatewayActivityNonce,\n );\n activities.push(...blockActivities);\n expectedGatewayActivityNonce = locator.endGatewayActivityNonce + 1n;\n }\n\n if (activities.length === 0) {\n return null;\n }\n\n return {\n previousGatewayActivityNonce,\n activities,\n };\n}\n\nasync function loadGatewayActivitiesForLocator(\n executionClient: EthereumExecutionClient,\n gatewayAddress: Hex,\n locator: MintingGatewayActivityBlockLocator,\n expectedGatewayActivityNonce: bigint,\n): Promise<EthereumGatewayActivity[]> {\n const blockLogs = await retryWhileExecutionRpcIndexing(() =>\n executionClient.getLogs({\n address: gatewayAddress,\n fromBlock: locator.blockNumber,\n toBlock: locator.blockNumber,\n }),\n );\n const activities = blockLogs\n .flatMap(log => {\n try {\n return [toEthereumGatewayActivity(log)];\n } catch {\n return [];\n }\n })\n .sort((left, right) =>\n left.gatewayState.gatewayActivityNonce < right.gatewayState.gatewayActivityNonce ? -1 : 1,\n );\n const remainingActivities = activities.filter(\n activity =>\n activity.gatewayState.gatewayActivityNonce >= expectedGatewayActivityNonce &&\n activity.gatewayState.gatewayActivityNonce <= locator.endGatewayActivityNonce,\n );\n if (\n remainingActivities.length === 0 ||\n remainingActivities[0].gatewayState.gatewayActivityNonce !== expectedGatewayActivityNonce\n ) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n let previousNonce = expectedGatewayActivityNonce - 1n;\n for (const activity of remainingActivities) {\n if (activity.gatewayState.gatewayActivityNonce !== previousNonce + 1n) {\n throw new Error(\n `Gateway block ${locator.blockNumber} contains a gap in gateway activity coverage`,\n );\n }\n previousNonce = activity.gatewayState.gatewayActivityNonce;\n }\n\n if (previousNonce !== locator.endGatewayActivityNonce) {\n throw new Error(`Gateway block ${locator.blockNumber} contains uncovered gateway activity`);\n }\n\n return remainingActivities;\n}\n\nfunction toEthereumGatewayActivity(log: EthereumBlockLog): EthereumGatewayActivity {\n if (\n !log.transactionHash ||\n log.transactionIndex == null ||\n log.logIndex == null ||\n !log.blockHash ||\n log.blockNumber == null\n ) {\n throw new Error('Execution log is missing indexed receipt metadata');\n }\n\n return {\n txHash: log.transactionHash,\n transactionIndex: Number(log.transactionIndex),\n logIndex: Number(log.logIndex),\n blockHash: log.blockHash,\n blockNumber: log.blockNumber,\n ...decodeEthereumGatewayActivityLog(log),\n };\n}\n\nfunction chunkGatewayActivitiesForProof(\n activities: EthereumGatewayActivity[],\n maxActivitiesPerReceiptProof: number,\n): GatewayActivityProofChunk[] {\n const chunks: GatewayActivityProofChunk[] = [];\n let currentBlockHash: Hex | undefined;\n let currentBlockActivities: EthereumGatewayActivity[] = [];\n\n const flushBlock = () => {\n if (!currentBlockHash || currentBlockActivities.length === 0) {\n return;\n }\n\n for (\n let start = 0;\n start < currentBlockActivities.length;\n start += maxActivitiesPerReceiptProof\n ) {\n const chunkActivities = currentBlockActivities.slice(\n start,\n start + maxActivitiesPerReceiptProof,\n );\n const locatorsByReceipt = new Map<Hex, EthereumEventLocator>();\n\n for (const activity of chunkActivities) {\n const existing = locatorsByReceipt.get(activity.txHash);\n if (existing) {\n existing.logIndexes!.push(activity.logIndex);\n continue;\n }\n\n locatorsByReceipt.set(activity.txHash, {\n txHash: activity.txHash,\n logIndexes: [activity.logIndex],\n });\n }\n\n chunks.push({\n activities: chunkActivities,\n locatorBlock: [...locatorsByReceipt.values()],\n });\n }\n };\n\n for (const activity of activities) {\n if (currentBlockHash && activity.blockHash.toLowerCase() !== currentBlockHash.toLowerCase()) {\n flushBlock();\n currentBlockActivities = [];\n }\n\n currentBlockHash = activity.blockHash;\n currentBlockActivities.push(activity);\n }\n\n flushBlock();\n return chunks;\n}\n\nfunction getGatewayProofBounds(client: Pick<ArgonClient, 'consts'>): GatewayProofBounds {\n const activitiesPerReceiptProof =\n client.consts.crosschainTransfer.maxActivitiesPerReceiptProof.toNumber();\n if (!Number.isInteger(activitiesPerReceiptProof) || activitiesPerReceiptProof < 1) {\n throw new Error('Gateway proof requires maxActivitiesPerReceiptProof to be a positive integer');\n }\n\n const receiptProofsPerExtrinsic =\n client.consts.crosschainTransfer.maxReceiptProofsPerExtrinsic.toNumber();\n if (!Number.isInteger(receiptProofsPerExtrinsic) || receiptProofsPerExtrinsic < 1) {\n throw new Error('Gateway proof requires maxReceiptProofsPerExtrinsic to be a positive integer');\n }\n\n return {\n activitiesPerReceiptProof,\n receiptProofsPerExtrinsic,\n sharedHeaderDepth: client.consts.crosschainTransfer.maxProofExecutionHeaderDepth.toNumber(),\n };\n}\n\nasync function selectArgonFinalizedExecutionHeader(\n client: IArgonQueryable,\n executionClient: EthereumExecutionClient,\n earliestProofChunk: GatewayActivityProofChunk,\n sharedHeaderDepth: number,\n): Promise<ArgonFinalizedExecutionHeaderPlan | null> {\n const earliestBlockHash = earliestProofChunk.activities[0].blockHash;\n const earliestBlockNumber = earliestProofChunk.activities[0].blockNumber;\n const earliestTargetHeader = await loadExecutionHeader(executionClient, earliestBlockHash);\n const latestArgonFinalizedExecutionHeader = await getLatestArgonFinalizedExecutionHeader(client);\n\n if (earliestBlockNumber > latestArgonFinalizedExecutionHeader.blockNumber) {\n return null;\n }\n\n const maxArgonFinalizedExecutionHeaderBlockNumber =\n earliestBlockNumber + BigInt(sharedHeaderDepth);\n\n if (\n latestArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n try {\n return {\n argonFinalizedExecutionHeader: latestArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n latestArgonFinalizedExecutionHeader,\n ),\n };\n } catch (error) {\n if (!(error instanceof ArgonFinalizedExecutionHeaderPathError)) {\n throw error;\n }\n }\n }\n\n const scannedArgonFinalizedExecutionHeader =\n await loadRetainedExecutionHeaderAnchorAtOrAfterBlock(client, earliestBlockNumber);\n if (\n scannedArgonFinalizedExecutionHeader &&\n scannedArgonFinalizedExecutionHeader.blockNumber <= maxArgonFinalizedExecutionHeaderBlockNumber\n ) {\n return {\n argonFinalizedExecutionHeader: scannedArgonFinalizedExecutionHeader,\n earliestTargetHeader,\n targetToArgonFinalizedHeaderChain: await buildExecutionHeaderChain(\n executionClient,\n earliestTargetHeader,\n scannedArgonFinalizedExecutionHeader,\n ),\n };\n }\n\n throw new Error(\n 'Oldest uncovered gateway activity exceeds the Argon finalized execution-header window',\n );\n}\n\nasync function loadRetainedExecutionHeaderAnchorAtOrAfterBlock(\n client: IArgonQueryable,\n earliestBlockNumber: bigint,\n): Promise<ArgonFinalizedExecutionHeader | null> {\n // The runtime stores this index under `block_number.to_be_bytes()`, so a fixed-width hex key\n // preserves the same big-endian ordering here. We first try the exact block number, then seek\n // to the first later retained key when that exact anchor is not present.\n const scanBlockNumberKey = toHex(earliestBlockNumber, { size: 8 });\n const executionHeaderAnchorsByBlockNumber =\n client.query.ethereumVerifier.executionHeaderAnchorsByBlockNumber;\n const exactAnchor = await executionHeaderAnchorsByBlockNumber(scanBlockNumberKey);\n const matchingEntry = exactAnchor.isSome\n ? exactAnchor\n : (\n await executionHeaderAnchorsByBlockNumber.entriesPaged({\n args: [],\n pageSize: 1,\n startKey: executionHeaderAnchorsByBlockNumber.key(scanBlockNumberKey),\n })\n )[0]?.[1];\n const scannedAnchor = matchingEntry?.isSome ? matchingEntry.unwrap() : null;\n\n if (!scannedAnchor) {\n return null;\n }\n\n return {\n blockHash: scannedAnchor.blockHash.toHex(),\n blockNumber: scannedAnchor.blockNumber.toBigInt(),\n };\n}\n\nasync function collectProofChunksForArgonFinalizedExecutionHeader(\n executionClient: EthereumExecutionClient,\n proofChunks: GatewayActivityProofChunk[],\n plan: ArgonFinalizedExecutionHeaderPlan,\n receiptProofsPerExtrinsic: number,\n): Promise<GatewayActivityProofChunk[]> {\n const acceptedProofChunks: GatewayActivityProofChunk[] = [];\n const loadedTargetHeaders = [\n {\n blockHash: proofChunks[0].activities[0].blockHash,\n targetHeader: plan.earliestTargetHeader,\n },\n ];\n\n for (const proofChunk of proofChunks) {\n if (acceptedProofChunks.length === receiptProofsPerExtrinsic) {\n break;\n }\n\n const blockHash = proofChunk.activities[0].blockHash;\n const blockNumber = proofChunk.activities[0].blockNumber;\n\n if (blockNumber > plan.argonFinalizedExecutionHeader.blockNumber) {\n break;\n }\n\n let targetHeader = loadedTargetHeaders.find(\n loadedHeader => loadedHeader.blockHash.toLowerCase() === blockHash.toLowerCase(),\n )?.targetHeader;\n if (!targetHeader) {\n targetHeader = await loadExecutionHeader(executionClient, blockHash);\n loadedTargetHeaders.push({ blockHash, targetHeader });\n }\n\n if (targetHeader.number === plan.argonFinalizedExecutionHeader.blockNumber) {\n if (blockHash.toLowerCase() !== plan.argonFinalizedExecutionHeader.blockHash.toLowerCase()) {\n break;\n }\n } else {\n const expectedTargetHeaderOnArgonFinalizedChain =\n plan.targetToArgonFinalizedHeaderChain[\n Number(targetHeader.number - plan.earliestTargetHeader.number)\n ];\n if (\n !expectedTargetHeaderOnArgonFinalizedChain ||\n expectedTargetHeaderOnArgonFinalizedChain.blockHash.toLowerCase() !==\n blockHash.toLowerCase()\n ) {\n break;\n }\n }\n\n acceptedProofChunks.push(proofChunk);\n }\n\n return acceptedProofChunks;\n}\n","import camelcaseKeys from 'camelcase-keys';\nimport type { SubmittableExtrinsic } from '@polkadot/api/promise/types';\nimport type {\n EthereumBeaconConfigSpecResponse,\n EthereumBeaconGenesisResponse,\n EthereumBeaconHeaderDetailsResponse,\n EthereumLightClientBootstrapResponse,\n EthereumLightClientHeader,\n EthereumLightClientUpdate,\n EthereumLightClientUpdatesResponse,\n} from './EthereumBeaconTypes';\nimport type { ArgonClient } from './index';\nimport { type Hex, hexToBytes } from 'viem';\n\ntype BeaconPreset = 'mainnet' | 'minimal';\ntype BeaconNetworkParams = {\n epochsPerSyncCommitteePeriod: bigint;\n preset: BeaconPreset;\n slotsPerEpoch: bigint;\n};\ntype EthereumBeaconSyncState =\n | {\n isBootstrapped: false;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n }\n | {\n isBootstrapped: true;\n hasNextSyncCommittee: boolean;\n latestFinalizedBlockRoot: string;\n latestFinalizedSlot: bigint;\n nextRecommendedFinalizedSlot: bigint;\n latestSyncCommitteeUpdatePeriod: bigint;\n headerInterval: bigint;\n };\n\nconst lightClientUpdateRetryIntervalMs = 500;\nconst lightClientUpdateRetryTimeoutMs = 30_000;\nconst expectedBeaconPresetPromises = new WeakMap<ArgonClient, Promise<BeaconPreset | undefined>>();\nconst beaconNetworkParamsPromises = new Map<string, Promise<BeaconNetworkParams>>();\n\nexport async function getEthereumBeaconSyncBootstrapTx(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic> {\n const expectedPreset = await getExpectedBeaconPreset(client);\n const [genesis, spec] = await Promise.all([\n getBeaconJson<EthereumBeaconGenesisResponse>(beaconApiUrl, '/eth/v1/beacon/genesis'),\n getBeaconJson<EthereumBeaconConfigSpecResponse>(beaconApiUrl, '/eth/v1/config/spec'),\n ]);\n const specData = spec.data;\n parseBeaconNetworkParams(specData, expectedPreset);\n const startedAt = Date.now();\n let lastError: Error | undefined;\n let bootstrap: EthereumLightClientBootstrapResponse | undefined;\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n try {\n const finalizedHeader = await getBeaconJson<EthereumBeaconHeaderDetailsResponse>(\n beaconApiUrl,\n '/eth/v1/beacon/headers/finalized',\n );\n bootstrap = await getBeaconJson<EthereumLightClientBootstrapResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/bootstrap/${finalizedHeader.data.root}`,\n );\n lastError = undefined;\n break;\n } catch (error) {\n if (!(error instanceof Error)) {\n throw error;\n }\n lastError = error;\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n }\n }\n\n if (!bootstrap) {\n throw (\n lastError ??\n new Error('Unable to fetch ethereum beacon bootstrap before the retry timeout elapsed')\n );\n }\n\n return client.tx.ethereumVerifier.forceCheckpoint(\n {\n header: camelcaseKeys(bootstrap.data.header.beacon),\n currentSyncCommittee: camelcaseKeys(bootstrap.data.current_sync_committee),\n currentSyncCommitteeBranch: bootstrap.data.current_sync_committee_branch,\n validatorsRoot: genesis.data.genesis_validators_root,\n executionHeaderProof: buildExecutionHeaderProof(bootstrap.data.header),\n },\n {\n genesis: {\n version: genesis.data.genesis_fork_version,\n epoch: 0n,\n },\n altair: buildFork(specData, 'ALTAIR'),\n bellatrix: buildFork(specData, 'BELLATRIX'),\n capella: buildFork(specData, 'CAPELLA'),\n deneb: buildFork(specData, 'DENEB'),\n electra: buildFork(specData, 'ELECTRA'),\n fulu: buildFork(specData, 'FULU'),\n },\n );\n}\n\nexport async function getNextEthereumBeaconSyncTxs(\n client: ArgonClient,\n beaconApiUrl: string,\n): Promise<SubmittableExtrinsic[]> {\n const state = await getEthereumBeaconSyncState(client);\n\n if (!state.isBootstrapped) {\n return [];\n }\n\n const expectedPreset = await getExpectedBeaconPreset(client);\n const beaconNetworkParams = await getBeaconNetworkParams(beaconApiUrl, expectedPreset);\n const storedPeriod = computePeriod(state.latestFinalizedSlot, beaconNetworkParams);\n const txs: SubmittableExtrinsic[] = [];\n const startedAt = Date.now();\n\n while (Date.now() - startedAt < lightClientUpdateRetryTimeoutMs) {\n let finalityUpdate: EthereumLightClientUpdate;\n\n try {\n finalityUpdate = (\n await getBeaconJson<{ data: EthereumLightClientUpdate }>(\n beaconApiUrl,\n '/eth/v1/beacon/light_client/finality_update',\n )\n ).data;\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const missingNextSyncCommittee = !state.hasNextSyncCommittee;\n const finalityFinalizedPeriod = computePeriod(\n BigInt(finalityUpdate.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n const requiredCommitteePeriod = getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod: state.latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n });\n const needsCommitteeData = requiredCommitteePeriod !== undefined;\n const finalityCarriesRequiredCommittee = updateCarriesCommitteeForPeriod(\n finalityUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n );\n const needsCurrentPeriodUpdate =\n requiredCommitteePeriod !== undefined &&\n (missingNextSyncCommittee || !finalityCarriesRequiredCommittee);\n let submitUpdate: EthereumLightClientUpdate | undefined = finalityUpdate;\n\n if (needsCommitteeData && needsCurrentPeriodUpdate) {\n let periodUpdates: EthereumLightClientUpdatesResponse;\n\n try {\n periodUpdates = await getBeaconJson<EthereumLightClientUpdatesResponse>(\n beaconApiUrl,\n `/eth/v1/beacon/light_client/updates?count=1&start_period=${requiredCommitteePeriod}`,\n );\n } catch (error) {\n if (!isRetryableBeaconLightClientError(error)) {\n throw error;\n }\n\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n const currentPeriodUpdate = periodUpdates[0]?.data;\n if (\n updateCarriesCommitteeForPeriod(\n currentPeriodUpdate,\n requiredCommitteePeriod,\n beaconNetworkParams,\n )\n ) {\n submitUpdate = currentPeriodUpdate;\n } else {\n submitUpdate = undefined;\n }\n }\n\n if (needsCommitteeData && needsCurrentPeriodUpdate && !submitUpdate) {\n return [];\n }\n\n // make sure the update we choose has a supermajority of sync committee participants\n if (\n submitUpdate &&\n !hasSyncCommitteeSupermajority(submitUpdate.sync_aggregate.sync_committee_bits)\n ) {\n await new Promise(resolve => setTimeout(resolve, lightClientUpdateRetryIntervalMs));\n continue;\n }\n\n if (submitUpdate) {\n const finalizedSlot = BigInt(submitUpdate.finalized_header.beacon.slot);\n const attestedSlot = BigInt(submitUpdate.attested_header.beacon.slot);\n\n const finalizedPeriod = computePeriod(finalizedSlot, beaconNetworkParams);\n const attestedPeriod = computePeriod(attestedSlot, beaconNetworkParams);\n\n const isNewerThanStoredFinalized = finalizedSlot > state.latestFinalizedSlot;\n const hasReachedNextFinalizedWindow = finalizedSlot >= state.nextRecommendedFinalizedSlot;\n const canAdvanceFinalized = isNewerThanStoredFinalized && hasReachedNextFinalizedWindow;\n const advancesSyncCommitteePeriod = finalizedPeriod > state.latestSyncCommitteeUpdatePeriod;\n const canUseNextSyncCommittee = missingNextSyncCommittee || advancesSyncCommitteePeriod;\n const includesNextSyncCommittee =\n hasNextSyncCommitteeUpdate(submitUpdate) && canUseNextSyncCommittee;\n const fillsMissingNextSyncCommittee =\n missingNextSyncCommittee && includesNextSyncCommittee && attestedPeriod === storedPeriod;\n const advancesKnownSyncCommitteePeriod =\n !missingNextSyncCommittee && includesNextSyncCommittee;\n\n if (\n canAdvanceFinalized ||\n fillsMissingNextSyncCommittee ||\n advancesKnownSyncCommitteePeriod\n ) {\n const nextSyncCommitteeUpdate = includesNextSyncCommittee\n ? {\n nextSyncCommitteeUpdate: {\n nextSyncCommittee: camelcaseKeys(submitUpdate.next_sync_committee!),\n nextSyncCommitteeBranch: submitUpdate.next_sync_committee_branch!,\n },\n }\n : {};\n txs.push(\n client.tx.ethereumVerifier.submit({\n attestedHeader: camelcaseKeys(submitUpdate.attested_header.beacon),\n syncAggregate: camelcaseKeys(submitUpdate.sync_aggregate),\n signatureSlot: submitUpdate.signature_slot,\n ...nextSyncCommitteeUpdate,\n finalizedHeader: camelcaseKeys(submitUpdate.finalized_header.beacon),\n finalityBranch: submitUpdate.finality_branch,\n executionHeaderProof: buildExecutionHeaderProof(submitUpdate.finalized_header),\n }),\n );\n }\n }\n\n break;\n }\n\n return txs;\n}\n\nexport async function getEthereumBeaconSyncState(\n client: ArgonClient,\n): Promise<EthereumBeaconSyncState> {\n const latestFinalizedBlockRoot = (await client.query.ethereumVerifier.latestFinalizedBlockRoot())\n .toHex()\n .toLowerCase();\n const finalizedState =\n await client.query.ethereumVerifier.finalizedBeaconState(latestFinalizedBlockRoot);\n const latestSyncCommitteeUpdatePeriod = (\n await client.query.ethereumVerifier.latestSyncCommitteeUpdatePeriod()\n ).toBigInt();\n const headerInterval = client.consts.ethereumVerifier.freeHeadersInterval.toBigInt();\n const hasNextSyncCommittee = !(\n await client.query.ethereumVerifier.nextSyncCommittee.size()\n ).isZero();\n\n if (finalizedState.isNone) {\n return {\n isBootstrapped: false,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n }\n\n const latestFinalizedSlot = finalizedState.unwrap().slot.toBigInt();\n\n return {\n isBootstrapped: true,\n hasNextSyncCommittee,\n latestFinalizedBlockRoot,\n latestFinalizedSlot,\n nextRecommendedFinalizedSlot: latestFinalizedSlot + headerInterval,\n latestSyncCommitteeUpdatePeriod,\n headerInterval,\n };\n}\n\nfunction buildExecutionHeaderProof(finalizedHeader: EthereumLightClientHeader) {\n return {\n executionHeader: buildExecutionPayloadHeader(finalizedHeader.execution),\n executionBranch: finalizedHeader.execution_branch.map(witness => witness.toLowerCase() as Hex),\n };\n}\n\nfunction buildFork(spec: Record<string, string>, name: string) {\n const version = spec[`${name}_FORK_VERSION`];\n const epoch = spec[`${name}_FORK_EPOCH`];\n\n if (!version) throw new Error(`Missing beacon spec value for ${name}_FORK_VERSION`);\n if (!epoch) throw new Error(`Missing beacon spec value for ${name}_FORK_EPOCH`);\n\n return {\n version,\n epoch: BigInt(epoch),\n };\n}\n\nfunction hasNextSyncCommitteeUpdate(\n update?: Pick<EthereumLightClientUpdate, 'next_sync_committee' | 'next_sync_committee_branch'>,\n): boolean {\n return !!update?.next_sync_committee && !!update?.next_sync_committee_branch;\n}\n\nfunction getRequiredCommitteePeriod({\n storedPeriod,\n missingNextSyncCommittee,\n latestSyncCommitteeUpdatePeriod,\n finalityFinalizedPeriod,\n}: {\n storedPeriod: bigint;\n missingNextSyncCommittee: boolean;\n latestSyncCommitteeUpdatePeriod: bigint;\n finalityFinalizedPeriod: bigint;\n}): bigint | undefined {\n if (missingNextSyncCommittee) {\n return storedPeriod;\n }\n\n if (finalityFinalizedPeriod > latestSyncCommitteeUpdatePeriod) {\n return latestSyncCommitteeUpdatePeriod + 1n;\n }\n\n return undefined;\n}\n\nfunction updateCarriesCommitteeForPeriod(\n update: EthereumLightClientUpdate | undefined,\n requiredCommitteePeriod: bigint | undefined,\n beaconNetworkParams: BeaconNetworkParams,\n): boolean {\n if (!update || requiredCommitteePeriod === undefined || !hasNextSyncCommitteeUpdate(update)) {\n return false;\n }\n\n const attestedPeriod = computePeriod(\n BigInt(update.attested_header.beacon.slot),\n beaconNetworkParams,\n );\n const finalizedPeriod = computePeriod(\n BigInt(update.finalized_header.beacon.slot),\n beaconNetworkParams,\n );\n\n return attestedPeriod === requiredCommitteePeriod && finalizedPeriod === requiredCommitteePeriod;\n}\n\nfunction buildExecutionPayloadHeader(header: EthereumLightClientHeader['execution']) {\n const executionHeader = {\n parentHash: header.parent_hash,\n feeRecipient: header.fee_recipient,\n stateRoot: header.state_root,\n receiptsRoot: header.receipts_root,\n logsBloom: header.logs_bloom,\n prevRandao: header.prev_randao,\n blockNumber: header.block_number,\n gasLimit: header.gas_limit,\n gasUsed: header.gas_used,\n timestamp: header.timestamp,\n extraData: header.extra_data,\n baseFeePerGas: header.base_fee_per_gas,\n blockHash: header.block_hash,\n transactionsRoot: header.transactions_root,\n withdrawalsRoot: header.withdrawals_root,\n };\n\n if (header.blob_gas_used && header.excess_blob_gas) {\n return {\n Deneb: {\n ...executionHeader,\n blobGasUsed: header.blob_gas_used,\n excessBlobGas: header.excess_blob_gas,\n },\n };\n }\n\n return { Capella: executionHeader };\n}\n\nfunction detectBeaconPreset(spec: Record<string, string>): BeaconPreset {\n return spec.SLOTS_PER_HISTORICAL_ROOT === '64' ? 'minimal' : 'mainnet';\n}\n\nasync function getBeaconNetworkParams(\n beaconApiUrl: string,\n expectedPreset?: BeaconPreset,\n): Promise<BeaconNetworkParams> {\n let paramsPromise = beaconNetworkParamsPromises.get(beaconApiUrl);\n\n if (!paramsPromise) {\n paramsPromise = getBeaconJson<EthereumBeaconConfigSpecResponse>(\n beaconApiUrl,\n '/eth/v1/config/spec',\n ).then(({ data }) => parseBeaconNetworkParams(data));\n beaconNetworkParamsPromises.set(beaconApiUrl, paramsPromise);\n }\n\n const beaconNetworkParams = await paramsPromise;\n\n if (beaconNetworkParams.preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${beaconNetworkParams.preset}`,\n );\n }\n\n return beaconNetworkParams;\n}\n\nfunction parseBeaconNetworkParams(\n spec: Record<string, string>,\n expectedPreset?: BeaconPreset,\n): BeaconNetworkParams {\n const slotsPerEpoch = spec.SLOTS_PER_EPOCH;\n const epochsPerSyncCommitteePeriod = spec.EPOCHS_PER_SYNC_COMMITTEE_PERIOD;\n\n if (!slotsPerEpoch) {\n throw new Error('Missing beacon spec value for SLOTS_PER_EPOCH');\n }\n if (!epochsPerSyncCommitteePeriod) {\n throw new Error('Missing beacon spec value for EPOCHS_PER_SYNC_COMMITTEE_PERIOD');\n }\n\n const preset = detectBeaconPreset(spec);\n\n if (expectedPreset && preset !== expectedPreset) {\n throw new Error(\n `Beacon preset mismatch: chain expects ${expectedPreset}, but endpoint reports ${preset}`,\n );\n }\n\n return {\n preset,\n slotsPerEpoch: BigInt(slotsPerEpoch),\n epochsPerSyncCommitteePeriod: BigInt(epochsPerSyncCommitteePeriod),\n };\n}\n\nasync function getExpectedBeaconPreset(client: ArgonClient): Promise<BeaconPreset | undefined> {\n let presetPromise = expectedBeaconPresetPromises.get(client);\n\n if (!presetPromise) {\n const beaconPresetQuery = (\n client.query.ethereumVerifier as {\n beaconPreset?: () => Promise<{\n isMainnet: boolean;\n isMinimal: boolean;\n toString(): string;\n }>;\n }\n ).beaconPreset;\n\n if (!beaconPresetQuery) {\n return;\n }\n\n presetPromise = beaconPresetQuery.call(client.query.ethereumVerifier).then(preset => {\n if (preset.isMainnet) {\n return 'mainnet';\n }\n if (preset.isMinimal) {\n return 'minimal';\n }\n\n throw new Error(`Unknown ethereum verifier beacon preset: ${preset.toString()}`);\n });\n expectedBeaconPresetPromises.set(client, presetPromise);\n }\n\n try {\n return await presetPromise;\n } catch (error) {\n expectedBeaconPresetPromises.delete(client);\n throw error;\n }\n}\n\nfunction computePeriod(slot: bigint, beaconNetworkParams: BeaconNetworkParams) {\n return (\n slot / beaconNetworkParams.slotsPerEpoch / beaconNetworkParams.epochsPerSyncCommitteePeriod\n );\n}\n\nfunction hasSyncCommitteeSupermajority(syncCommitteeBits: string) {\n const bytes = hexToBytes(syncCommitteeBits as Hex);\n const totalBits = bytes.length * 8;\n const participants = bytes.reduce((total, byte) => {\n let count = 0;\n\n for (let value = byte; value > 0; value >>= 1) {\n count += value & 1;\n }\n\n return total + count;\n }, 0);\n\n return participants * 3 >= totalBits * 2;\n}\n\nasync function getBeaconJson<T>(beaconApiUrl: string, path: string): Promise<T> {\n const response = await fetch(\n new URL(path, beaconApiUrl.endsWith('/') ? beaconApiUrl : `${beaconApiUrl}/`),\n );\n\n if (!response.ok) {\n throw new Error(\n `Beacon API request failed for ${path}: ${response.status} ${response.statusText}`,\n );\n }\n\n return (await response.json()) as T;\n}\n\nfunction isRetryableBeaconLightClientError(error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n\n return (\n message.includes('/eth/v1/beacon/light_client/') &&\n (message.includes(': 404') || message.includes(': 500'))\n );\n}\n"]}
|