Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Loading...
Loading
There are no matching entries
Please try again later
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method |
Block
|
From
|
To
|
Amount
|
||
|---|---|---|---|---|---|---|---|
| 0x61010060 | 11667702 | 44 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"HookNotImplemented","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"MalformedHookData","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"NotOfficialPath","type":"error"},{"inputs":[],"name":"NotPoolManager","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotSettlementExecutor","type":"error"},{"inputs":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"}],"name":"NotTheSettlementShape","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"name":"OrderAlreadySwapped","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"name":"OrderExpired","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"enum UnicaExecutorV3.Status","name":"status","type":"uint8"}],"name":"OrderNotInFlight","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"uint128","name":"minOut","type":"uint128"},{"internalType":"uint128","name":"amountOut","type":"uint128"}],"name":"OutputBelowMinimum","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"name":"ParamsDoNotMatchOrder","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"},{"internalType":"uint128","name":"requested","type":"uint128"},{"internalType":"uint128","name":"consumed","type":"uint128"}],"name":"PartialFill","type":"error"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"PayoutCurrencyNotVerified","type":"error"},{"inputs":[{"internalType":"bytes32","name":"orderId","type":"bytes32"}],"name":"PoolDoesNotMatchOrder","type":"error"},{"inputs":[{"internalType":"uint256","name":"chainId","type":"uint256"}],"name":"UnsupportedChainId","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":false,"internalType":"uint128","name":"amount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amount1","type":"uint128"}],"name":"HookBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint128","name":"feeAmount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"feeAmount1","type":"uint128"}],"name":"HookFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"int128","name":"amount0","type":"int128"},{"indexed":false,"internalType":"int128","name":"amount1","type":"int128"}],"name":"HookModifyLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"int128","name":"amount0","type":"int128"},{"indexed":false,"internalType":"int128","name":"amount1","type":"int128"},{"indexed":false,"internalType":"uint128","name":"hookLPfeeAmount0","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"hookLPfeeAmount1","type":"uint128"}],"name":"HookSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"orderId","type":"bytes32"},{"indexed":true,"internalType":"PoolId","name":"poolId","type":"bytes32"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint16","name":"schemaVersion","type":"uint16"},{"indexed":false,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"address","name":"currencyIn","type":"address"},{"indexed":false,"internalType":"address","name":"currencyOut","type":"address"},{"indexed":false,"internalType":"uint128","name":"amountIn","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"amountOut","type":"uint128"},{"indexed":false,"internalType":"uint128","name":"fee","type":"uint128"},{"indexed":false,"internalType":"bytes32","name":"policyId","type":"bytes32"}],"name":"SettlementReceipt","type":"event"},{"inputs":[],"name":"CREATE2_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_SALT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAYOUT_CURRENCY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RECEIPT_SCHEMA_VERSION","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SETTLEMENT_EXECUTOR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNIVERSAL_ROUTER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta0","type":"int256"},{"internalType":"BalanceDelta","name":"delta1","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"int24","name":"tick","type":"int24"}],"name":"afterInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta0","type":"int256"},{"internalType":"BalanceDelta","name":"delta1","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BalanceDelta","name":"","type":"int256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"params","type":"tuple"},{"internalType":"BalanceDelta","name":"delta","type":"int256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeAddLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeDonate","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"name":"beforeInitialize","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"internalType":"struct ModifyLiquidityParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeRemoveLiquidity","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"params","type":"tuple"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BeforeSwapDelta","name":"","type":"int256"},{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getHookPermissions","outputs":[{"components":[{"internalType":"bool","name":"beforeInitialize","type":"bool"},{"internalType":"bool","name":"afterInitialize","type":"bool"},{"internalType":"bool","name":"beforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"afterAddLiquidity","type":"bool"},{"internalType":"bool","name":"beforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeDonate","type":"bool"},{"internalType":"bool","name":"afterDonate","type":"bool"},{"internalType":"bool","name":"beforeSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterSwapReturnDelta","type":"bool"},{"internalType":"bool","name":"afterAddLiquidityReturnDelta","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidityReturnDelta","type":"bool"}],"internalType":"struct Hooks.Permissions","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiptCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
610100604052348015610010575f5ffd5b506100204661012e60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506100633061014960201b60201c565b506100734661016960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506100b54661018460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250506100f66102a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1681525050610ff0565b5f61013e8261036260201b60201c565b606001519050919050565b6101668161015b61085160201b60201c565b6108db60201b60201c565b50565b5f6101798261036260201b60201c565b602001519050919050565b5f62aa36a782036101ab57731c7d4b196cb0c7b01d743fbc6116a902379c7238905061029f565b61051582036101d0577331d0220469e10c4e71834a79b1f276d740d3768f905061029f565b62014a3482036101f65773036cbd53842c5426634e7929541ec2318f3dcf7e905061029f565b62066eee820361021c577375faf114eafb1bdbe2f0316df893fd58ce46aa4d905061029f565b61b626820361026257816040517f277dcd320000000000000000000000000000000000000000000000000000000081526004016102599190610dd7565b60405180910390fd5b816040517fa5dab5fe0000000000000000000000000000000000000000000000000000000081526004016102969190610dd7565b60405180910390fd5b919050565b5f5f604051806020016102b690610cb1565b6020820181038252601f19601f82011660405250306040516020016102db9190610e2f565b6040516020818303038152906040526040516020016102fb929190610e9a565b60405160208183030381529060405280519060200120905060ff60f81b734e59b44847b379578588920ca78fbf26c0b4956c5f5f1b836040516020016103449493929190610f76565b604051602081830303815290604052805190602001205f1c91505090565b61036a610cbe565b61b6268203610456576040518060c0016040528061b6268152602001738876789976decbfcbbbe364623c63652db8c090473ffffffffffffffffffffffffffffffffffffffff1681526020017ffdd90802f39ce5fc8bac4c2f1b3ac7bac530fd17ff46b0630f1bd00f1e14082f5f1b8152602001738366a39cc670b4001a1121b8f6a443a643e4095173ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff16815260200160028081111561044c5761044b610fc3565b5b815250905061084c565b62aa36a78203610545576040518060c0016040528062aa36a78152602001733a9d48ab9751398bbfa63ad67599bb04e4bdf98b73ffffffffffffffffffffffffffffffffffffffff1681526020017f14f7c9253a5406bafa90cb512f4a2db2a10513886603e7a9b4a2e72329e944f45f1b815260200173e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561053b5761053a610fc3565b5b815250905061084c565b6105158203610631576040518060c00160405280610515815260200173f70536b3bcc1bd1a972dc186a2cf84cc6da6be5d73ffffffffffffffffffffffffffffffffffffffff1681526020017f87c34af74ff2c474c881845e3942b52b0de1f03a04196e1c1504bed3d7859e565f1b815260200172b036b58a818b1bc34d502d3fe730db729e62ac73ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561062757610626610fc3565b5b815250905061084c565b62014a348203610720576040518060c0016040528062014a34815260200173492e6456d9528771018deb9e87ef7750ef18410473ffffffffffffffffffffffffffffffffffffffff1681526020017f952c879f642706a4d399eb917827b5a2a5519328446dba72aef3579909bf15ef5f1b81526020017305e73354cfdd6745c338b50bcfdfa3aa6fa0340873ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561071657610715610fc3565b5b815250905061084c565b62066eee820361080f576040518060c0016040528062066eee815260200173efd1d4bd4cf1e86da286bb4cb1b8bced9c10ba4773ffffffffffffffffffffffffffffffffffffffff1681526020017fd1b72cad4c9dffc62de6226f90ca8d5d9dfa6650149caeddacff8edfc9d836085f1b815260200173fb3e0c6f74eb1a21cc1da29aec80d2dfe6c9a31773ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561080557610804610fc3565b5b815250905061084c565b816040517fa5dab5fe0000000000000000000000000000000000000000000000000000000081526004016108439190610dd7565b60405180910390fd5b919050565b610859610d42565b604051806101c001604052806001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020016001151581526020016001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f1515815250905090565b6109066120008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515815f0151151514158061094d57506109416110008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160200151151514155b8061098a575061097e6108008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160400151151514155b806109c757506109bb6104008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160600151151514155b80610a0457506109f86102008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160800151151514155b80610a415750610a356101008373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160a00151151514155b80610a7d5750610a7160808373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160c00151151514155b80610ab95750610aad60408373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b15158160e00151151514155b80610af65750610ae960208373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101000151151514155b80610b335750610b2660108373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101200151151514155b80610b705750610b6360088373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101400151151514155b80610bad5750610ba060048373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101600151151514155b80610bea5750610bdd60028373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101800151151514155b80610c275750610c1a60018373ffffffffffffffffffffffffffffffffffffffff16610c6a60201b90919060201c565b1515816101a00151151514155b15610c6657610c658263e65af6a060e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916610c8f60201b90919060201c565b5b5050565b5f5f82841673ffffffffffffffffffffffffffffffffffffffff161415905092915050565b815f5273ffffffffffffffffffffffffffffffffffffffff811660045260245ffd5b613d6880613a1683390190565b6040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f6002811115610d3c57610d3b610fc3565b5b81525090565b604051806101c001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581525090565b5f819050919050565b610dd181610dbf565b82525050565b5f602082019050610dea5f830184610dc8565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610e1982610df0565b9050919050565b610e2981610e0f565b82525050565b5f602082019050610e425f830184610e20565b92915050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f610e7482610e48565b610e7e8185610e52565b9350610e8e818560208601610e5c565b80840191505092915050565b5f610ea58285610e6a565b9150610eb18284610e6a565b91508190509392505050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b610f02610efd82610ebd565b610ee8565b82525050565b5f8160601b9050919050565b5f610f1e82610f08565b9050919050565b5f610f2f82610f14565b9050919050565b610f47610f4282610e0f565b610f25565b82525050565b5f819050919050565b5f819050919050565b610f70610f6b82610f4d565b610f56565b82525050565b5f610f818287610ef1565b600182019150610f918286610f36565b601482019150610fa18285610f5f565b602082019150610fb18284610f5f565b60208201915081905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60805160a05160c05160e05161298a61108c5f395f818161075e01528181610d0b0152818161133c015261153c01525f818161082801526111fc01525f8181610b7e0152610c0b01525f8181610419015281816104b70152818161055701528181610619015281816106be015281816107840152818161084e015281816108f101528181610a1a01528181610a3f0152610ad9015261298a5ff3fe608060405234801561000f575f5ffd5b506004361061011f575f3560e01c80639f063efc116100ab578063dc4c90d31161006f578063dc4c90d31461035c578063dc98354e1461037a578063e1b4af69146103aa578063e251c8cc146103da578063e8dd7fc3146103f85761011f565b80639f063efc1461028e5780639f4b2797146102bf578063b47b2fb1146102dd578063b6a8b0fa1461030e578063c4e833ce1461033e5761011f565b806364dac83d116100f257806364dac83d146101d35780636c2bbe7e146101f15780636fe7e6eb146102225780637f038f3c146102525780638dec7ecc146102705761011f565b806321d0ee7014610123578063259982e514610153578063575e24b4146101835780635a6228b2146101b5575b5f5ffd5b61013d600480360381019061013891906118c6565b610416565b60405161014a9190611986565b60405180910390f35b61016d600480360381019061016891906118c6565b6104b4565b60405161017a9190611986565b60405180910390f35b61019d600480360381019061019891906119bd565b610552565b6040516101ac93929190611aa2565b60405180910390f35b6101bd6105f8565b6040516101ca9190611af3565b60405180910390f35b6101db6105fd565b6040516101e89190611b1b565b60405180910390f35b61020b60048036038101906102069190611b5e565b610615565b604051610219929190611c1b565b60405180910390f35b61023c60048036038101906102379190611ca2565b6106bb565b6040516102499190611986565b60405180910390f35b61025a610757565b6040516102679190611d1f565b60405180910390f35b61027861075c565b6040516102859190611b1b565b60405180910390f35b6102a860048036038101906102a39190611b5e565b610780565b6040516102b6929190611c1b565b60405180910390f35b6102c7610826565b6040516102d49190611b1b565b60405180910390f35b6102f760048036038101906102f29190611d38565b61084a565b604051610305929190611dec565b60405180910390f35b61032860048036038101906103239190611e3d565b6108ee565b6040516103359190611986565b60405180910390f35b61034661098e565b604051610353919061200d565b60405180910390f35b610364610a18565b6040516103719190612079565b60405180910390f35b610394600480360381019061038f9190612092565b610a3c565b6040516103a19190611986565b60405180910390f35b6103c460048036038101906103bf9190611e3d565b610ad6565b6040516103d19190611986565b60405180910390f35b6103e2610b76565b6040516103ef91906120fa565b60405180910390f35b610400610b7c565b60405161040d9190611b1b565b60405180910390f35b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a98686868686610ba0565b905095945050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105478686868686610bd3565b905095945050505050565b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105da576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e78888888888610c06565b925092509250955095509592505050565b600181565b734e59b44847b379578588920ca78fbf26c0b4956c81565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ab89898989898989610f56565b9150915097509795505050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610741576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074d85858585610f8a565b9050949350505050565b5f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610807576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081689898989898989610fbd565b9150915097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d1576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108df888888888888610ff1565b91509150965096945050505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610974576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610982878787878787611165565b90509695505050505050565b610996611603565b604051806101c001604052806001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020016001151581526020016001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f1515815250905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acd848484611198565b90509392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6a8787878787876112a2565b90509695505050505050565b5f5f1b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610c9957876040517ff0ed4466000000000000000000000000000000000000000000000000000000008152600401610c909190611b1b565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d079190612127565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9957806040517f0a7e5237000000000000000000000000000000000000000000000000000000008152600401610d909190611b1b565b60405180910390fd5b5f5f610da588886112d5565b91509150610db28261144f565b15610df457816040517fdc98c018000000000000000000000000000000000000000000000000000000008152600401610deb91906120fa565b60405180910390fd5b8060c0015167ffffffffffffffff16421115610e4d57818160c001516040517f3b507223000000000000000000000000000000000000000000000000000000008152600401610e44929190612174565b60405180910390fd5b885f016020810190610e5f91906121c5565b1580610e8e575080608001516fffffffffffffffffffffffffffffffff16610e869061221d565b896020013514155b15610ed057816040517ffda3d254000000000000000000000000000000000000000000000000000000008152600401610ec791906120fa565b60405180910390fd5b610edd8160600151611484565b610ef68b803603810190610ef19190612407565b611484565b14610f3857816040517fff0f5158000000000000000000000000000000000000000000000000000000008152600401610f2f91906120fa565b60405180910390fd5b63575e24b460e01b5f5f955095509550505050955095509592505050565b5f5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f610fff86866112d5565b915091505f61100d88611490565b600f0b6110199061221d565b905081608001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161461108f57828260800151826040517fe8077a8e0000000000000000000000000000000000000000000000000000000081526004016110869392919061245c565b60405180910390fd5b5f6110998961149c565b90505f5f82600f0b136110ac575f6110ae565b815b90508360a001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16101561112557848460a00151826040517ff02ade3c00000000000000000000000000000000000000000000000000000000815260040161111c9392919061245c565b60405180910390fd5b5f5f81546001019190508190555061113c856114a8565b611148858d86846114da565b63b47b2fb160e01b5f965096505050505050965096945050505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f835f0160208101906111ac9190612491565b90505f8460200160208101906111c29190612491565b90505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061124b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561128f5781816040517f617a450f0000000000000000000000000000000000000000000000000000000081526004016112869291906124bc565b60405180910390fd5b63dc98354e60e01b925050509392505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112de611680565b6020848490501461132957838390506040517f81d1e3410000000000000000000000000000000000000000000000000000000081526004016113209190611d1f565b60405180910390fd5b8383810190611338919061250d565b91507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16639c3f1e90836040518263ffffffff1660e01b815260040161139391906120fa565b61018060405180830381865afa1580156113af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d39190612753565b9050600260038111156113e9576113e861277f565b5b8160e001516003811115611400576113ff61277f565b5b1461144857818160e001516040517f334eb33800000000000000000000000000000000000000000000000000000000815260040161143f9291906127f2565b60405180910390fd5b9250929050565b5f5f826040516020016114629190612873565b604051602081830303815290604052805190602001209050805c915050919050565b5f60a082209050919050565b5f8160801d9050919050565b5f81600f0b9050919050565b5f816040516020016114ba9190612873565b6040516020818303038152906040528051906020012090506001815d5050565b5f6114f4848036038101906114ef9190612407565b611484565b9050825f015173ffffffffffffffffffffffffffffffffffffffff1681867ff9b834e9c2d7d0250251dfdb3c5fdc3f97d829dbe3402f45c89257ab4ec43563600187604001517f00000000000000000000000000000000000000000000000000000000000000008a5f01602081019061156d9190612491565b8b60200160208101906115809190612491565b8b608001518b5f5f5f1b60405161159f999897969594939291906128d8565b60405180910390a4826040015173ffffffffffffffffffffffffffffffffffffffff16817f444083dce778da1269b63671912c00569a2a58fa85827911902301f91793ffd75f5f6040516115f4929190612963565b60405180910390a35050505050565b604051806101c001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581525090565b6040518061010001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016116e8611746565b81526020015f6fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f60038111156117405761173f61277f565b5b81525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117f4826117cb565b9050919050565b611804816117ea565b811461180e575f5ffd5b50565b5f8135905061181f816117fb565b92915050565b5f5ffd5b5f60a0828403121561183e5761183d611825565b5b81905092915050565b5f6080828403121561185c5761185b611825565b5b81905092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261188657611885611865565b5b8235905067ffffffffffffffff8111156118a3576118a2611869565b5b6020830191508360018202830111156118bf576118be61186d565b5b9250929050565b5f5f5f5f5f61016086880312156118e0576118df6117c3565b5b5f6118ed88828901611811565b95505060206118fe88828901611829565b94505060c061190f88828901611847565b93505061014086013567ffffffffffffffff811115611931576119306117c7565b5b61193d88828901611871565b92509250509295509295909350565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119808161194c565b82525050565b5f6020820190506119995f830184611977565b92915050565b5f606082840312156119b4576119b3611825565b5b81905092915050565b5f5f5f5f5f61014086880312156119d7576119d66117c3565b5b5f6119e488828901611811565b95505060206119f588828901611829565b94505060c0611a068882890161199f565b93505061012086013567ffffffffffffffff811115611a2857611a276117c7565b5b611a3488828901611871565b92509250509295509295909350565b5f819050919050565b5f819050919050565b5f611a6f611a6a611a6584611a43565b611a4c565b611a43565b9050919050565b611a7f81611a55565b82525050565b5f62ffffff82169050919050565b611a9c81611a85565b82525050565b5f606082019050611ab55f830186611977565b611ac26020830185611a76565b611acf6040830184611a93565b949350505050565b5f61ffff82169050919050565b611aed81611ad7565b82525050565b5f602082019050611b065f830184611ae4565b92915050565b611b15816117ea565b82525050565b5f602082019050611b2e5f830184611b0c565b92915050565b611b3d81611a43565b8114611b47575f5ffd5b50565b5f81359050611b5881611b34565b92915050565b5f5f5f5f5f5f5f6101a0888a031215611b7a57611b796117c3565b5b5f611b878a828b01611811565b9750506020611b988a828b01611829565b96505060c0611ba98a828b01611847565b955050610140611bbb8a828b01611b4a565b945050610160611bcd8a828b01611b4a565b93505061018088013567ffffffffffffffff811115611bef57611bee6117c7565b5b611bfb8a828b01611871565b925092505092959891949750929550565b611c1581611a55565b82525050565b5f604082019050611c2e5f830185611977565b611c3b6020830184611c0c565b9392505050565b611c4b816117cb565b8114611c55575f5ffd5b50565b5f81359050611c6681611c42565b92915050565b5f8160020b9050919050565b611c8181611c6c565b8114611c8b575f5ffd5b50565b5f81359050611c9c81611c78565b92915050565b5f5f5f5f6101008587031215611cbb57611cba6117c3565b5b5f611cc887828801611811565b9450506020611cd987828801611829565b93505060c0611cea87828801611c58565b92505060e0611cfb87828801611c8e565b91505092959194509250565b5f819050919050565b611d1981611d07565b82525050565b5f602082019050611d325f830184611d10565b92915050565b5f5f5f5f5f5f6101608789031215611d5357611d526117c3565b5b5f611d6089828a01611811565b9650506020611d7189828a01611829565b95505060c0611d8289828a0161199f565b945050610120611d9489828a01611b4a565b93505061014087013567ffffffffffffffff811115611db657611db56117c7565b5b611dc289828a01611871565b92509250509295509295509295565b5f81600f0b9050919050565b611de681611dd1565b82525050565b5f604082019050611dff5f830185611977565b611e0c6020830184611ddd565b9392505050565b611e1c81611d07565b8114611e26575f5ffd5b50565b5f81359050611e3781611e13565b92915050565b5f5f5f5f5f5f6101208789031215611e5857611e576117c3565b5b5f611e6589828a01611811565b9650506020611e7689828a01611829565b95505060c0611e8789828a01611e29565b94505060e0611e9889828a01611e29565b93505061010087013567ffffffffffffffff811115611eba57611eb96117c7565b5b611ec689828a01611871565b92509250509295509295509295565b5f8115159050919050565b611ee981611ed5565b82525050565b6101c082015f820151611f045f850182611ee0565b506020820151611f176020850182611ee0565b506040820151611f2a6040850182611ee0565b506060820151611f3d6060850182611ee0565b506080820151611f506080850182611ee0565b5060a0820151611f6360a0850182611ee0565b5060c0820151611f7660c0850182611ee0565b5060e0820151611f8960e0850182611ee0565b50610100820151611f9e610100850182611ee0565b50610120820151611fb3610120850182611ee0565b50610140820151611fc8610140850182611ee0565b50610160820151611fdd610160850182611ee0565b50610180820151611ff2610180850182611ee0565b506101a08201516120076101a0850182611ee0565b50505050565b5f6101c0820190506120215f830184611eef565b92915050565b5f61204161203c612037846117cb565b611a4c565b6117cb565b9050919050565b5f61205282612027565b9050919050565b5f61206382612048565b9050919050565b61207381612059565b82525050565b5f60208201905061208c5f83018461206a565b92915050565b5f5f5f60e084860312156120a9576120a86117c3565b5b5f6120b686828701611811565b93505060206120c786828701611829565b92505060c06120d886828701611c58565b9150509250925092565b5f819050919050565b6120f4816120e2565b82525050565b5f60208201905061210d5f8301846120eb565b92915050565b5f81519050612121816117fb565b92915050565b5f6020828403121561213c5761213b6117c3565b5b5f61214984828501612113565b91505092915050565b5f67ffffffffffffffff82169050919050565b61216e81612152565b82525050565b5f6040820190506121875f8301856120eb565b6121946020830184612165565b9392505050565b6121a481611ed5565b81146121ae575f5ffd5b50565b5f813590506121bf8161219b565b92915050565b5f602082840312156121da576121d96117c3565b5b5f6121e7848285016121b1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61222782611a43565b91507f80000000000000000000000000000000000000000000000000000000000000008203612259576122586121f0565b5b815f039050919050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122ad82612267565b810181811067ffffffffffffffff821117156122cc576122cb612277565b5b80604052505050565b5f6122de6117ba565b90506122ea82826122a4565b919050565b6122f8816117ea565b8114612302575f5ffd5b50565b5f81359050612313816122ef565b92915050565b61232281611a85565b811461232c575f5ffd5b50565b5f8135905061233d81612319565b92915050565b5f61234d826117ea565b9050919050565b61235d81612343565b8114612367575f5ffd5b50565b5f8135905061237881612354565b92915050565b5f60a0828403121561239357612392612263565b5b61239d60a06122d5565b90505f6123ac84828501612305565b5f8301525060206123bf84828501612305565b60208301525060406123d38482850161232f565b60408301525060606123e784828501611c8e565b60608301525060806123fb8482850161236a565b60808301525092915050565b5f60a0828403121561241c5761241b6117c3565b5b5f6124298482850161237e565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61245681612432565b82525050565b5f60608201905061246f5f8301866120eb565b61247c602083018561244d565b612489604083018461244d565b949350505050565b5f602082840312156124a6576124a56117c3565b5b5f6124b384828501612305565b91505092915050565b5f6040820190506124cf5f830185611b0c565b6124dc6020830184611b0c565b9392505050565b6124ec816120e2565b81146124f6575f5ffd5b50565b5f81359050612507816124e3565b92915050565b5f60208284031215612522576125216117c3565b5b5f61252f848285016124f9565b91505092915050565b5f81519050612546816122ef565b92915050565b5f8151905061255a81612319565b92915050565b5f8151905061256e81611c78565b92915050565b5f8151905061258281612354565b92915050565b5f60a0828403121561259d5761259c612263565b5b6125a760a06122d5565b90505f6125b684828501612538565b5f8301525060206125c984828501612538565b60208301525060406125dd8482850161254c565b60408301525060606125f184828501612560565b606083015250608061260584828501612574565b60808301525092915050565b61261a81612432565b8114612624575f5ffd5b50565b5f8151905061263581612611565b92915050565b61264481612152565b811461264e575f5ffd5b50565b5f8151905061265f8161263b565b92915050565b60048110612671575f5ffd5b50565b5f8151905061268281612665565b92915050565b5f610180828403121561269e5761269d612263565b5b6126a96101006122d5565b90505f6126b884828501612113565b5f8301525060206126cb84828501612113565b60208301525060406126df84828501612113565b60408301525060606126f384828501612588565b60608301525061010061270884828501612627565b60808301525061012061271d84828501612627565b60a08301525061014061273284828501612651565b60c08301525061016061274784828501612674565b60e08301525092915050565b5f6101808284031215612769576127686117c3565b5b5f61277684828501612688565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600481106127bd576127bc61277f565b5b50565b5f8190506127cd826127ac565b919050565b5f6127dc826127c0565b9050919050565b6127ec816127d2565b82525050565b5f6040820190506128055f8301856120eb565b61281260208301846127e3565b9392505050565b5f82825260208201905092915050565b7f556e696361486f6f6b56332e73776170706564000000000000000000000000005f82015250565b5f61285d601383612819565b915061286882612829565b602082019050919050565b5f6040820190506128865f8301846120eb565b818103602083015261289781612851565b905092915050565b5f819050919050565b5f6128c26128bd6128b88461289f565b611a4c565b612432565b9050919050565b6128d2816128a8565b82525050565b5f610120820190506128ec5f83018c611ae4565b6128f9602083018b611b0c565b612906604083018a611b0c565b6129136060830189611b0c565b6129206080830188611b0c565b61292d60a083018761244d565b61293a60c083018661244d565b61294760e08301856128c9565b6129556101008301846120eb565b9a9950505050505050505050565b5f6040820190506129765f8301856128c9565b61298360208301846128c9565b939250505056610140604052348015610010575f5ffd5b50604051613d68380380613d6883398181016040528101906100329190610948565b5f610042466101e960201b60201c565b90505f600281111561005757610056610973565b5b8160a00151600281111561006e5761006d610973565b5b036100b057466040517fb0e2d96f0000000000000000000000000000000000000000000000000000000081526004016100a791906109b8565b60405180910390fd5b806020015173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050806040015160a081815250508060a00151600281111561010b5761010a610973565b5b60c08160028111156101205761011f610973565b5b81525050806060015173ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff168152505061016c466106d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff16815250506101e26107f860201b60201c565b5050610a2d565b6101f1610866565b61b62682036102dd576040518060c0016040528061b6268152602001738876789976decbfcbbbe364623c63652db8c090473ffffffffffffffffffffffffffffffffffffffff1681526020017ffdd90802f39ce5fc8bac4c2f1b3ac7bac530fd17ff46b0630f1bd00f1e14082f5f1b8152602001738366a39cc670b4001a1121b8f6a443a643e4095173ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016002808111156102d3576102d2610973565b5b81525090506106d3565b62aa36a782036103cc576040518060c0016040528062aa36a78152602001733a9d48ab9751398bbfa63ad67599bb04e4bdf98b73ffffffffffffffffffffffffffffffffffffffff1681526020017f14f7c9253a5406bafa90cb512f4a2db2a10513886603e7a9b4a2e72329e944f45f1b815260200173e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168152602001600160028111156103c2576103c1610973565b5b81525090506106d3565b61051582036104b8576040518060c00160405280610515815260200173f70536b3bcc1bd1a972dc186a2cf84cc6da6be5d73ffffffffffffffffffffffffffffffffffffffff1681526020017f87c34af74ff2c474c881845e3942b52b0de1f03a04196e1c1504bed3d7859e565f1b815260200172b036b58a818b1bc34d502d3fe730db729e62ac73ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff168152602001600160028111156104ae576104ad610973565b5b81525090506106d3565b62014a3482036105a7576040518060c0016040528062014a34815260200173492e6456d9528771018deb9e87ef7750ef18410473ffffffffffffffffffffffffffffffffffffffff1681526020017f952c879f642706a4d399eb917827b5a2a5519328446dba72aef3579909bf15ef5f1b81526020017305e73354cfdd6745c338b50bcfdfa3aa6fa0340873ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561059d5761059c610973565b5b81525090506106d3565b62066eee8203610696576040518060c0016040528062066eee815260200173efd1d4bd4cf1e86da286bb4cb1b8bced9c10ba4773ffffffffffffffffffffffffffffffffffffffff1681526020017fd1b72cad4c9dffc62de6226f90ca8d5d9dfa6650149caeddacff8edfc9d836085f1b815260200173fb3e0c6f74eb1a21cc1da29aec80d2dfe6c9a31773ffffffffffffffffffffffffffffffffffffffff1681526020016e22d473030f116ddee9f6b43ac78ba373ffffffffffffffffffffffffffffffffffffffff1681526020016001600281111561068c5761068b610973565b5b81525090506106d3565b816040517fa5dab5fe0000000000000000000000000000000000000000000000000000000081526004016106ca91906109b8565b60405180910390fd5b919050565b5f62aa36a782036106ff57731c7d4b196cb0c7b01d743fbc6116a902379c723890506107f3565b6105158203610724577331d0220469e10c4e71834a79b1f276d740d3768f90506107f3565b62014a34820361074a5773036cbd53842c5426634e7929541ec2318f3dcf7e90506107f3565b62066eee8203610770577375faf114eafb1bdbe2f0316df893fd58ce46aa4d90506107f3565b61b62682036107b657816040517f277dcd320000000000000000000000000000000000000000000000000000000081526004016107ad91906109b8565b60405180910390fd5b816040517fa5dab5fe0000000000000000000000000000000000000000000000000000000081526004016107ea91906109b8565b60405180910390fd5b919050565b5f60805173ffffffffffffffffffffffffffffffffffffffff163f905060a05181146108635760805160a051826040517fc10b32b200000000000000000000000000000000000000000000000000000000815260040161085a939291906109f8565b60405180910390fd5b50565b6040518060c001604052805f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60028111156108e4576108e3610973565b5b81525090565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610917826108ee565b9050919050565b6109278161090d565b8114610931575f5ffd5b50565b5f815190506109428161091e565b92915050565b5f6020828403121561095d5761095c6108ea565b5b5f61096a84828501610934565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b6109b2816109a0565b82525050565b5f6020820190506109cb5f8301846109a9565b92915050565b6109da8161090d565b82525050565b5f819050919050565b6109f2816109e0565b82525050565b5f606082019050610a0b5f8301866109d1565b610a1860208301856109e9565b610a2560408301846109e9565b949350505050565b60805160a05160c05160e0516101005161012051613299610acf5f395f81816105e1015261187901525f81816102c2015261049b01525f81816104450152818161052d01528181611055015281816111d5015261189d01525f81816102980152611b5f01525f818161199001528181611a320152611a7a01525f81816103b9015281816110f40152818161196c015281816119f80152611a5901526132995ff3fe60806040526004361061009b575f3560e01c80639c3f1e90116100635780639c3f1e90146101755780639f4b2797146101b1578063a54eb242146101db578063c6f3a42614610205578063e8dd7fc314610242578063ee20c1021461026c5761009b565b806313e7d5a61461009f5780632453ffa8146100c957806362308e85146100f3578063849d8c9f1461011d5780638609cad114610159575b5f5ffd5b3480156100aa575f5ffd5b506100b3610296565b6040516100c091906122f2565b60405180910390f35b3480156100d4575f5ffd5b506100dd6102ba565b6040516100ea9190612323565b60405180910390f35b3480156100fe575f5ffd5b506101076102c0565b604051610114919061237b565b60405180910390f35b348015610128575f5ffd5b50610143600480360381019061013e91906124a2565b6102e4565b604051610150919061253d565b60405180910390f35b610173600480360381019061016e9190612556565b610cea565b005b348015610180575f5ffd5b5061019b60048036038101906101969190612556565b6114fd565b6040516101a891906127b1565b60405180910390f35b3480156101bc575f5ffd5b506101c5611877565b6040516101d2919061237b565b60405180910390f35b3480156101e6575f5ffd5b506101ef61189b565b6040516101fc919061237b565b60405180910390f35b348015610210575f5ffd5b5061022b60048036038101906102269190612556565b6118bf565b60405161023992919061293e565b60405180910390f35b34801561024d575f5ffd5b5061025661196a565b604051610263919061237b565b60405180910390f35b348015610277575f5ffd5b5061028061198e565b60405161028d919061253d565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361034a576040517fd27b444300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614806103b15750600273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b8061040757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b8061043d57503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b8061049357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b806104e957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1561052b57866040517f84f4b9fd000000000000000000000000000000000000000000000000000000008152600401610522919061237b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1686608001602081019061057591906129ae565b73ffffffffffffffffffffffffffffffffffffffff16146105df578560800160208101906105a391906129ae565b6040517f84db28e00000000000000000000000000000000000000000000000000000000081526004016105d6919061237b565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168660200160208101906106299190612a03565b73ffffffffffffffffffffffffffffffffffffffff1614610693578560200160208101906106579190612a03565b6040517f2246341400000000000000000000000000000000000000000000000000000000815260040161068a919061237b565b60405180910390fd5b5f856fffffffffffffffffffffffffffffffff16036106de576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f846fffffffffffffffffffffffffffffffff1603610729576040517f2870c09400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428367ffffffffffffffff161161077757826040517f211baed700000000000000000000000000000000000000000000000000000000815260040161076e9190612a3d565b60405180910390fd5b6107a7865f01602081019061078c9190612a03565b73ffffffffffffffffffffffffffffffffffffffff166119b2565b6107dd576040517f80e4ad7800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b463033846040516020016107f49493929190612a56565b6040516020818303038152906040528051906020012090505f600381111561081f5761081e61227f565b5b5f5f8381526020019081526020015f2060070160089054906101000a900460ff1660038111156108525761085161227f565b5b1461089457806040517f51243ae300000000000000000000000000000000000000000000000000000000815260040161088b919061253d565b60405180910390fd5b60015f81546108a290612ac6565b919050819055506040518061010001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020018780360381019061091a9190612c66565b8152602001866fffffffffffffffffffffffffffffffff168152602001856fffffffffffffffffffffffffffffffff1681526020018467ffffffffffffffff168152602001600160038111156109735761097261227f565b5b8152505f5f8381526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506060820151816003015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160010160146101000a81548162ffffff021916908362ffffff16021790555060608201518160010160176101000a81548162ffffff021916908360020b62ffffff1602179055506080820151816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506080820151816006015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060a08201518160060160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060c0820151816007015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060e08201518160070160086101000a81548160ff02191690836003811115610c5457610c5361227f565b5b02179055509050503373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16827fb44f69365ea9fe814655e6ffe1c0ba2e55cd0d2a6aa8ac7eb68db63fd5179cc0610cc58a803603810190610cc09190612c66565b6119e9565b898989604051610cd89493929190612cc0565b60405180910390a49695505050505050565b5f5f5f8381526020019081526020015f2090505f6003811115610d1057610d0f61227f565b5b8160070160089054906101000a900460ff166003811115610d3457610d3361227f565b5b03610d7657816040517f8b5566c5000000000000000000000000000000000000000000000000000000008152600401610d6d919061253d565b60405180910390fd5b60016003811115610d8a57610d8961227f565b5b8160070160089054906101000a900460ff166003811115610dae57610dad61227f565b5b14610e0357818160070160089054906101000a900460ff166040517fccaf1ed8000000000000000000000000000000000000000000000000000000008152600401610dfa929190612d12565b60405180910390fd5b806007015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16421115610e825781816007015f9054906101000a900467ffffffffffffffff166040517f3b507223000000000000000000000000000000000000000000000000000000008152600401610e79929190612d39565b60405180910390fd5b806006015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff163414610f1857806006015f9054906101000a90046fffffffffffffffffffffffffffffffff16346040517f195a3ca1000000000000000000000000000000000000000000000000000000008152600401610f0f929190612d90565b60405180910390fd5b610f206119f5565b33816002015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028160070160086101000a81548160ff02191690836003811115610f8a57610f8961227f565b5b02179055505f816003016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231835f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611011919061237b565b602060405180830381865afa15801561102c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110509190612de1565b90505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637f038f3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110bc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e09190612de1565b90505f5f6110ee8686611adb565b915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633593564c866006015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168484896007015f9054906101000a900467ffffffffffffffff166040518563ffffffff1660e01b815260040161119893929190612e3c565b5f604051808303818588803b1580156111af575f5ffd5b505af11580156111c1573d5f5f3e3d5ffd5b50505050506001836111d39190612e7f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637f038f3c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112609190612de1565b146112a257856040517fe13a2927000000000000000000000000000000000000000000000000000000008152600401611299919061253d565b60405180910390fd5b5f856003016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231875f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611324919061237b565b602060405180830381865afa15801561133f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113639190612de1565b90505f858211611373575f611380565b858261137f9190612eb2565b5b90508660060160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681101561141d57878760060160109054906101000a90046fffffffffffffffffffffffffffffffff16826040517f261a4b7500000000000000000000000000000000000000000000000000000000815260040161141493929190612ee5565b60405180910390fd5b60038760070160086101000a81548160ff021916908360038111156114455761144461227f565b5b0217905550865f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16897f2b48913bcaac5ca8fccdc740976517c444980bc382c153617621804fc277a1848a6006015f9054906101000a90046fffffffffffffffffffffffffffffffff16856040516114eb929190612d90565b60405180910390a45050505050505050565b611505612145565b5f5f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681526020016001820160179054906101000a900460020b60020b60020b8152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001600682015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016006820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152602001600782015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016007820160089054906101000a900460ff16600381111561185a5761185961227f565b5b600381111561186c5761186b61227f565b5b815250509050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060805f5f5f8581526020019081526020015f2090505f60038111156118e8576118e761227f565b5b8160070160089054906101000a900460ff16600381111561190c5761190b61227f565b5b0361194e57836040517f8b5566c5000000000000000000000000000000000000000000000000000000008152600401611945919061253d565b60405180910390fd5b6119566119f5565b6119608482611adb565b9250925050915091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f60a082209050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163f90507f00000000000000000000000000000000000000000000000000000000000000008114611ad8577f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000826040517fc10b32b2000000000000000000000000000000000000000000000000000000008152600401611acf93929190612f1a565b60405180910390fd5b50565b6060805f6006600b600e604051602001611af793929190612f8f565b60405160208183030381529060405290505f600367ffffffffffffffff811115611b2457611b23612b11565b5b604051908082528060200260200182016040528015611b5757816020015b6060815260200190600190039081611b425790505b509050611d817f00000000000000000000000000000000000000000000000000000000000000006040518060c00160405280886003016040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681526020016001820160179054906101000a900460020b60020b60020b8152602001600282015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250508152602001600115158152602001886006015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020018860060160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020015f815260200189604051602001611d6a919061253d565b604051602081830303815290604052815250611f4f565b815f81518110611d9457611d93612fcb565b5b6020026020010181905250846003015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f5f604051602001611dd993929190613021565b60405160208183030381529060405281600181518110611dfc57611dfb612fcb565b5b6020026020010181905250846003016001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16855f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f604051602001611e6493929190613056565b60405160208183030381529060405281600281518110611e8757611e86612fcb565b5b6020026020010181905250600167ffffffffffffffff811115611ead57611eac612b11565b5b604051908082528060200260200182016040528015611ee057816020015b6060815260200190600190039081611ecb5790505b5092508181604051602001611ef692919061293e565b604051602081830303815290604052835f81518110611f1857611f17612fcb565b5b60200260200101819052506010604051602001611f35919061308b565b604051602081830303815290604052935050509250929050565b606060016002811115611f6557611f6461227f565b5b836002811115611f7857611f7761227f565b5b03611f8d57611f8682612000565b9050611ffa565b600280811115611fa057611f9f61227f565b5b836002811115611fb357611fb261227f565b5b03611fc857611fc1826120d4565b9050611ffa565b6040517f5ff8857400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b60605f82608001511461204e5781608001516040517f3f2be61d0000000000000000000000000000000000000000000000000000000081526004016120459190612323565b60405180910390fd5b6040518060a00160405280835f0151815260200183602001511515815260200183604001516fffffffffffffffffffffffffffffffff16815260200183606001516fffffffffffffffffffffffffffffffff1681526020018360a001518152506040516020016120be9190613129565b6040516020818303038152906040529050919050565b60605f825f015183602001518460400151856060015186608001518760a00151604051602001612109969594939291906131af565b604051602081830303815290604052905060208160405160200161212e929190613272565b604051602081830303815290604052915050919050565b6040518061010001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016121ad61220b565b81526020015f6fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f60038111156122055761220461227f565b5b81525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600381106122bd576122bc61227f565b5b50565b5f8190506122cd826122ac565b919050565b5f6122dc826122c0565b9050919050565b6122ec816122d2565b82525050565b5f6020820190506123055f8301846122e3565b92915050565b5f819050919050565b61231d8161230b565b82525050565b5f6020820190506123365f830184612314565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123658261233c565b9050919050565b6123758161235b565b82525050565b5f60208201905061238e5f83018461236c565b92915050565b5f604051905090565b5f5ffd5b6123aa8161235b565b81146123b4575f5ffd5b50565b5f813590506123c5816123a1565b92915050565b5f5ffd5b5f60a082840312156123e4576123e36123cb565b5b81905092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b612411816123ed565b811461241b575f5ffd5b50565b5f8135905061242c81612408565b92915050565b5f67ffffffffffffffff82169050919050565b61244e81612432565b8114612458575f5ffd5b50565b5f8135905061246981612445565b92915050565b5f819050919050565b6124818161246f565b811461248b575f5ffd5b50565b5f8135905061249c81612478565b92915050565b5f5f5f5f5f5f61014087890312156124bd576124bc61239d565b5b5f6124ca89828a016123b7565b96505060206124db89828a016123cf565b95505060c06124ec89828a0161241e565b94505060e06124fd89828a0161241e565b93505061010061250f89828a0161245b565b92505061012061252189828a0161248e565b9150509295509295509295565b6125378161246f565b82525050565b5f6020820190506125505f83018461252e565b92915050565b5f6020828403121561256b5761256a61239d565b5b5f6125788482850161248e565b91505092915050565b61258a8161235b565b82525050565b5f819050919050565b5f6125b36125ae6125a98461233c565b612590565b61233c565b9050919050565b5f6125c482612599565b9050919050565b5f6125d5826125ba565b9050919050565b6125e5816125cb565b82525050565b5f62ffffff82169050919050565b612602816125eb565b82525050565b5f8160020b9050919050565b61261d81612608565b82525050565b5f61262d826125ba565b9050919050565b61263d81612623565b82525050565b60a082015f8201516126575f8501826125dc565b50602082015161266a60208501826125dc565b50604082015161267d60408501826125f9565b5060608201516126906060850182612614565b5060808201516126a36080850182612634565b50505050565b6126b2816123ed565b82525050565b6126c181612432565b82525050565b600481106126d8576126d761227f565b5b50565b5f8190506126e8826126c7565b919050565b5f6126f7826126db565b9050919050565b612707816126ed565b82525050565b61018082015f8201516127225f850182612581565b5060208201516127356020850182612581565b5060408201516127486040850182612581565b50606082015161275b6060850182612643565b50608082015161276f6101008501826126a9565b5060a08201516127836101208501826126a9565b5060c08201516127976101408501826126b8565b5060e08201516127ab6101608501826126fe565b50505050565b5f610180820190506127c55f83018461270d565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61280d826127cb565b61281781856127d5565b93506128278185602086016127e5565b612830816127f3565b840191505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61287e826127cb565b6128888185612864565b93506128988185602086016127e5565b6128a1816127f3565b840191505092915050565b5f6128b78383612874565b905092915050565b5f602082019050919050565b5f6128d58261283b565b6128df8185612845565b9350836020820285016128f185612855565b805f5b8581101561292c578484038952815161290d85826128ac565b9450612918836128bf565b925060208a019950506001810190506128f4565b50829750879550505050505092915050565b5f6040820190508181035f8301526129568185612803565b9050818103602083015261296a81846128cb565b90509392505050565b5f61297d8261235b565b9050919050565b61298d81612973565b8114612997575f5ffd5b50565b5f813590506129a881612984565b92915050565b5f602082840312156129c3576129c261239d565b5b5f6129d08482850161299a565b91505092915050565b6129e28161235b565b81146129ec575f5ffd5b50565b5f813590506129fd816129d9565b92915050565b5f60208284031215612a1857612a1761239d565b5b5f612a25848285016129ef565b91505092915050565b612a3781612432565b82525050565b5f602082019050612a505f830184612a2e565b92915050565b5f608082019050612a695f830187612314565b612a76602083018661236c565b612a83604083018561236c565b612a90606083018461252e565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ad08261230b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0257612b01612a99565b5b600182019050919050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b47826127f3565b810181811067ffffffffffffffff82111715612b6657612b65612b11565b5b80604052505050565b5f612b78612394565b9050612b848282612b3e565b919050565b612b92816125eb565b8114612b9c575f5ffd5b50565b5f81359050612bad81612b89565b92915050565b612bbc81612608565b8114612bc6575f5ffd5b50565b5f81359050612bd781612bb3565b92915050565b5f60a08284031215612bf257612bf1612b0d565b5b612bfc60a0612b6f565b90505f612c0b848285016129ef565b5f830152506020612c1e848285016129ef565b6020830152506040612c3284828501612b9f565b6040830152506060612c4684828501612bc9565b6060830152506080612c5a8482850161299a565b60808301525092915050565b5f60a08284031215612c7b57612c7a61239d565b5b5f612c8884828501612bdd565b91505092915050565b5f612c9b8261246f565b9050919050565b612cab81612c91565b82525050565b612cba816123ed565b82525050565b5f608082019050612cd35f830187612ca2565b612ce06020830186612cb1565b612ced6040830185612cb1565b612cfa6060830184612a2e565b95945050505050565b612d0c816126ed565b82525050565b5f604082019050612d255f83018561252e565b612d326020830184612d03565b9392505050565b5f604082019050612d4c5f83018561252e565b612d596020830184612a2e565b9392505050565b5f612d7a612d75612d70846123ed565b612590565b61230b565b9050919050565b612d8a81612d60565b82525050565b5f604082019050612da35f830185612d81565b612db06020830184612314565b9392505050565b612dc08161230b565b8114612dca575f5ffd5b50565b5f81519050612ddb81612db7565b92915050565b5f60208284031215612df657612df561239d565b5b5f612e0384828501612dcd565b91505092915050565b5f612e26612e21612e1c84612432565b612590565b61230b565b9050919050565b612e3681612e0c565b82525050565b5f6060820190508181035f830152612e548186612803565b90508181036020830152612e6881856128cb565b9050612e776040830184612e2d565b949350505050565b5f612e898261230b565b9150612e948361230b565b9250828201905080821115612eac57612eab612a99565b5b92915050565b5f612ebc8261230b565b9150612ec78361230b565b9250828203905081811115612edf57612ede612a99565b5b92915050565b5f606082019050612ef85f83018661252e565b612f056020830185612cb1565b612f126040830184612314565b949350505050565b5f606082019050612f2d5f83018661236c565b612f3a602083018561252e565b612f47604083018461252e565b949350505050565b5f60ff82169050919050565b5f8160f81b9050919050565b5f612f7182612f5b565b9050919050565b612f89612f8482612f4f565b612f67565b82525050565b5f612f9a8286612f78565b600182019150612faa8285612f78565b600182019150612fba8284612f78565b600182019150819050949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b613001816125cb565b82525050565b5f8115159050919050565b61301b81613007565b82525050565b5f6060820190506130345f830186612ff8565b6130416020830185612cb1565b61304e6040830184613012565b949350505050565b5f6060820190506130695f830186612ff8565b613076602083018561236c565b6130836040830184612cb1565b949350505050565b5f6130968284612f78565b60018201915081905092915050565b6130ae81613007565b82525050565b5f61012083015f8301516130ca5f860182612643565b5060208301516130dd60a08601826130a5565b5060408301516130f060c08601826126a9565b50606083015161310360e08601826126a9565b50608083015184820361010086015261311c8282612874565b9150508091505092915050565b5f6020820190508181035f83015261314181846130b4565b905092915050565b60a082015f82015161315d5f8501826125dc565b50602082015161317060208501826125dc565b50604082015161318360408501826125f9565b5060608201516131966060850182612614565b5060808201516131a96080850182612634565b50505050565b5f610140820190506131c35f830189613149565b6131d060a0830188613012565b6131dd60c0830187612cb1565b6131ea60e0830186612cb1565b6131f8610100830185612314565b81810361012083015261320b8184612803565b9050979650505050505050565b5f819050919050565b61323261322d8261230b565b613218565b82525050565b5f81905092915050565b5f61324c826127cb565b6132568185613238565b93506132668185602086016127e5565b80840191505092915050565b5f61327d8285613221565b60208201915061328d8284613242565b9150819050939250505056
Deployed Bytecode
0x608060405234801561000f575f5ffd5b506004361061011f575f3560e01c80639f063efc116100ab578063dc4c90d31161006f578063dc4c90d31461035c578063dc98354e1461037a578063e1b4af69146103aa578063e251c8cc146103da578063e8dd7fc3146103f85761011f565b80639f063efc1461028e5780639f4b2797146102bf578063b47b2fb1146102dd578063b6a8b0fa1461030e578063c4e833ce1461033e5761011f565b806364dac83d116100f257806364dac83d146101d35780636c2bbe7e146101f15780636fe7e6eb146102225780637f038f3c146102525780638dec7ecc146102705761011f565b806321d0ee7014610123578063259982e514610153578063575e24b4146101835780635a6228b2146101b5575b5f5ffd5b61013d600480360381019061013891906118c6565b610416565b60405161014a9190611986565b60405180910390f35b61016d600480360381019061016891906118c6565b6104b4565b60405161017a9190611986565b60405180910390f35b61019d600480360381019061019891906119bd565b610552565b6040516101ac93929190611aa2565b60405180910390f35b6101bd6105f8565b6040516101ca9190611af3565b60405180910390f35b6101db6105fd565b6040516101e89190611b1b565b60405180910390f35b61020b60048036038101906102069190611b5e565b610615565b604051610219929190611c1b565b60405180910390f35b61023c60048036038101906102379190611ca2565b6106bb565b6040516102499190611986565b60405180910390f35b61025a610757565b6040516102679190611d1f565b60405180910390f35b61027861075c565b6040516102859190611b1b565b60405180910390f35b6102a860048036038101906102a39190611b5e565b610780565b6040516102b6929190611c1b565b60405180910390f35b6102c7610826565b6040516102d49190611b1b565b60405180910390f35b6102f760048036038101906102f29190611d38565b61084a565b604051610305929190611dec565b60405180910390f35b61032860048036038101906103239190611e3d565b6108ee565b6040516103359190611986565b60405180910390f35b61034661098e565b604051610353919061200d565b60405180910390f35b610364610a18565b6040516103719190612079565b60405180910390f35b610394600480360381019061038f9190612092565b610a3c565b6040516103a19190611986565b60405180910390f35b6103c460048036038101906103bf9190611e3d565b610ad6565b6040516103d19190611986565b60405180910390f35b6103e2610b76565b6040516103ef91906120fa565b60405180910390f35b610400610b7c565b60405161040d9190611b1b565b60405180910390f35b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461049c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104a98686868686610ba0565b905095945050505050565b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461053a576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105478686868686610bd3565b905095945050505050565b5f5f5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105da576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e78888888888610c06565b925092509250955095509592505050565b600181565b734e59b44847b379578588920ca78fbf26c0b4956c81565b5f5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106ab89898989898989610f56565b9150915097509795505050505050565b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610741576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074d85858585610f8a565b9050949350505050565b5f5481565b7f000000000000000000000000015692c9e43ca19a2504f79368d1156a5668051781565b5f5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610807576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081689898989898989610fbd565b9150915097509795505050505050565b7f0000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c723881565b5f5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d1576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108df888888888888610ff1565b91509150965096945050505050565b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610974576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610982878787878787611165565b90509695505050505050565b610996611603565b604051806101c001604052806001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020016001151581526020016001151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f1515815250905090565b7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354381565b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610acd848484611198565b90509392505050565b5f7f000000000000000000000000e03a1074c86cfedd5c142c4f04f1a1536e20354373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b5c576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b6a8787878787876112a2565b90509695505050505050565b5f5f1b81565b7f0000000000000000000000003a9d48ab9751398bbfa63ad67599bb04e4bdf98b81565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f7f0000000000000000000000003a9d48ab9751398bbfa63ad67599bb04e4bdf98b73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610c9957876040517ff0ed4466000000000000000000000000000000000000000000000000000000008152600401610c909190611b1b565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff1663d737d0c76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ce3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d079190612127565b90507f000000000000000000000000015692c9e43ca19a2504f79368d1156a5668051773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9957806040517f0a7e5237000000000000000000000000000000000000000000000000000000008152600401610d909190611b1b565b60405180910390fd5b5f5f610da588886112d5565b91509150610db28261144f565b15610df457816040517fdc98c018000000000000000000000000000000000000000000000000000000008152600401610deb91906120fa565b60405180910390fd5b8060c0015167ffffffffffffffff16421115610e4d57818160c001516040517f3b507223000000000000000000000000000000000000000000000000000000008152600401610e44929190612174565b60405180910390fd5b885f016020810190610e5f91906121c5565b1580610e8e575080608001516fffffffffffffffffffffffffffffffff16610e869061221d565b896020013514155b15610ed057816040517ffda3d254000000000000000000000000000000000000000000000000000000008152600401610ec791906120fa565b60405180910390fd5b610edd8160600151611484565b610ef68b803603810190610ef19190612407565b611484565b14610f3857816040517fff0f5158000000000000000000000000000000000000000000000000000000008152600401610f2f91906120fa565b60405180910390fd5b63575e24b460e01b5f5f955095509550505050955095509592505050565b5f5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f610fff86866112d5565b915091505f61100d88611490565b600f0b6110199061221d565b905081608001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161461108f57828260800151826040517fe8077a8e0000000000000000000000000000000000000000000000000000000081526004016110869392919061245c565b60405180910390fd5b5f6110998961149c565b90505f5f82600f0b136110ac575f6110ae565b815b90508360a001516fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16101561112557848460a00151826040517ff02ade3c00000000000000000000000000000000000000000000000000000000815260040161111c9392919061245c565b60405180910390fd5b5f5f81546001019190508190555061113c856114a8565b611148858d86846114da565b63b47b2fb160e01b5f965096505050505050965096945050505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f835f0160208101906111ac9190612491565b90505f8460200160208101906111c29190612491565b90505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061124b57507f0000000000000000000000001c7d4b196cb0c7b01d743fbc6116a902379c723873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561128f5781816040517f617a450f0000000000000000000000000000000000000000000000000000000081526004016112869291906124bc565b60405180910390fd5b63dc98354e60e01b925050509392505050565b5f6040517f0a85dc2900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6112de611680565b6020848490501461132957838390506040517f81d1e3410000000000000000000000000000000000000000000000000000000081526004016113209190611d1f565b60405180910390fd5b8383810190611338919061250d565b91507f000000000000000000000000015692c9e43ca19a2504f79368d1156a5668051773ffffffffffffffffffffffffffffffffffffffff16639c3f1e90836040518263ffffffff1660e01b815260040161139391906120fa565b61018060405180830381865afa1580156113af573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d39190612753565b9050600260038111156113e9576113e861277f565b5b8160e001516003811115611400576113ff61277f565b5b1461144857818160e001516040517f334eb33800000000000000000000000000000000000000000000000000000000815260040161143f9291906127f2565b60405180910390fd5b9250929050565b5f5f826040516020016114629190612873565b604051602081830303815290604052805190602001209050805c915050919050565b5f60a082209050919050565b5f8160801d9050919050565b5f81600f0b9050919050565b5f816040516020016114ba9190612873565b6040516020818303038152906040528051906020012090506001815d5050565b5f6114f4848036038101906114ef9190612407565b611484565b9050825f015173ffffffffffffffffffffffffffffffffffffffff1681867ff9b834e9c2d7d0250251dfdb3c5fdc3f97d829dbe3402f45c89257ab4ec43563600187604001517f000000000000000000000000015692c9e43ca19a2504f79368d1156a566805178a5f01602081019061156d9190612491565b8b60200160208101906115809190612491565b8b608001518b5f5f5f1b60405161159f999897969594939291906128d8565b60405180910390a4826040015173ffffffffffffffffffffffffffffffffffffffff16817f444083dce778da1269b63671912c00569a2a58fa85827911902301f91793ffd75f5f6040516115f4929190612963565b60405180910390a35050505050565b604051806101c001604052805f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581526020015f151581525090565b6040518061010001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020016116e8611746565b81526020015f6fffffffffffffffffffffffffffffffff1681526020015f6fffffffffffffffffffffffffffffffff1681526020015f67ffffffffffffffff1681526020015f60038111156117405761173f61277f565b5b81525090565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f62ffffff1681526020015f60020b81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117f4826117cb565b9050919050565b611804816117ea565b811461180e575f5ffd5b50565b5f8135905061181f816117fb565b92915050565b5f5ffd5b5f60a0828403121561183e5761183d611825565b5b81905092915050565b5f6080828403121561185c5761185b611825565b5b81905092915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261188657611885611865565b5b8235905067ffffffffffffffff8111156118a3576118a2611869565b5b6020830191508360018202830111156118bf576118be61186d565b5b9250929050565b5f5f5f5f5f61016086880312156118e0576118df6117c3565b5b5f6118ed88828901611811565b95505060206118fe88828901611829565b94505060c061190f88828901611847565b93505061014086013567ffffffffffffffff811115611931576119306117c7565b5b61193d88828901611871565b92509250509295509295909350565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6119808161194c565b82525050565b5f6020820190506119995f830184611977565b92915050565b5f606082840312156119b4576119b3611825565b5b81905092915050565b5f5f5f5f5f61014086880312156119d7576119d66117c3565b5b5f6119e488828901611811565b95505060206119f588828901611829565b94505060c0611a068882890161199f565b93505061012086013567ffffffffffffffff811115611a2857611a276117c7565b5b611a3488828901611871565b92509250509295509295909350565b5f819050919050565b5f819050919050565b5f611a6f611a6a611a6584611a43565b611a4c565b611a43565b9050919050565b611a7f81611a55565b82525050565b5f62ffffff82169050919050565b611a9c81611a85565b82525050565b5f606082019050611ab55f830186611977565b611ac26020830185611a76565b611acf6040830184611a93565b949350505050565b5f61ffff82169050919050565b611aed81611ad7565b82525050565b5f602082019050611b065f830184611ae4565b92915050565b611b15816117ea565b82525050565b5f602082019050611b2e5f830184611b0c565b92915050565b611b3d81611a43565b8114611b47575f5ffd5b50565b5f81359050611b5881611b34565b92915050565b5f5f5f5f5f5f5f6101a0888a031215611b7a57611b796117c3565b5b5f611b878a828b01611811565b9750506020611b988a828b01611829565b96505060c0611ba98a828b01611847565b955050610140611bbb8a828b01611b4a565b945050610160611bcd8a828b01611b4a565b93505061018088013567ffffffffffffffff811115611bef57611bee6117c7565b5b611bfb8a828b01611871565b925092505092959891949750929550565b611c1581611a55565b82525050565b5f604082019050611c2e5f830185611977565b611c3b6020830184611c0c565b9392505050565b611c4b816117cb565b8114611c55575f5ffd5b50565b5f81359050611c6681611c42565b92915050565b5f8160020b9050919050565b611c8181611c6c565b8114611c8b575f5ffd5b50565b5f81359050611c9c81611c78565b92915050565b5f5f5f5f6101008587031215611cbb57611cba6117c3565b5b5f611cc887828801611811565b9450506020611cd987828801611829565b93505060c0611cea87828801611c58565b92505060e0611cfb87828801611c8e565b91505092959194509250565b5f819050919050565b611d1981611d07565b82525050565b5f602082019050611d325f830184611d10565b92915050565b5f5f5f5f5f5f6101608789031215611d5357611d526117c3565b5b5f611d6089828a01611811565b9650506020611d7189828a01611829565b95505060c0611d8289828a0161199f565b945050610120611d9489828a01611b4a565b93505061014087013567ffffffffffffffff811115611db657611db56117c7565b5b611dc289828a01611871565b92509250509295509295509295565b5f81600f0b9050919050565b611de681611dd1565b82525050565b5f604082019050611dff5f830185611977565b611e0c6020830184611ddd565b9392505050565b611e1c81611d07565b8114611e26575f5ffd5b50565b5f81359050611e3781611e13565b92915050565b5f5f5f5f5f5f6101208789031215611e5857611e576117c3565b5b5f611e6589828a01611811565b9650506020611e7689828a01611829565b95505060c0611e8789828a01611e29565b94505060e0611e9889828a01611e29565b93505061010087013567ffffffffffffffff811115611eba57611eb96117c7565b5b611ec689828a01611871565b92509250509295509295509295565b5f8115159050919050565b611ee981611ed5565b82525050565b6101c082015f820151611f045f850182611ee0565b506020820151611f176020850182611ee0565b506040820151611f2a6040850182611ee0565b506060820151611f3d6060850182611ee0565b506080820151611f506080850182611ee0565b5060a0820151611f6360a0850182611ee0565b5060c0820151611f7660c0850182611ee0565b5060e0820151611f8960e0850182611ee0565b50610100820151611f9e610100850182611ee0565b50610120820151611fb3610120850182611ee0565b50610140820151611fc8610140850182611ee0565b50610160820151611fdd610160850182611ee0565b50610180820151611ff2610180850182611ee0565b506101a08201516120076101a0850182611ee0565b50505050565b5f6101c0820190506120215f830184611eef565b92915050565b5f61204161203c612037846117cb565b611a4c565b6117cb565b9050919050565b5f61205282612027565b9050919050565b5f61206382612048565b9050919050565b61207381612059565b82525050565b5f60208201905061208c5f83018461206a565b92915050565b5f5f5f60e084860312156120a9576120a86117c3565b5b5f6120b686828701611811565b93505060206120c786828701611829565b92505060c06120d886828701611c58565b9150509250925092565b5f819050919050565b6120f4816120e2565b82525050565b5f60208201905061210d5f8301846120eb565b92915050565b5f81519050612121816117fb565b92915050565b5f6020828403121561213c5761213b6117c3565b5b5f61214984828501612113565b91505092915050565b5f67ffffffffffffffff82169050919050565b61216e81612152565b82525050565b5f6040820190506121875f8301856120eb565b6121946020830184612165565b9392505050565b6121a481611ed5565b81146121ae575f5ffd5b50565b5f813590506121bf8161219b565b92915050565b5f602082840312156121da576121d96117c3565b5b5f6121e7848285016121b1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61222782611a43565b91507f80000000000000000000000000000000000000000000000000000000000000008203612259576122586121f0565b5b815f039050919050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6122ad82612267565b810181811067ffffffffffffffff821117156122cc576122cb612277565b5b80604052505050565b5f6122de6117ba565b90506122ea82826122a4565b919050565b6122f8816117ea565b8114612302575f5ffd5b50565b5f81359050612313816122ef565b92915050565b61232281611a85565b811461232c575f5ffd5b50565b5f8135905061233d81612319565b92915050565b5f61234d826117ea565b9050919050565b61235d81612343565b8114612367575f5ffd5b50565b5f8135905061237881612354565b92915050565b5f60a0828403121561239357612392612263565b5b61239d60a06122d5565b90505f6123ac84828501612305565b5f8301525060206123bf84828501612305565b60208301525060406123d38482850161232f565b60408301525060606123e784828501611c8e565b60608301525060806123fb8482850161236a565b60808301525092915050565b5f60a0828403121561241c5761241b6117c3565b5b5f6124298482850161237e565b91505092915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61245681612432565b82525050565b5f60608201905061246f5f8301866120eb565b61247c602083018561244d565b612489604083018461244d565b949350505050565b5f602082840312156124a6576124a56117c3565b5b5f6124b384828501612305565b91505092915050565b5f6040820190506124cf5f830185611b0c565b6124dc6020830184611b0c565b9392505050565b6124ec816120e2565b81146124f6575f5ffd5b50565b5f81359050612507816124e3565b92915050565b5f60208284031215612522576125216117c3565b5b5f61252f848285016124f9565b91505092915050565b5f81519050612546816122ef565b92915050565b5f8151905061255a81612319565b92915050565b5f8151905061256e81611c78565b92915050565b5f8151905061258281612354565b92915050565b5f60a0828403121561259d5761259c612263565b5b6125a760a06122d5565b90505f6125b684828501612538565b5f8301525060206125c984828501612538565b60208301525060406125dd8482850161254c565b60408301525060606125f184828501612560565b606083015250608061260584828501612574565b60808301525092915050565b61261a81612432565b8114612624575f5ffd5b50565b5f8151905061263581612611565b92915050565b61264481612152565b811461264e575f5ffd5b50565b5f8151905061265f8161263b565b92915050565b60048110612671575f5ffd5b50565b5f8151905061268281612665565b92915050565b5f610180828403121561269e5761269d612263565b5b6126a96101006122d5565b90505f6126b884828501612113565b5f8301525060206126cb84828501612113565b60208301525060406126df84828501612113565b60408301525060606126f384828501612588565b60608301525061010061270884828501612627565b60808301525061012061271d84828501612627565b60a08301525061014061273284828501612651565b60c08301525061016061274784828501612674565b60e08301525092915050565b5f6101808284031215612769576127686117c3565b5b5f61277684828501612688565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600481106127bd576127bc61277f565b5b50565b5f8190506127cd826127ac565b919050565b5f6127dc826127c0565b9050919050565b6127ec816127d2565b82525050565b5f6040820190506128055f8301856120eb565b61281260208301846127e3565b9392505050565b5f82825260208201905092915050565b7f556e696361486f6f6b56332e73776170706564000000000000000000000000005f82015250565b5f61285d601383612819565b915061286882612829565b602082019050919050565b5f6040820190506128865f8301846120eb565b818103602083015261289781612851565b905092915050565b5f819050919050565b5f6128c26128bd6128b88461289f565b611a4c565b612432565b9050919050565b6128d2816128a8565b82525050565b5f610120820190506128ec5f83018c611ae4565b6128f9602083018b611b0c565b612906604083018a611b0c565b6129136060830189611b0c565b6129206080830188611b0c565b61292d60a083018761244d565b61293a60c083018661244d565b61294760e08301856128c9565b6129556101008301846120eb565b9a9950505050505050505050565b5f6040820190506129765f8301856128c9565b61298360208301846128c9565b939250505056
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

