0 txs
0 calls
constructor
constructor(address _usde, address _weth, address[] _assets, address[] _custodians, address _admin, uint256 _maxMintPerBlock, uint256 _maxRedeemPerBlock)
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegatedSigner
viewfunction delegatedSigner(address, address) view returns (uint8)
encodeOrder
purefunction encodeOrder(tuple order) pure returns (bytes)
getDomainSeparator
viewfunction getDomainSeparator() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hashOrder
viewfunction hashOrder(tuple order) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isSupportedAsset
viewfunction isSupportedAsset(address asset) view returns (bool)
maxMintPerBlock
viewfunction maxMintPerBlock() view returns (uint256)
maxRedeemPerBlock
viewfunction maxRedeemPerBlock() view returns (uint256)
mintedPerBlock
viewfunction mintedPerBlock(uint256) view returns (uint256)
owner
viewfunction owner() view returns (address)
redeemedPerBlock
viewfunction redeemedPerBlock(uint256) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
usde
viewfunction usde() view returns (address)
verifyNonce
viewfunction verifyNonce(address sender, uint256 nonce) view returns (uint256, uint256, uint256)
verifyOrder
viewfunction verifyOrder(tuple order, tuple signature) view returns (bytes32 taker_order_hash)
verifyRoute
viewfunction verifyRoute(tuple route) view returns (bool)
acceptAdmin
nonpayablefunction acceptAdmin()
addCustodianAddress
nonpayablefunction addCustodianAddress(address custodian)
addSupportedAsset
nonpayablefunction addSupportedAsset(address asset)
confirmDelegatedSigner
nonpayablefunction confirmDelegatedSigner(address _delegatedBy)
disableMintRedeem
nonpayablefunction disableMintRedeem()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
mint
nonpayablefunction mint(tuple order, tuple route, tuple signature)
mintWETH
nonpayablefunction mintWETH(tuple order, tuple route, tuple signature)
redeem
nonpayablefunction redeem(tuple order, tuple signature)
removeCollateralManagerRole
nonpayablefunction removeCollateralManagerRole(address collateralManager)
removeCustodianAddress
nonpayablefunction removeCustodianAddress(address custodian)
removeDelegatedSigner
nonpayablefunction removeDelegatedSigner(address _removedSigner)
removeMinterRole
nonpayablefunction removeMinterRole(address minter)
removeRedeemerRole
nonpayablefunction removeRedeemerRole(address redeemer)
removeSupportedAsset
nonpayablefunction removeSupportedAsset(address asset)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDelegatedSigner
nonpayablefunction setDelegatedSigner(address _delegateTo)
setMaxMintPerBlock
nonpayablefunction setMaxMintPerBlock(uint256 _maxMintPerBlock)
setMaxRedeemPerBlock
nonpayablefunction setMaxRedeemPerBlock(uint256 _maxRedeemPerBlock)
transferAdmin
nonpayablefunction transferAdmin(address newAdmin)
transferToCustody
nonpayablefunction transferToCustody(address wallet, address asset, uint256 amount)
events
AdminTransferred
event AdminTransferred(address indexed oldAdmin, address indexed newAdmin)
AdminTransferRequested
event AdminTransferRequested(address indexed oldAdmin, address indexed newAdmin)
AssetAdded
event AssetAdded(address indexed asset)
AssetRemoved
event AssetRemoved(address indexed asset)
CustodianAddressAdded
event CustodianAddressAdded(address indexed custodian)
CustodianAddressRemoved
event CustodianAddressRemoved(address indexed custodian)
CustodyTransfer
event CustodyTransfer(address indexed wallet, address indexed asset, uint256 amount)
DelegatedSignerAdded
event DelegatedSignerAdded(address indexed signer, address indexed delegator)
DelegatedSignerInitiated
event DelegatedSignerInitiated(address indexed signer, address indexed delegator)
DelegatedSignerRemoved
event DelegatedSignerRemoved(address indexed signer, address indexed delegator)
MaxMintPerBlockChanged
event MaxMintPerBlockChanged(uint256 oldMaxMintPerBlock, uint256 newMaxMintPerBlock)
MaxRedeemPerBlockChanged
event MaxRedeemPerBlockChanged(uint256 oldMaxRedeemPerBlock, uint256 newMaxRedeemPerBlock)
Mint
event Mint(address indexed minter, address indexed benefactor, address indexed beneficiary, address collateral_asset, uint256 collateral_amount, uint256 usde_amount)
Received
event Received(address, uint256)
Redeem
event Redeem(address indexed redeemer, address indexed benefactor, address indexed beneficiary, address collateral_asset, uint256 collateral_amount, uint256 usde_amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
USDeSet
event USDeSet(address indexed USDe)
errors
DelegationNotInitiated
error DelegationNotInitiated()
InvalidAddress
error InvalidAddress()
InvalidAdminChange
error InvalidAdminChange()
InvalidAmount
error InvalidAmount()
InvalidAssetAddress
error InvalidAssetAddress()
InvalidCustodianAddress
error InvalidCustodianAddress()
InvalidNonce
error InvalidNonce()
InvalidOrder
error InvalidOrder()
InvalidRoute
error InvalidRoute()
InvalidSignature
error InvalidSignature()
InvalidUSDeAddress
error InvalidUSDeAddress()
InvalidZeroAddress
error InvalidZeroAddress()
MaxMintPerBlockExceeded
error MaxMintPerBlockExceeded()
MaxRedeemPerBlockExceeded
error MaxRedeemPerBlockExceeded()
NoAssetsProvided
error NoAssetsProvided()
NotPendingAdmin
error NotPendingAdmin()
SignatureExpired
error SignatureExpired()
TransferFailed
error TransferFailed()
UnsupportedAsset
error UnsupportedAsset()
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162004d7438038062004d748339810160408190526200003591620009de565b60016003556001600160a01b0387166200006257604051632cacf23760e21b815260040160405180910390fd5b6001600160a01b0386166200008a5760405163f6b2911f60e01b815260040160405180910390fd5b8451600003620000ad576040516337791ce560e21b815260040160405180910390fd5b6001600160a01b038316620000d55760405163f6b2911f60e01b815260040160405180910390fd5b6001600160a01b0380881660a0528616608052620000f5600033620002a2565b60005b855181101562000138576200012f8682815181106200011b576200011b62000a9d565b60200260200101516200033460201b60201c565b600101620000f8565b5060005b84518110156200017c57620001738582815181106200015f576200015f62000a9d565b6020026020010151620003d860201b60201c565b6001016200013c565b5062000188826200047c565b6200019381620004c2565b336001600160a01b03841614620001b157620001b1600084620002a2565b4660c0526200025e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527fdfc7060bb2e53279833759ad83d246a6016adac9d59a3fc1c0c23c3d495e137e918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60e0526040516001600160a01b038816907f72fb0d31878f6e7247733418a2aeabf201fddda56677167f041e9bb10ffd5c9e90600090a25050505050505062000be7565b8162000324576001546040516001600160a01b038084169216907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a3600154620002fc906000906001600160a01b031662000501565b600180546001600160a01b0383166001600160a01b0319918216179091556002805490911690555b62000330828262000581565b5050565b6000620003418162000621565b6001600160a01b03821615806200036b575060a0516001600160a01b0316826001600160a01b0316145b806200038157506200037f60048362000630565b155b15620003a057604051630ccd248560e21b815260040160405180910390fd5b6040516001600160a01b038316907f0e3c58ebfb2e7465fbb1c32e6b4f40c3c4f5ca77e8218a386aff8617831260d790600090a25050565b6000620003e58162000621565b6001600160a01b03821615806200040f575060a0516001600160a01b0316826001600160a01b0316145b806200042557506200042360068362000630565b155b15620004445760405163565c062f60e11b815260040160405180910390fd5b6040516001600160a01b038316907ffbd30b5bdd51f5de989170dc23d65aac2de0a6099f5d9d200bc5779d883abcd490600090a25050565b600c80549082905560408051828152602081018490527fb4a832eb73ba0066dc45acd0d1f4454cdee155b17bdb1ccbabb428cc39750ad191015b60405180910390a15050565b600d80549082905560408051828152602081018490527f6fd3eacad9328fdc902c323518cfef3a2f6a9da89c40a7b82428adc2370114c39101620004b6565b6000828152602081815260408083206001600160a01b038516845290915290205460ff161562000330576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000330576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620005dd3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6200062d813362000650565b50565b600062000647836001600160a01b038416620006d5565b90505b92915050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166200033057620006848162000727565b620006918360206200073a565b604051602001620006a492919062000ad9565b60408051601f198184030181529082905262461bcd60e51b8252620006cc9160040162000b52565b60405180910390fd5b60008181526001830160205260408120546200071e575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200064a565b5060006200064a565b60606200064a6001600160a01b03831660145b606060006200074b83600262000b9d565b6200075890600262000bb7565b6001600160401b0381111562000772576200077262000909565b6040519080825280601f01601f1916602001820160405280156200079d576020820181803683370190505b509050600360fc1b81600081518110620007bb57620007bb62000a9d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110620007ed57620007ed62000a9d565b60200101906001600160f81b031916908160001a90535060006200081384600262000b9d565b6200082090600162000bb7565b90505b6001811115620008a2576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062000858576200085862000a9d565b1a60f81b82828151811062000871576200087162000a9d565b60200101906001600160f81b031916908160001a90535060049490941c936200089a8162000bcd565b905062000823565b508315620006475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620006cc565b6001600160a01b03811681146200062d57600080fd5b634e487b7160e01b600052604160045260246000fd5b80516200092c81620008f3565b919050565b600082601f8301126200094357600080fd5b815160206001600160401b038083111562000962576200096262000909565b8260051b604051601f19603f830116810181811084821117156200098a576200098a62000909565b604052938452858101830193838101925087851115620009a957600080fd5b83870191505b84821015620009d357620009c3826200091f565b83529183019190830190620009af565b979650505050505050565b600080600080600080600060e0888a031215620009fa57600080fd5b875162000a0781620008f3565b602089015190975062000a1a81620008f3565b60408901519096506001600160401b038082111562000a3857600080fd5b62000a468b838c0162000931565b965060608a015191508082111562000a5d57600080fd5b5062000a6c8a828b0162000931565b945050608088015162000a7f81620008f3565b8093505060a0880151915060c0880151905092959891949750929550565b634e487b7160e01b600052603260045260246000fd5b60005b8381101562000ad057818101518382015260200162000ab6565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162000b1381601785016020880162000ab3565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162000b4681602884016020880162000ab3565b01602801949350505050565b602081526000825180602084015262000b7381604085016020870162000ab3565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200064a576200064a62000b87565b808201808211156200064a576200064a62000b87565b60008162000bdf5762000bdf62000b87565b506000190190565b60805160a05160c05160e05161413062000c446000396000611e7e01526000611e5601526000818161036101528181610ffa0152818161147a015281816119c701526121f5015260008181612b0d0152612be501526141306000f3fe6080604052600436106102bf5760003560e01c80638da5cb5b1161016e578063cf9cc766116100cb578063e0f3fc9f1161007f578063f4ee2a8b11610064578063f4ee2a8b1461085c578063f5c42eb314610897578063fac09e87146108b757600080fd5b8063e0f3fc9f14610827578063ed24911d1461084757600080fd5b8063d547741f116100b0578063d547741f146107ba578063d8369d75146107da578063d8f065bd146107fa57600080fd5b8063cf9cc76614610752578063d48c03e51461079a57600080fd5b80639cd2913611610122578063b6c7806311610107578063b6c78063146106f0578063c5ff38bd1461071d578063ccb2676b1461073257600080fd5b80639cd29136146106bb578063a217fddf146106db57600080fd5b8063928907dd11610153578063928907dd1461066557806395165e8b1461067b5780639be918e61461069b57600080fd5b80638da5cb5b146105e957806391d148541461061457600080fd5b8063402a8d371161021c57806353863613116101d05780637274c25c116101b55780637274c25c1461059357806375829def146105b3578063844452fa146105d357600080fd5b8063538636131461055357806354f1e1261461057357600080fd5b80634ba87af9116102015780634ba87af9146104f35780634be7a64b14610513578063532c3f821461053357600080fd5b8063402a8d37146104b357806340e49216146104d357600080fd5b80631c46bc6f116102735780632ba32991116102585780632ba32991146104465780632f2ff15d1461047357806336568abe1461049357600080fd5b80631c46bc6f146103f6578063248a9ca31461041657600080fd5b80630fd761e0116102a45780630fd761e01461034f578063157a4028146103a857806319bfcdec146103c857600080fd5b806301ffc9a7146103035780630e18b6811461033857600080fd5b366102fe57604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561030f57600080fd5b5061032361031e366004613a0b565b6108d7565b60405190151581526020015b60405180910390f35b34801561034457600080fd5b5061034d610970565b005b34801561035b57600080fd5b506103837f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032f565b3480156103b457600080fd5b5061034d6103c3366004613a76565b6109ce565b3480156103d457600080fd5b506103e86103e3366004613aaa565b610ad0565b60405190815260200161032f565b34801561040257600080fd5b5061034d610411366004613a76565b610b27565b34801561042257600080fd5b506103e8610431366004613ac7565b60009081526020819052604090206001015490565b34801561045257600080fd5b506103e8610461366004613ac7565b60096020526000908152604090205481565b34801561047f57600080fd5b5061034d61048e366004613ae0565b610bb8565b34801561049f57600080fd5b5061034d6104ae366004613ae0565b610c0b565b3480156104bf57600080fd5b506103e86104ce366004613b1e565b610c52565b3480156104df57600080fd5b5061034d6104ee366004613a76565b610ebd565b3480156104ff57600080fd5b5061034d61050e366004613a76565b610f3e565b34801561051f57600080fd5b5061034d61052e366004613a76565b610fcf565b34801561053f57600080fd5b5061034d61054e366004613a76565b6110d7565b34801561055f57600080fd5b5061034d61056e366004613a76565b61112f565b34801561057f57600080fd5b5061034d61058e366004613a76565b6111b3565b34801561059f57600080fd5b5061034d6105ae366004613a76565b611207565b3480156105bf57600080fd5b5061034d6105ce366004613a76565b61125b565b3480156105df57600080fd5b506103e8600d5481565b3480156105f557600080fd5b5060015473ffffffffffffffffffffffffffffffffffffffff16610383565b34801561062057600080fd5b5061032361062f366004613ae0565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561067157600080fd5b506103e8600c5481565b34801561068757600080fd5b5061034d610696366004613b1e565b61132d565b3480156106a757600080fd5b506103236106b6366004613a76565b61162c565b3480156106c757600080fd5b5061034d6106d6366004613ac7565b611639565b3480156106e757600080fd5b506103e8600081565b3480156106fc57600080fd5b506103e861070b366004613ac7565b600a6020526000908152604090205481565b34801561072957600080fd5b5061034d61164d565b34801561073e57600080fd5b5061032361074d366004613b6f565b61168e565b34801561075e57600080fd5b5061078d61076d366004613ba4565b600b60209081526000928352604080842090915290825290205460ff1681565b60405161032f9190613bfd565b3480156107a657600080fd5b5061034d6107b5366004613c17565b6117f7565b3480156107c657600080fd5b5061034d6107d5366004613ae0565b611b4b565b3480156107e657600080fd5b5061034d6107f5366004613ac7565b611b98565b34801561080657600080fd5b5061081a610815366004613aaa565b611bac565b60405161032f9190613cfd565b34801561083357600080fd5b5061034d610842366004613d10565b611c4e565b34801561085357600080fd5b506103e8611e52565b34801561086857600080fd5b5061087c610877366004613d4c565b611f4d565b6040805193845260208401929092529082015260600161032f565b3480156108a357600080fd5b5061034d6108b2366004613c17565b61201b565b3480156108c357600080fd5b5061034d6108d2366004613a76565b6121ca565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061096a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109c1576040517f058d9a1b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109cc6000336122d2565b565b6001336000908152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff166002811115610a1557610a15613bce565b14610a4c576040517f7b5afc0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152600b6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179055519092917fed6a1f03e365a374bf7e9fe68b09cf74960528af699108cb461241efc5ded90991a350565b600061096a610add611e52565b610ae684611bac565b805190602001206040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000610b328161239a565b610b3d6004836123a4565b610b73576040517f3334921400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f37803e2125c48ee96c38ddf04e826daf335b0e1603579040fd275aba6d06b6fc90600090a25050565b6000610bc38161239a565b8280610bfb576040517f6317a0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c0584846122d2565b50505050565b8180610c43576040517f6317a0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4d83836123cd565b505050565b6000610c5d83610ad0565b90506000610cac82610c726020860186613d76565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248192505050565b9050610cbe6080850160608601613a76565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610d675750600273ffffffffffffffffffffffffffffffffffffffff82166000908152600b6020526040812090610d2a6080880160608901613a76565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff166002811115610d6557610d65613bce565b145b610d9d576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610daf60a0860160808701613a76565b73ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360c00135600003610e3a576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360e00135600003610e78576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360200135421115610eb6576040517f0819bdcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832033808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055519092917f97b59d736dc70ae61c6b68295c19a1311cc4a48cbb9eb25c4dabf18c7f650a8a91a350565b6000610f498161239a565b610f546006836123a4565b610f8a576040517facb80c5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f75567811df62a6b68bd5ee394d5808ad7282e19541858be466bc789cad9d4dfb90600090a25050565b6000610fda8161239a565b73ffffffffffffffffffffffffffffffffffffffff8216158061104857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061105b57506110596006836124a5565b155b15611092576040517facb80c5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907ffbd30b5bdd51f5de989170dc23d65aac2de0a6099f5d9d200bc5779d883abcd490600090a25050565b7f3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c6111018161239a565b61112b7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc836124c7565b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600b6020908152604080832033808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055519092917f769c75d94dacde64c18415b5a72f6d26e7f62b356387f8da812c4b0aa66a0f2591a350565b7f3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c6111dd8161239a565b61112b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6836124c7565b7f3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c6112318161239a565b61112b7f85e8f2d6819d6b24108062d87ea08f54651bcb8960d98062d3faf96e7873b8b9836124c7565b60006112668161239a565b3373ffffffffffffffffffffffffffffffffffffffff8316036112b5576040517f6317a0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff848116918217909255600154604051919216907fefdcbba819467e00b0262c12892dda980bac68580b72178e57a162368b80876690600090a35050565b61133561257e565b7f44ac9762eec3a11893fefb11d028bb3102560094137c3ed4518712475b2577cc61135f8161239a565b600d54436000908152600a602052604090205460e08501359190611384908390613e0a565b11156113bc576040517f4d4ea7ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016113cb6020860186613e1d565b60018111156113dc576113dc613bce565b14611413576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141d8484610c52565b5061143b6114316080860160608701613a76565b85604001356125f1565b436000908152600a60205260408120805460e0870135929061145e908490613e0a565b909155505073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166379cc67906114af6080870160608801613a76565b60405160e083811b7fffffffff0000000000000000000000000000000000000000000000000000000016825273ffffffffffffffffffffffffffffffffffffffff929092166004820152908701356024820152604401600060405180830381600087803b15801561151f57600080fd5b505af1158015611533573d6000803e3d6000fd5b50611566925061154c91505060a0860160808701613a76565b61155c60c0870160a08801613a76565b8660c0013561263e565b61157660a0850160808601613a76565b73ffffffffffffffffffffffffffffffffffffffff1661159c6080860160608701613a76565b73ffffffffffffffffffffffffffffffffffffffff16337f18fd144d7dbcbaa6f00fd47a84adc7dc3cc64a326ffa2dc7691a25e3837dba036115e460c0890160a08a01613a76565b6040805173ffffffffffffffffffffffffffffffffffffffff909216825260c08a0135602083015260e08a01359082015260600160405180910390a4505061112b6001600355565b600061096a6004836127b1565b60006116448161239a565b61112b826127e0565b7f3c63e605be3290ab6b04cfc46c6e1516e626d43236b034f09d7ede1d017beb0c6116778161239a565b61168160006127e0565b61168b6000612826565b50565b60008061169e6020840184613e3e565b90506116aa8480613e3e565b9050146116ba5750600092915050565b6116c48380613e3e565b90506000036116d65750600092915050565b60005b6116e38480613e3e565b90508110156117ec576117266116f98580613e3e565b8381811061170957611709613ea6565b905060200201602081019061171e9190613a76565b6006906127b1565b1580611776575060006117398580613e3e565b8381811061174957611749613ea6565b905060200201602081019061175e9190613a76565b73ffffffffffffffffffffffffffffffffffffffff16145b806117a457506117896020850185613e3e565b8281811061179957611799613ea6565b905060200201356000145b156117b3575060009392505050565b6117c06020850185613e3e565b828181106117d0576117d0613ea6565b90506020020135826117e29190613e0a565b91506001016116d9565b506127101492915050565b6117ff61257e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66118298161239a565b600c544360009081526009602052604090205460e0860135919061184e908390613e0a565b1115611886576040517f0fbf0bc900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006118956020870187613e1d565b60018111156118a6576118a6613bce565b146118dd576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118e78584610c52565b506118f18461168e565b611927576040517f84e505d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61194461193a6080870160608801613a76565b86604001356125f1565b436000908152600960205260408120805460e08801359290611967908490613e0a565b909155506119b0905060c086018035906119849060a08901613a76565b6119946080890160608a01613a76565b61199e8880613e3e565b6119ab60208b018b613e3e565b612864565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166340c10f196119fc60a0880160808901613a76565b60405160e083811b7fffffffff0000000000000000000000000000000000000000000000000000000016825273ffffffffffffffffffffffffffffffffffffffff929092166004820152908801356024820152604401600060405180830381600087803b158015611a6c57600080fd5b505af1158015611a80573d6000803e3d6000fd5b50611a959250505060a0860160808701613a76565b73ffffffffffffffffffffffffffffffffffffffff16611abb6080870160608801613a76565b73ffffffffffffffffffffffffffffffffffffffff16337ff114ca9eb82947af39f957fa726280fd3d5d81c3d7635a4aeb5c302962856eba611b0360c08a0160a08b01613a76565b6040805173ffffffffffffffffffffffffffffffffffffffff909216825260c08b0135602083015260e08b01359082015260600160405180910390a45050610c4d6001600355565b6000611b568161239a565b8280611b8e576040517f6317a0fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c0584846124c7565b6000611ba38161239a565b61112b82612826565b60607fadd81430b566ae2d49ebbbd6d0bbf5717dd8781caa842362ba2b8bf25c0288b5611bdc6020840184613e1d565b60208401356040850135611bf66080870160608801613a76565b611c0660a0880160808901613a76565b611c1660c0890160a08a01613a76565b8860c001358960e00135604051602001611c3899989796959493929190613ed5565b6040516020818303038152906040529050919050565b611c5661257e565b7f85e8f2d6819d6b24108062d87ea08f54651bcb8960d98062d3faf96e7873b8b9611c808161239a565b73ffffffffffffffffffffffffffffffffffffffff84161580611cab5750611ca96006856127b1565b155b15611ce2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff841601611dbf5760008473ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611d79576040519150601f19603f3d011682016040523d82523d6000602084013e611d7e565b606091505b5050905080611db9576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50611de0565b611de073ffffffffffffffffffffffffffffffffffffffff841685846129f1565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f90c5d8794dcf7c60ab2d20912d5228389b28f74d32af01e40894a784a90b9ac284604051611e3f91815260200190565b60405180910390a350610c4d6001600355565b60007f00000000000000000000000000000000000000000000000000000000000000004603611ea057507f000000000000000000000000000000000000000000000000000000000000000090565b611f48604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527fdfc7060bb2e53279833759ad83d246a6016adac9d59a3fc1c0c23c3d495e137e918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b600080600083600003611f8c576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851660009081526008602081815260408084209288901c66ffffffffffffff168085529290915290912054600160ff87161b908181161561200e576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9197919650945092505050565b61202361257e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661204d8161239a565b600c544360009081526009602052604090205460e08601359190612072908390613e0a565b11156120aa576040517f0fbf0bc900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120b96020870187613e1d565b60018111156120ca576120ca613bce565b14612101576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61210b8584610c52565b506121158461168e565b61214b576040517f84e505d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61215e61193a6080870160608801613a76565b436000908152600960205260408120805460e08801359290612181908490613e0a565b909155506119b0905060c0860180359061219e9060a08901613a76565b6121ae6080890160608a01613a76565b6121b88880613e3e565b6121c560208b018b613e3e565b612ac5565b60006121d58161239a565b73ffffffffffffffffffffffffffffffffffffffff8216158061224357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061225657506122546004836124a5565b155b1561228d576040517f3334921400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff8316907f0e3c58ebfb2e7465fbb1c32e6b4f40c3c4f5ca77e8218a386aff8617831260d790600090a25050565b816123905760015460405173ffffffffffffffffffffffffffffffffffffffff8084169216907ff8ccb027dfcd135e000e9d45e6cc2d662578a8825d4c45b5e32e0adf67e79ec690600090a36001546123439060009073ffffffffffffffffffffffffffffffffffffffff166124c7565b6001805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091556002805490911690555b61112b8282612e5c565b61168b8133612f4c565b60006123c68373ffffffffffffffffffffffffffffffffffffffff8416613004565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff81163314612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b61112b82826124c7565b600080600061249085856130f7565b9150915061249d8161313c565b509392505050565b60006123c68373ffffffffffffffffffffffffffffffffffffffff84166132ef565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561112b5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6002600354036125ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161246e565b6002600355565b60008060006126008585611f4d565b73ffffffffffffffffffffffffffffffffffffffff909716600090815260086020908152604080832094835293905291909120951790945550505050565b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff83160161274f57804710156126b5576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461270f576040519150601f19603f3d011682016040523d82523d6000602084013e612714565b606091505b5050905080610c05576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61275a6004836127b1565b612790576040517f24a0114400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c4d73ffffffffffffffffffffffffffffffffffffffff831684836129f1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205415156123c6565b600c80549082905560408051828152602081018490527fb4a832eb73ba0066dc45acd0d1f4454cdee155b17bdb1ccbabb428cc39750ad191015b60405180910390a15050565b600d80549082905560408051828152602081018490527f6fd3eacad9328fdc902c323518cfef3a2f6a9da89c40a7b82428adc2370114c3910161281a565b61286f6004876127b1565b15806128a4575073ffffffffffffffffffffffffffffffffffffffff861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b156128db576040517f24a0114400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b856000805b8581101561297c5760006127108686848181106128ff576128ff613ea6565b905060200201358c6129119190613f43565b61291b9190613f5a565b90506129678989898581811061293357612933613ea6565b90506020020160208101906129489190613a76565b73ffffffffffffffffffffffffffffffffffffffff871691908461333e565b6129718184613e0a565b9250506001016128e0565b506000612989828b613f95565b905080156129e5576129e58888886129a2600182613f95565b8181106129b1576129b1613ea6565b90506020020160208101906129c69190613a76565b73ffffffffffffffffffffffffffffffffffffffff861691908461333e565b50505050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c4d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261339c565b612ad06004876127b1565b1580612b05575073ffffffffffffffffffffffffffffffffffffffff861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b80612b5c57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15612b93576040517f24a0114400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85612bb673ffffffffffffffffffffffffffffffffffffffff821687308b61333e565b6040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018990527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632e1a7d4d90602401600060405180830381600087803b158015612c3e57600080fd5b505af1158015612c52573d6000803e3d6000fd5b505050506000805b85811015612d70576000612710868684818110612c7957612c79613ea6565b905060200201358c612c8b9190613f43565b612c959190613f5a565b90506000888884818110612cab57612cab613ea6565b9050602002016020810190612cc09190613a76565b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612d17576040519150601f19603f3d011682016040523d82523d6000602084013e612d1c565b606091505b5050905080612d57576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d618285613e0a565b93508260010192505050612c5a565b506000612d7d828b613f95565b905080156129e55760008787612d94600182613f95565b818110612da357612da3613ea6565b9050602002016020810190612db89190613a76565b73ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114612e0f576040519150601f19603f3d011682016040523d82523d6000602084013e612e14565b606091505b5050905080612e4f576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050505050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661112b5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055612eee3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661112b57612f8a816134ab565b612f958360206134ca565b604051602001612fa6929190613fa8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261246e91600401613cfd565b600081815260018301602052604081205480156130ed576000613028600183613f95565b855490915060009061303c90600190613f95565b90508181146130a157600086600001828154811061305c5761305c613ea6565b906000526020600020015490508087600001848154811061307f5761307f613ea6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130b2576130b2614029565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061096a565b600091505061096a565b600080825160410361312d5760208301516040840151606085015160001a6131218782858561370d565b94509450505050613135565b506000905060025b9250929050565b600081600481111561315057613150613bce565b036131585750565b600181600481111561316c5761316c613bce565b036131d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161246e565b60028160048111156131e7576131e7613bce565b0361324e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161246e565b600381600481111561326257613262613bce565b0361168b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161246e565b60008181526001830160205260408120546133365750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561096a565b50600061096a565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c059085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401612a43565b60006133fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137fc9092919063ffffffff16565b905080516000148061341f57508080602001905181019061341f9190614058565b610c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161246e565b606061096a73ffffffffffffffffffffffffffffffffffffffff831660145b606060006134d9836002613f43565b6134e4906002613e0a565b67ffffffffffffffff8111156134fc576134fc61407a565b6040519080825280601f01601f191660200182016040528015613526576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061355d5761355d613ea6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106135c0576135c0613ea6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006135fc846002613f43565b613607906001613e0a565b90505b60018111156136a4577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061364857613648613ea6565b1a60f81b82828151811061365e5761365e613ea6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361369d816140a9565b905061360a565b5083156123c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161246e565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561374457506000905060036137f3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613798573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166137ec576000600192509250506137f3565b9150600090505b94509492505050565b606061380b8484600085613813565b949350505050565b6060824710156138a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161246e565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516138ce91906140de565b60006040518083038185875af1925050503d806000811461390b576040519150601f19603f3d011682016040523d82523d6000602084013e613910565b606091505b50915091506139218783838761392c565b979650505050505050565b606083156139c25782516000036139bb5773ffffffffffffffffffffffffffffffffffffffff85163b6139bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161246e565b508161380b565b61380b83838151156139d75781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e9190613cfd565b600060208284031215613a1d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123c657600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114613a7157600080fd5b919050565b600060208284031215613a8857600080fd5b6123c682613a4d565b60006101008284031215613aa457600080fd5b50919050565b60006101008284031215613abd57600080fd5b6123c68383613a91565b600060208284031215613ad957600080fd5b5035919050565b60008060408385031215613af357600080fd5b82359150613b0360208401613a4d565b90509250929050565b600060408284031215613aa457600080fd5b6000806101208385031215613b3257600080fd5b613b3c8484613a91565b915061010083013567ffffffffffffffff811115613b5957600080fd5b613b6585828601613b0c565b9150509250929050565b600060208284031215613b8157600080fd5b813567ffffffffffffffff811115613b9857600080fd5b61380b84828501613b0c565b60008060408385031215613bb757600080fd5b613bc083613a4d565b9150613b0360208401613a4d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310613c1157613c11613bce565b91905290565b60008060006101408486031215613c2d57600080fd5b613c378585613a91565b925061010084013567ffffffffffffffff80821115613c5557600080fd5b613c6187838801613b0c565b9350610120860135915080821115613c7857600080fd5b50613c8586828701613b0c565b9150509250925092565b60005b83811015613caa578181015183820152602001613c92565b50506000910152565b60008151808452613ccb816020860160208601613c8f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123c66020830184613cb3565b600080600060608486031215613d2557600080fd5b613d2e84613a4d565b9250613d3c60208501613a4d565b9150604084013590509250925092565b60008060408385031215613d5f57600080fd5b613d6883613a4d565b946020939093013593505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613dab57600080fd5b83018035915067ffffffffffffffff821115613dc657600080fd5b60200191503681900382131561313557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561096a5761096a613ddb565b600060208284031215613e2f57600080fd5b8135600281106123c657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e7357600080fd5b83018035915067ffffffffffffffff821115613e8e57600080fd5b6020019150600581901b360382131561313557600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b898152610120810160028a10613eed57613eed613bce565b60208201999099526040810197909752606087019590955273ffffffffffffffffffffffffffffffffffffffff938416608087015291831660a086015290911660c084015260e083015261010090910152919050565b808202811582820484141761096a5761096a613ddb565b600082613f90577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561096a5761096a613ddb565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613fe0816017850160208801613c8f565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161401d816028840160208801613c8f565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006020828403121561406a57600080fd5b815180151581146123c657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000816140b8576140b8613ddb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082516140f0818460208701613c8f565b919091019291505056fea26469706673582212200a56f9b67777a35d05e035705c9288fada3a7594a876b9242f40b7a51c99de6964736f6c634300081300330000000000000000000000004c9edd5852cd905f086c759e8383e09bff1e68b3000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000003b0aaf6e6fcd4a7ceef8c92c32dfea9e64dc186200000000000000000000000000000000000000000000152d02c7e14af680000000000000000000000000000000000000000000000000152d02c7e14af68000000000000000000000000000000000000000000000000000000000000000000003000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000010000000000000000000000006b95f243959329bb88f5d3df9a7127efba703fda