170 txs
797 calls
constructor
constructor(address standardGovernorDeployer_, address[] initialAccounts_, uint256[] initialBalances_)
functions
allowance
viewfunction allowance(address account, address spender) view returns (uint256 allowance)
authorizationState
viewfunction authorizationState(address authorizer, bytes32 nonce) view returns (bool isNonceUsed)
balanceOf
viewfunction balanceOf(address account_) view returns (uint256)
CANCEL_AUTHORIZATION_TYPEHASH
viewfunction CANCEL_AUTHORIZATION_TYPEHASH() view returns (bytes32)
CLOCK_MODE
purefunction CLOCK_MODE() pure returns (string clockMode_)
clock
viewfunction clock() view returns (uint48 clock_)
decimals
viewfunction decimals() view returns (uint8)
delegates
viewfunction delegates(address account_) view returns (address)
DELEGATION_TYPEHASH
viewfunction DELEGATION_TYPEHASH() view returns (bytes32)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields_, string name_, string version_, uint256 chainId_, address verifyingContract_, bytes32 salt_, uint256[] extensions_)
getDelegationDigest
viewfunction getDelegationDigest(address delegatee_, uint256 nonce_, uint256 expiry_) view returns (bytes32)
getPastVotes
viewfunction getPastVotes(address account_, uint256 epoch_) view returns (uint256)
getVotes
viewfunction getVotes(address account_) view returns (uint256)
name
viewfunction name() view returns (string name_)
nonces
viewfunction nonces(address account) view returns (uint256 nonce)
pastBalanceOf
viewfunction pastBalanceOf(address account_, uint256 epoch_) view returns (uint256)
pastBalancesOf
viewfunction pastBalancesOf(address account_, uint256 startEpoch_, uint256 endEpoch_) view returns (uint256[])
pastDelegates
viewfunction pastDelegates(address account_, uint256 epoch_) view returns (address)
pastTotalSupplies
viewfunction pastTotalSupplies(uint256 startEpoch_, uint256 endEpoch_) view returns (uint256[])
pastTotalSupply
viewfunction pastTotalSupply(uint256 epoch_) view returns (uint256)
PERMIT_TYPEHASH
viewfunction PERMIT_TYPEHASH() view returns (bytes32)
RECEIVE_WITH_AUTHORIZATION_TYPEHASH
viewfunction RECEIVE_WITH_AUTHORIZATION_TYPEHASH() view returns (bytes32)
standardGovernor
viewfunction standardGovernor() view returns (address)
standardGovernorDeployer
viewfunction standardGovernorDeployer() view returns (address)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
TRANSFER_WITH_AUTHORIZATION_TYPEHASH
viewfunction TRANSFER_WITH_AUTHORIZATION_TYPEHASH() view returns (bytes32)
approve
nonpayablefunction approve(address spender_, uint256 amount_) returns (bool success_)
cancelAuthorization
nonpayablefunction cancelAuthorization(address authorizer_, bytes32 nonce_, bytes signature_)
cancelAuthorization
nonpayablefunction cancelAuthorization(address authorizer_, bytes32 nonce_, bytes32 r_, bytes32 vs_)
cancelAuthorization
nonpayablefunction cancelAuthorization(address authorizer_, bytes32 nonce_, uint8 v_, bytes32 r_, bytes32 s_)
delegate
nonpayablefunction delegate(address delegatee_)
delegateBySig
nonpayablefunction delegateBySig(address account_, address delegatee_, uint256 nonce_, uint256 expiry_, bytes signature_)
delegateBySig
nonpayablefunction delegateBySig(address delegatee_, uint256 nonce_, uint256 expiry_, uint8 v_, bytes32 r_, bytes32 s_)
mint
nonpayablefunction mint(address recipient_, uint256 amount_)
permit
nonpayablefunction permit(address owner_, address spender_, uint256 value_, uint256 deadline_, bytes signature_)
permit
nonpayablefunction permit(address owner_, address spender_, uint256 value_, uint256 deadline_, uint8 v_, bytes32 r_, bytes32 s_)
receiveWithAuthorization
nonpayablefunction receiveWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, bytes signature_)
receiveWithAuthorization
nonpayablefunction receiveWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, bytes32 r_, bytes32 vs_)
receiveWithAuthorization
nonpayablefunction receiveWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, uint8 v_, bytes32 r_, bytes32 s_)
transfer
nonpayablefunction transfer(address recipient_, uint256 amount_) returns (bool success_)
transferFrom
nonpayablefunction transferFrom(address sender_, address recipient_, uint256 amount_) returns (bool success_)
transferWithAuthorization
nonpayablefunction transferWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, bytes signature_)
transferWithAuthorization
nonpayablefunction transferWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, bytes32 r_, bytes32 vs_)
transferWithAuthorization
nonpayablefunction transferWithAuthorization(address from_, address to_, uint256 value_, uint256 validAfter_, uint256 validBefore_, bytes32 nonce_, uint8 v_, bytes32 r_, bytes32 s_)
events
Approval
event Approval(address indexed account, address indexed spender, uint256 amount)
AuthorizationCanceled
event AuthorizationCanceled(address indexed authorizer, bytes32 indexed nonce)
AuthorizationUsed
event AuthorizationUsed(address indexed authorizer, bytes32 indexed nonce)
DelegateChanged
event DelegateChanged(address indexed delegator, address indexed fromDelegatee, address indexed toDelegatee)
DelegateVotesChanged
event DelegateVotesChanged(address indexed delegatee, uint256 previousBalance, uint256 newBalance)
EIP712DomainChanged
event EIP712DomainChanged()
Transfer
event Transfer(address indexed sender, address indexed recipient, uint256 amount)
errors
ArrayLengthMismatch
error ArrayLengthMismatch(uint256 accountsLength, uint256 balancesLength)
AuthorizationAlreadyUsed
error AuthorizationAlreadyUsed(address authorizer, bytes32 nonce)
AuthorizationExpired
error AuthorizationExpired(uint256 timestamp, uint256 validBefore)
AuthorizationNotYetValid
error AuthorizationNotYetValid(uint256 timestamp, uint256 validAfter)
CallerMustBePayee
error CallerMustBePayee(address caller, address payee)
EpochZero
error EpochZero()
InsufficientAllowance
error InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
InsufficientAmount
error InsufficientAmount(uint256 amount)
InvalidAccountNonce
error InvalidAccountNonce(uint256 nonce, uint256 expectedNonce)
InvalidRecipient
error InvalidRecipient(address recipient)
InvalidSignature
error InvalidSignature()
InvalidSignatureLength
error InvalidSignatureLength()
InvalidSignatureS
error InvalidSignatureS()
InvalidSignatureV
error InvalidSignatureV()
InvalidStandardGovernorDeployerAddress
error InvalidStandardGovernorDeployerAddress()
InvalidUInt16
error InvalidUInt16()
InvalidUInt240
error InvalidUInt240()
NotPastTimepoint
error NotPastTimepoint(uint48 timepoint, uint48 clock)
NotStandardGovernor
error NotStandardGovernor()
SignatureExpired
error SignatureExpired(uint256 deadline, uint256 timestamp)
SignerMismatch
error SignerMismatch()
StartEpochAfterEndEpoch
error StartEpochAfterEndEpoch()
creation bytecode
0x61010060405234801562000011575f80fd5b50604051620040a4380380620040a4833981016040819052620000349162000775565b6040518060400160405280600b81526020016a05a65726f206279204d5e360ac1b815250604051806040016040528060048152602001635a45524f60e01b8152506006828282828080805f90816200008d9190620008d4565b50466080526200009c6200018a565b60a0525060039150620000b290508382620008d4565b5060ff1660c052505050506001600160a01b03841660e08190529050620000ec576040516333927a8160e21b815260040160405180910390fd5b815181518082146200012057604051631f4bb7c160e31b815260048101839052602481018290526044015b60405180910390fd5b5f5b828110156200017e5762000175858281518110620001445762000144620009a0565b6020026020010151858381518110620001615762000161620009a0565b60200260200101516200022660201b60201c565b60010162000122565b50505050505062000ab8565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f604051620001be9190620009b4565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6200023182620002e4565b805f0362000256576040516377b8dde360e01b81526004810182905260240162000117565b6040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f620002a2826200031b565b9050620002af8162000349565b620002bb838262000362565b620002df620002d884620002ce6200037e565b61ffff166200038e565b8262000426565b505050565b6001600160a01b0381166200031857604051630bc2c5df60e11b81526001600160a01b038216600482015260240162000117565b50565b5f6001600160f01b038211156200034557604051632a49c10d60e01b815260040160405180910390fd5b5090565b620002df60056200103a6200043e60201b178362000452565b6200037a82620010456200059b60201b17836200059f565b5050565b5f62000389620005ca565b905090565b5f815f03620003b057604051637d6ec40560e11b815260040160405180910390fd5b6001600160a01b0383165f90815260076020526040902080545b80156200041a575f19015f620003e883835f91825260209091200190565b805490915061ffff1685106200041357546201000090046001600160a01b0316925062000420915050565b50620003ca565b84925050505b92915050565b6200037a82620010456200059b60201b1783620005f8565b5f6200044b828462000a42565b9392505050565b5f80806200045f6200037e565b86549091505f819003620004d8578660405180604001604052808461ffff1681526020016200048f5f898b60201c565b6001600160f01b0390811690915282546001810184555f938452602080852084519190940151909216620100000261ffff90921691909117910155935084925062000593915050565b5f19015f620004ef88835f91825260209091200190565b80546201000090046001600160f01b03169550905062000511858760208a901c565b815490945061ffff908116908416111562000576576040805180820190915261ffff80851682526001600160f01b0380871660208085019182528c54600181018e555f8e8152919091209451915190921662010000029216919091179101556200058f565b805461ffff16620100006001600160f01b038616021781555b5050505b935093915050565b0190565b6001600160a01b0383165f908152600660205260409020620005c390838362000452565b5050505050565b5f6213c680620005df63661bd3504262000a6c565b620005eb919062000a82565b6200038990600162000aa2565b6001600160a01b0383165f90815260086020526040812081906200061e90858562000452565b604080516001600160f01b038085168252831660208201529294509092506001600160a01b038716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b80516001600160a01b038116811462000690575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715620006d457620006d462000695565b604052919050565b5f6001600160401b03821115620006f757620006f762000695565b5060051b60200190565b5f82601f83011262000711575f80fd5b815160206200072a6200072483620006dc565b620006a9565b8083825260208201915060208460051b8701019350868411156200074c575f80fd5b602086015b848110156200076a578051835291830191830162000751565b509695505050505050565b5f805f6060848603121562000788575f80fd5b620007938462000679565b602085810151919450906001600160401b0380821115620007b2575f80fd5b818701915087601f830112620007c6575f80fd5b8151620007d76200072482620006dc565b81815260059190911b8301840190848101908a831115620007f6575f80fd5b938501935b828510156200081f576200080f8562000679565b82529385019390850190620007fb565b60408a0151909750945050508083111562000838575f80fd5b5050620008488682870162000701565b9150509250925092565b600181811c908216806200086757607f821691505b6020821081036200088657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002df57805f5260205f20601f840160051c81016020851015620008b35750805b601f840160051c820191505b81811015620005c3575f8155600101620008bf565b81516001600160401b03811115620008f057620008f062000695565b620009088162000901845462000852565b846200088c565b602080601f8311600181146200093e575f8415620009265750858301515b5f19600386901b1c1916600185901b17855562000998565b5f85815260208120601f198616915b828110156200096e578886015182559484019460019091019084016200094d565b50858210156200098c57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f808354620009c38162000852565b60018281168015620009de5760018114620009f45762000a22565b60ff198416875282151583028701945062000a22565b875f526020805f205f5b8581101562000a195781548a820152908401908201620009fe565b50505082870194505b50929695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160f01b0381811683821601908082111562000a655762000a6562000a2e565b5092915050565b8181038181111562000420576200042062000a2e565b5f8262000a9d57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000420576200042062000a2e565b60805160a05160c05160e0516135b162000af35f395f81816107340152610b1701525f6103b301525f6109d901525f6109a401526135b15ff3fe608060405234801561000f575f80fd5b50600436106102f9575f3560e01c806384b0196e11610192578063b7b72899116100e8578063e3ee160e11610093578063e94bb2231161006e578063e94bb2231461072f578063edc41f6414610756578063ef55bec614610769575f80fd5b8063e3ee160e146106c8578063e7a324dc146106db578063e94a010214610702575f80fd5b8063d505accf116100c3578063d505accf14610664578063d916948714610677578063dd62ed3e1461069e575f80fd5b8063b7b728991461062b578063c3cda5201461063e578063cf09299514610651575f80fd5b80639fd5a6cf11610148578063a9059cbb11610123578063a9059cbb146105f2578063ac9ebbd014610605578063ace150a514610618575f80fd5b80639fd5a6cf146105a5578063a08cb48b146105b8578063a0cc6a68146105cb575f80fd5b806391ddadf41161017857806391ddadf41461056b57806395d89b411461058a5780639ab24eb014610592575f80fd5b806384b0196e1461053d57806388b7ab6314610558575f80fd5b806340c10f19116102525780635c19a95c116101fd57806377eea146116101d857806377eea146146104e45780637ecebe00146104f75780637f2eecc314610516575f80fd5b80635c19a95c146104ab5780635c7e5d5f146104be57806370a08231146104d1575f80fd5b8063532992c51161022d578063532992c514610472578063587cde1e146104855780635a049a7014610498575f80fd5b806340c10f19146104285780634bf5d7e91461043d5780634d6d744114610445575f80fd5b806330adf81f116102b25780633a46b1a81161028d5780633a46b1a8146103ef5780633cb1838f14610402578063406f84de14610415575f80fd5b806330adf81f14610387578063313ce567146103ae5780633644e515146103e7575f80fd5b80630d33fbbd116102e25780630d33fbbd1461033e57806318160ddd1461035e57806323b872dd14610374575f80fd5b806306fdde03146102fd578063095ea7b31461031b575b5f80fd5b61030561077c565b6040516103129190612b72565b60405180910390f35b61032e610329366004612ba5565b61080b565b6040519015158152602001610312565b61035161034c366004612bcf565b610821565b6040516103129190612c3b565b61036661087a565b604051908152602001610312565b61032e610382366004612c4d565b6108b0565b6103667f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d57f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610312565b6103666109a1565b6103666103fd366004612ba5565b6109fb565b610351610410366004612c8b565b610a43565b610366610423366004612ba5565b610a70565b61043b610436366004612ba5565b610a90565b005b610305610b0a565b61044d610b14565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b61043b610480366004612cab565b610ba2565b61044d610493366004612ce3565b610bc7565b61043b6104a6366004612d13565b610bdd565b61043b6104b9366004612ce3565b610c04565b6103666104cc366004612d5f565b610c11565b6103666104df366004612ce3565b610c57565b61044d6104f2366004612ba5565b610c8f565b610366610505366004612ce3565b60016020525f908152604090205481565b6103667fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de881565b610545610cb3565b6040516103129796959493929190612d76565b61043b610566366004612ee0565b610deb565b610573610e1a565b60405165ffffffffffff9091168152602001610312565b610305610e2c565b6103666105a0366004612ce3565b610eb8565b61043b6105b3366004612f63565b610eca565b61043b6105c6366004612fd4565b610eda565b6103667f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a226781565b61032e610600366004612ba5565b610f04565b610366610613366004612bcf565b610f10565b61043b610626366004612fd4565b610f1c565b61043b61063936600461303a565b610f3c565b61043b61064c36600461308f565b610f59565b61043b61065f366004612ee0565b610f93565b61043b6106723660046130e5565b610fb3565b6103667f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a159742981565b6103666106ac36600461314e565b600460209081525f928352604080842090915290825290205481565b61043b6106d6366004613185565b610fc3565b6103667fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61032e610710366004612ba5565b600260209081525f928352604080842090915290825290205460ff1681565b61044d7f000000000000000000000000000000000000000000000000000000000000000081565b61043b610764366004612f63565b610fee565b61043b610777366004613185565b61101a565b60605f805461078a90613201565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613201565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b5050505050905090565b5f610817338484611049565b5060015b92915050565b60605f61082d836110b6565b9050610838816110f7565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260066020526040902061086f90610869866110b6565b83611151565b9150505b9392505050565b5f61088b610886611349565b611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905090565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461098b5782811015610956576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815233600482015260248101829052604481018490526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff85165f908152600460209081526040808320338452909152902083820390555b61099685858561135e565b506001949350505050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146109d6576109d1611427565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f80610a06836110b6565b9050610a11816110f7565b610a1b84826114c1565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16949350505050565b60605f610a4f836110b6565b9050610a5a816110f7565b610a686005610869866110b6565b949350505050565b5f80610a7b836110b6565b9050610a86816110f7565b610a1b84826114ef565b610a98610b14565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc576040517fe09ee43b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b06828261151d565b5050565b60606109d16115e3565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663585e78af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109d1919061324c565b610bb784610bb08686611603565b8484611677565b610bc1848461168b565b50505050565b5f61081b82610bd4611349565b61ffff16611719565b610bf385610beb8787611603565b8585856117fa565b610bfd858561168b565b5050505050565b610c0e338261180a565b50565b5f80610c1c836110b6565b9050610c27816110f7565b610c3081611352565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff169392505050565b5f610c6982610c64611349565b6114ef565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692915050565b5f80610c9a836110b6565b9050610ca5816110f7565b610a68848261ffff16611719565b5f606080828080838146308280604051908082528060200260200182016040528015610ce9578160200160208202803683370190505b507f0f000000000000000000000000000000000000000000000000000000000000009493929190848054610d1c90613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4890613201565b8015610d935780601f10610d6a57610100808354040283529160200191610d93565b820191905f5260205f20905b815481529060010190602001808311610d7657829003601f168201915b505050505094506040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525093929190965096509650965096509650965090919293949596565b610e0387610dfd898989898989611875565b836118fc565b610e11878787878787611947565b50505050505050565b5f610e23611349565b61ffff16905090565b60038054610e3990613201565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6590613201565b8015610eb05780601f10610e8757610100808354040283529160200191610eb0565b820191905f5260205f20905b815481529060010190602001808311610e9357829003601f168201915b505050505081565b5f610c6982610ec5611349565b6114c1565b610bfd85610dfd878787876119ca565b610eec88610bb08a8a8a8a8a8a611875565b610efa888888888888611947565b5050505050505050565b5f61081733848461135e565b5f610a68848484611a70565b610f2e88610bb08a8a8a8a8a8a611ad4565b610efa888888888888611b50565b610f4a83610dfd8585611603565b610f54838361168b565b505050565b5f610f65878787611a70565b90505f610f7482868686611c69565b9050610f7f86611c8d565b610f898188611cd0565b610efa818961180a565b610fa587610dfd898989898989611ad4565b610e11878787878787611b50565b610e1187610beb898989896119ca565b610fd589610beb8b8b8b8b8b8b611ad4565b610fe3898989898989611b50565b505050505050505050565b610ff782611c8d565b61100685610dfd868686611a70565b6110108584611cd0565b610bfd858561180a565b61102c89610beb8b8b8b8b8b8b611875565b610fe3898989898989611947565b5f6108738284613294565b0190565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61ffff8211156110f3576040517f43e3c0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5090565b5f611100611349565b90508061ffff168261ffff1610610b06576040517f6ef3d3ec00000000000000000000000000000000000000000000000000000000815261ffff80841660048301528216602482015260440161094d565b60608261ffff165f03611190576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161ffff168361ffff1611156111d2576040517fe0ff148000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6111dd84846132d2565b6111e89060016132ed565b90508061ffff1667ffffffffffffffff81111561120757611207612e0c565b604051908082528060200260200182016040528015611230578160200160208202803683370190505b5085549092505b8015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61127287835f91825260209091200190565b805490915061ffff165b8561ffff16811161133957815485517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9590950194620100009091047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690869061ffff87169081106112ef576112ef613308565b6020026020010181815250508361ffff165f0361130f5750505050610873565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9095019461127c565b5050611237565b50509392505050565b5f6109d1611d41565b5f61081b600583611d69565b61136782611e36565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c691815260200190565b60405180910390a35f6113d882611e9b565b90505f6113e3611349565b90506113ef8583611ef4565b611406611400868361ffff16611719565b83611f01565b6114108483611f0e565b610bfd611421858361ffff16611719565b83611f1b565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f1b5f6040516114599190613335565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526008602052604081206108739083611d69565b73ffffffffffffffffffffffffffffffffffffffff82165f9081526006602052604081206108739083611d69565b61152682611e36565b805f03611562576040517f77b8dde30000000000000000000000000000000000000000000000000000000081526004810182905260240161094d565b60405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35f6115b982611e9b565b90506115c481611f28565b6115ce8382611f0e565b610f546115dd84610bd4611349565b82611f1b565b60606040518060a001604052806065815260200161351760659139905090565b604080517f158b0a9edf7a828aad02f63cd515c68ef2f50ba807396f6d12842833a1597429602082015273ffffffffffffffffffffffffffffffffffffffff841691810191909152606081018290525f90610873906080015b60405160208183030381529060405280519060200120611f36565b610bc161168685858585611f97565b611fd2565b6116958282612196565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f1cdd46ff242716cdaa72d159d339a485b3438398348d68f09d7c8c0a59353d8191a35050565b5f815f03611753576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83165f90815260076020526040902080545b80156117f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6117b583835f91825260209091200190565b805490915061ffff1685106117eb575462010000900473ffffffffffffffffffffffffffffffffffffffff16925061081b915050565b5061177a565b50929392505050565b610bfd611686868686868661221f565b5f6118158284612267565b90505f6118228483612290565b90505f61183185610c64611349565b9050807dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff165f03611861575050505050565b61186b8282611f01565b610bfd8382611f1b565b604080517fd099cc98ef71107a616c4f0f941f04c322d8e254fe26b3c6668db87aae413de8602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b979650505050505050565b5f6119088484846124f6565b90505f81600581111561191d5761191d61340a565b036119285750505050565b61193384848461253a565b1561193e5750505050565b610bc181611fd2565b3373ffffffffffffffffffffffffffffffffffffffff8616146119b4576040517f1c5939f300000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8616602482015260440161094d565b6119c2868686868686611b50565b505050505050565b5f6119d482611c8d565b6119df858585611049565b73ffffffffffffffffffffffffffffffffffffffff8581165f818152600160208181526040928390208054928301905582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918101919091529182019290925291861660608301526080820185905260a082015260c08101839052611a679060e00161165c565b95945050505050565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf602082015273ffffffffffffffffffffffffffffffffffffffff85169181019190915260608101839052608081018290525f90610a689060a00161165c565b604080517f7c7c6cdb67a18743f49ec6fa9b35f50d52ed05cbed4cc592e13b44501c1a2267602082015273ffffffffffffffffffffffffffffffffffffffff8089169282019290925290861660608201526080810185905260a0810184905260c0810183905260e081018290525f906118f1906101000161165c565b824211611b92576040517f498ff9a20000000000000000000000000000000000000000000000000000000081524260048201526024810184905260440161094d565b814210611bd4576040517fb3fcd33e0000000000000000000000000000000000000000000000000000000081524260048201526024810183905260440161094d565b611bde8682612196565b73ffffffffffffffffffffffffffffffffffffffff86165f81815260026020908152604080832085845290915280822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055518392917f98de503528ee59b575ef0c0a2576a82497bfc029a5685b209e9ec333479b10a591a36119c286868661135e565b5f80611c7786868686612682565b92509050611c8481611fd2565b50949350505050565b80421115610c0e576040517ff88f04900000000000000000000000000000000000000000000000000000000081526004810182905242602482015260440161094d565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260016020819052604090912080549182019055818114610f54576040517fd021c557000000000000000000000000000000000000000000000000000000008152600481018390526024810182905260440161094d565b5f6213c680611d5463661bd35042613437565b611d5e919061344a565b6109d1906001613482565b5f8161ffff165f03611da7576040517ffadd880a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82545b8015611e2d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f611de585835f91825260209091200190565b805490915061ffff808616911611611e2757546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061081b9050565b50611daa565b505f9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610c0e576040517f17858bbe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161094d565b5f7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156110f3576040517f2a49c10d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b068261278f8361279a565b610b068261278f836127c9565b610b06826110458361279a565b610b0682611045836127c9565b610f54600561103a83612879565b5f611f3f6109a1565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f805f611fa5868686612a39565b90925090505f826005811115611fbd57611fbd61340a565b14611fc857816118f1565b6118f18782612a80565b5f816005811115611fe557611fe561340a565b03611fed5750565b60018160058111156120015761200161340a565b03612038576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281600581111561204c5761204c61340a565b03612083576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038160058111156120975761209761340a565b036120ce576040517fbf4bf5b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048160058111156120e2576120e261340a565b03612119576040517fff551e8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581600581111561212d5761212d61340a565b03612164576040517f10c74b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82165f90815260026020908152604080832084845290915290205460ff1615610b06576040517fd309466d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024810182905260440161094d565b5f805f61222e87878787612682565b90925090505f8260058111156122465761224661340a565b14612251578161225b565b61225b8882612a80565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff83161561228a5782610873565b50919050565b5f8061229a611349565b73ffffffffffffffffffffffffffffffffffffffff85165f908152600760205260408120805492935091908190036123865760408051808201825261ffff808616825273ffffffffffffffffffffffffffffffffffffffff80891660208085018281528854600181018a555f8a81529283209651960180549151851662010000027fffffffffffffffffffff000000000000000000000000000000000000000000009092169690951695909517949094179092559251909289169182917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a485935050505061081b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f6123bb83835f91825260209091200190565b805460405173ffffffffffffffffffffffffffffffffffffffff62010000909204821697509192508781169187918a16907f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f905f90a4805461ffff90811690851611156124a8576040805180820190915261ffff808616825273ffffffffffffffffffffffffffffffffffffffff808916602080850191825287546001810189555f89815291909120945194018054915190921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090911693909216929092171790556124ec565b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8816021781555b5050505092915050565b5f805f6125038585612ac3565b90925090505f82600581111561251b5761251b61340a565b146125265781612530565b6125308682612a80565b9695505050505050565b5f805f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401612567929190613495565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516125e891906134ad565b5f60405180830381855afa9150503d805f8114612620576040519150601f19603f3d011682016040523d82523d5f602084013e612625565b606091505b509150915081801561263957506020815110155b8015612530575080517f1626ba7e000000000000000000000000000000000000000000000000000000009061267790830160209081019084016134c8565b149695505050505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126b75750600390505f612786565b8460ff16601b141580156126cf57508460ff16601c14155b156126df5750600490505f612786565b604080515f81526020810180835288905260ff871691810191909152606081018590526080810184905260019060a0016020604051602081039080840390855afa15801561272f573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161561277d575f81612781565b60015f5b915091505b94509492505050565b5f61087382846134df565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600660205260409020610bfd908383612879565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260086020526040812081906127fa908585612879565b604080517dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80851682528316602082015292945090925073ffffffffffffffffffffffffffffffffffffffff8716917fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724910160405180910390a25050505050565b5f805f612884611349565b86549091505f819003612914578660405180604001604052808461ffff1681526020016128b55f898b63ffffffff16565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184555f938452602080852084519190940151909216620100000261ffff909216919091179101559350849250612a31915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015f61294988835f91825260209091200190565b80546201000090047dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1695509050612983858763ffffffff8a16565b815490945061ffff90811690841611156129fd576040805180820190915261ffff80851682527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871660208085019182528c54600181018e555f8e815291909120945191519092166201000002921691909117910155612a2d565b805461ffff16620100007dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616021781555b5050505b935093915050565b5f80601b60ff84901c017f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416612a7287838884612682565b935093505050935093915050565b5f8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612abb576005610873565b505f92915050565b5f808251604114612ad95750600290505f612b00565b6020830151604084015160608501515f1a9190612af887848484612682565b945094505050505b9250929050565b5f5b83811015612b21578181015183820152602001612b09565b50505f910152565b5f8151808452612b40816020860160208601612b07565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f6108736020830184612b29565b73ffffffffffffffffffffffffffffffffffffffff81168114610c0e575f80fd5b5f8060408385031215612bb6575f80fd5b8235612bc181612b84565b946020939093013593505050565b5f805f60608486031215612be1575f80fd5b8335612bec81612b84565b95602085013595506040909401359392505050565b5f815180845260208085019450602084015f5b83811015612c3057815187529582019590820190600101612c14565b509495945050505050565b602081525f6108736020830184612c01565b5f805f60608486031215612c5f575f80fd5b8335612c6a81612b84565b92506020840135612c7a81612b84565b929592945050506040919091013590565b5f8060408385031215612c9c575f80fd5b50508035926020909101359150565b5f805f8060808587031215612cbe575f80fd5b8435612cc981612b84565b966020860135965060408601359560600135945092505050565b5f60208284031215612cf3575f80fd5b813561087381612b84565b803560ff81168114612d0e575f80fd5b919050565b5f805f805f60a08688031215612d27575f80fd5b8535612d3281612b84565b945060208601359350612d4760408701612cfe565b94979396509394606081013594506080013592915050565b5f60208284031215612d6f575f80fd5b5035919050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f612db060e0830189612b29565b8281036040840152612dc28189612b29565b905086606084015273ffffffffffffffffffffffffffffffffffffffff861660808401528460a084015282810360c0840152612dfe8185612c01565b9a9950505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112612e48575f80fd5b813567ffffffffffffffff80821115612e6357612e63612e0c565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612ea957612ea9612e0c565b81604052838152866020858801011115612ec1575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f805f805f60e0888a031215612ef6575f80fd5b8735612f0181612b84565b96506020880135612f1181612b84565b955060408801359450606088013593506080880135925060a0880135915060c088013567ffffffffffffffff811115612f48575f80fd5b612f548a828b01612e39565b91505092959891949750929550565b5f805f805f60a08688031215612f77575f80fd5b8535612f8281612b84565b94506020860135612f9281612b84565b93506040860135925060608601359150608086013567ffffffffffffffff811115612fbb575f80fd5b612fc788828901612e39565b9150509295509295909350565b5f805f805f805f80610100898b031215612fec575f80fd5b8835612ff781612b84565b9750602089013561300781612b84565b979a9799505050506040860135956060810135956080820135955060a0820135945060c0820135935060e0909101359150565b5f805f6060848603121561304c575f80fd5b833561305781612b84565b925060208401359150604084013567ffffffffffffffff811115613079575f80fd5b61308586828701612e39565b9150509250925092565b5f805f805f8060c087890312156130a4575f80fd5b86356130af81612b84565b955060208701359450604087013593506130cb60608801612cfe565b92506080870135915060a087013590509295509295509295565b5f805f805f805f60e0888a0312156130fb575f80fd5b873561310681612b84565b9650602088013561311681612b84565b9550604088013594506060880135935061313260808901612cfe565b925060a0880135915060c0880135905092959891949750929550565b5f806040838503121561315f575f80fd5b823561316a81612b84565b9150602083013561317a81612b84565b809150509250929050565b5f805f805f805f805f6101208a8c03121561319e575f80fd5b89356131a981612b84565b985060208a01356131b981612b84565b975060408a0135965060608a0135955060808a0135945060a08a013593506131e360c08b01612cfe565b925060e08a013591506101008a013590509295985092959850929598565b600181811c9082168061321557607f821691505b60208210810361228a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6020828403121561325c575f80fd5b815161087381612b84565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156132cb576132cb613267565b5092915050565b61ffff8281168282160390808211156132cb576132cb613267565b61ffff8181168382160190808211156132cb576132cb613267565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8083545f60018260011c9150600183168061335257607f831692505b6020808410820361338a577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b81801561339e57600181146133d1576133fc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528415158502890196506133fc565b5f8a8152602090205f5b868110156133f45781548b8201529085019083016133db565b505084890196505b509498975050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8181038181111561081b5761081b613267565b5f8261347d577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b8082018082111561081b5761081b613267565b828152604060208201525f610a686040830184612b29565b5f82516134be818460208701612b07565b9190910192915050565b5f602082840312156134d8575f80fd5b5051919050565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8281168282160390808211156132cb576132cb61326756fe6d6f64653d65706f63682665706f6368556e6465726c79696e67536f757263653d626c6f636b54696d657374616d702665706f63685374617274696e6754696d657374616d703d313731333039393630302665706f6368506572696f643d31323936303030a2646970667358221220ec4bfaca67cace12d617502d6dc02861dfc6d4b972ddd6969c16d79c23c3696464736f6c634300081700330000000000000000000000009fff4be0003d0716f37f8d2574e89f1a5d0745c800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000b400000000000000000000000000000000000000000000000000000000000000056000000000000000000000000333c9430c42ca172ccf744c139107f9fdad0c44b000000000000000000000000ab36309a87fc548f5e4b40e1b1f326feb5ee7772000000000000000000000000333c9430c42ca172ccf744c139107f9fdad0c44b000000000000000000000000ab36309a87fc548f5e4b40e1b1f326feb5ee7772000000000000000000000000707354c03f29c327027a85a7b5d656659c74d41400000000000000000000000068c29cdb852196f0b000e08695b0fd8d66a2ed6d0000000000000000000000000d2063d4c8007d597a88016f9196cdb3fa06ca9600000000000000000000000084d34c7839a6751a3ab0eebe616b3bf73194bace00000000000000000000000084d34c7839a6751a3ab0eebe616b3bf73194bace0000000000000000000000000eaeed79102fd7510cacb87a3c960b6a79689806000000000000000000000000e158da50d6d53fde91663c593e3a20b9f44a5aa300000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c600000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c6000000000000000000000000a0c865618efb3c9af63fa60e4440b32a3723009e00000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c60000000000000000000000002223ed3a3e38e04182be9400393449b3ec5eab56000000000000000000000000a25ea37c36f724e4c0ee7dd215ff1d3093a1c602000000000000000000000000ec8280257b1b43c4ec33d961fb330506eec80b5400000000000000000000000036513366146c133608696a8bca5b84f14ed1319200000000000000000000000075c97e183d309b945cd71e872519cd827f4a81d30000000000000000000000003fa21fd164aba0753c79ca4072429917a9079c2200000000000000000000000048a9f30c4b619aed265e145666abe572a1b2730500000000000000000000000050b4961b1a56bc3c02e193bd7121239f8bcb0cfc000000000000000000000000ce9858e62ae3f8e2555c59e42089f383c0388cc0000000000000000000000000ccf38089f288c31fe3633b592c7a36cf9d471bd400000000000000000000000018d1334d0ffb97f5c2279f832f022b7fcc9dc2c6000000000000000000000000faf266939b7599ce7a9be806c39e73d82e90ba11000000000000000000000000408505ec4bb812b9b649a653390a7b683cea3d540000000000000000000000007f8aa300e8d505aeb32acdf110a786a3a8f0c6ce0000000000000000000000002b74d94bf2a2bb0c09cc02d6d9a1be37a5a8a420000000000000000000000000f17009ed9d1af2e7e52c069c7058d57c425deb2c0000000000000000000000004005239c0afa457805d0c11c07d6b401c28d96a100000000000000000000000019ffc27932daa19b10ccff8b7fcc233b7f6a661e000000000000000000000000afa858d9fd87e5e24823b040dcbae1aeb4d9afd00000000000000000000000005b8f182646af4959e2aa0c289c963b482244968e000000000000000000000000125db22579a0e0515810b02b603d837950acea84000000000000000000000000c07f3487573c41e46d2c095b5cea99c40b42565d0000000000000000000000005ee98ab5f82386f98d021eea633c2c3c91d585a4000000000000000000000000119144c125310f020d38b963101c6a2d85769bd30000000000000000000000006e556ded4d18a290c8144ea0df69a1bd72077d87000000000000000000000000f9fb6d5628c2e40692d801a80b6a70443514b3d70000000000000000000000005efca4e542b9aeaabde027c71bcf7258c22be5e3000000000000000000000000c989825d62cebfdc51cf14f86ba4966771784795000000000000000000000000cf7f91cd9f2eb8157e0cc6fec4881042f3301c000000000000000000000000009cf028e052bf47824b7bebde609f031690aaf5ea00000000000000000000000024b388aa696a6409a57051e1dc469c7a26adf5c60000000000000000000000004739845330da016e268a883d3a0db9a4f2271f46000000000000000000000000459b51dcd5c53873391a278d8271fdb698b21a90000000000000000000000000d1cd6afe15b536c43a3240a372f47401330086870000000000000000000000009d8ecaf6e18d1e22e856a6331d2ab095052dea840000000000000000000000006187e730381cb82af6d91b642378e61a370e8f1f0000000000000000000000009591166b8dc800edb6a982137bf64121b46aea9e0000000000000000000000003b13d2e37ae6cc877ac05d778761c51377f1424c000000000000000000000000bed8faa0740ea5f5e5fa0aa2645aad8433f7e20f000000000000000000000000bb65b21e72be9d01a6f34173076d74797fa5186700000000000000000000000065c82d14325888ffbd2a8d9a58df32159d7758ce0000000000000000000000009e65c80d33b992e63364dbabecbd39c43619d0a1000000000000000000000000c3c34bcf8779551fdc43f73a2c2ff217279ae1fd000000000000000000000000a806cadca8e84fb85fe4e7af28fa06eda19dbcd900000000000000000000000000ecafb8ad59e0e18ae0e8f2254979f7850aac7f000000000000000000000000d70804463bb2760c3384fc87bbe779e3d91bab3a000000000000000000000000d0fea07a3545be25ef26d99e2d7d968482963d86000000000000000000000000ea657724abd147f848f57f2e33cbd7fc2c9fbb2100000000000000000000000040cfbc8f85fc37790bbe1be1fab3bfd9933013ee0000000000000000000000008da0916d04f567e29c0a563722a96e32fece08c20000000000000000000000008beaab8ad0f3a294351ec83255cbfb631e0de466000000000000000000000000085841edbd2925e9be53151de647a3879fc6cc2c000000000000000000000000b948abd79390e0a35aea051ea9981e1a0d730fd60000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000009184e72a000000000000000000000000000000000000000000000000000000009184e72a00000000000000000000000000000000000000000000000000000005700c05df6c000000000000000000000000000000000000000000000000000005700c05df6c0000000000000000000000000000000000000000000000000000072c19b9cd040000000000000000000000000000000000000000000000000000072c19b9cd040000000000000000000000000000000000000000000000000000074f9234e1b0000000000000000000000000000000000000000000000000000000e4afb733440000000000000000000000000000000000000000000000000000001d85aaf4680000000000000000000000000000000000000000000000000000007e214889a20000000000000000000000000000000000000000000000000000007e214889a200000000000000000000000000000000000000000000000000000023197cc6260000000000000000000000000000000000000000000000000000002b580c2cbc0000000000000000000000000000000000000000000000000000003a2743781a0000000000000000000000000000000000000000000000000000002459975b440000000000000000000000000000000000000000000000000000000549e79395a0000000000000000000000000000000000000000000000000000007d1e316744000000000000000000000000000000000000000000000000000000961cce7b1c00000000000000000000000000000000000000000000000000000042ade29006000000000000000000000000000000000000000000000000000001d440d521700000000000000000000000000000000000000000000000000000013ed2add4c00000000000000000000000000000000000000000000000000000015eadeb6df80000000000000000000000000000000000000000000000000000012c74fd50d800000000000000000000000000000000000000000000000000000ced078ace0000000000000000000000000000000000000000000000000000000d4a9a7abad8000000000000000000000000000000000000000000000000000008aa48e2626000000000000000000000000000000000000000000000000000000f5cdb1fa3a000000000000000000000000000000000000000000000000000000cb6276480b800000000000000000000000000000000000000000000000000000861a55b565800000000000000000000000000000000000000000000000000000b44165a501800000000000000000000000000000000000000000000000000001bf7567e74800000000000000000000000000000000000000000000000000000184dadf40980000000000000000000000000000000000000000000000000000011f82a586e000000000000000000000000000000000000000000000000000000084d97f638c0000000000000000000000000000000000000000000000000000002b2e7f494c0000000000000000000000000000000000000000000000000000001ca4107028000000000000000000000000000000000000000000000000000000074536f280000000000000000000000000000000000000000000000000000000046802acf8000000000000000000000000000000000000000000000000000000023401567c00000000000000000000000000000000000000000000000000000003866828b800000000000000000000000000000000000000000000000000000031921cabb000000000000000000000000000000000000000000000000000000003becec9c800000000000000000000000000000000000000000000000000000002dd3539ac0000000000000000000000000000000000000000000000000000060551dd53a4000000000000000000000000000000000000000000000000000000a96bfaa96400000000000000000000000000000000000000000000000000000043db5a4e9c00000000000000000000000000000000000000000000000000000021edacad3c00000000000000000000000000000000000000000000000000000010f6d6d0b0000000000000000000000000000000000000000000000000000000087b6b6858000000000000000000000000000000000000000000000000000000087b6b685800000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c0000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c00000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000008d6b32b8f800000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000001791de1ae00000000000000000000000000000000000000000000000000000000b5041ba080000000000000000000000000000000000000000000000000000001791de1ae000000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000005a820dd0400000000000000000000000000000000000000000000000000000002d40ff4700000000000000000000000000000000000000000000000000000002f23bb419c0000000000000000000000000000000000000000000000000000000b5041ba0800000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000002d40ff47000000000000000000000000000000000000000000000000000000005a820dd040000000000000000000000000000000000000000000000000000001791de1ae00000000000000000000000000000000000000000000000000000000b5041ba080000000000000000000000000000000000000000000000000000000f15ac554800000000000000000000000000000000000000000000000000000003c56b8f6400000000000000000000000000000000000000000000000000000001e2b54da000000000000000000000000000000000000000000000000000000003c56b8f64000000000000000000000000000000000000000000000000000000078ad62aa40000000000000000000000000000000000000000000000000000002f23bb419c0