23 txs
51 calls
constructor
constructor(address _vusd, uint256 _maxMintLimit)
functions
availableMintage
viewfunction availableMintage() view returns (uint256 _mintage)
calculateMintage
viewfunction calculateMintage(address _token, uint256 _amountIn) view returns (uint256 _mintage)
cTokens
viewfunction cTokens(address) view returns (address)
governor
viewfunction governor() view returns (address)
isWhitelistedToken
viewfunction isWhitelistedToken(address _address) view returns (bool)
MAX_BPS
viewfunction MAX_BPS() view returns (uint256)
maxMintLimit
viewfunction maxMintLimit() view returns (uint256)
mintingFee
viewfunction mintingFee() view returns (uint256)
NAME
viewfunction NAME() view returns (string)
oracles
viewfunction oracles(address) view returns (address)
priceTolerance
viewfunction priceTolerance() view returns (uint256)
stalePeriod
viewfunction stalePeriod(address) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
VERSION
viewfunction VERSION() view returns (string)
vusd
viewfunction vusd() view returns (address)
vusdDecimals
viewfunction vusdDecimals() view returns (uint8)
whitelistedTokens
viewfunction whitelistedTokens() view returns (address[])
addWhitelistedToken
nonpayablefunction addWhitelistedToken(address _token, address _cToken, address _oracle, uint256 _stalePeriod)
mint
nonpayablefunction mint(address _token, uint256 _amountIn, uint256 _minAmountOut, address _receiver)
mint
nonpayablefunction mint(uint256 _amount)
removeWhitelistedToken
nonpayablefunction removeWhitelistedToken(address _token)
updateMaxMintAmount
nonpayablefunction updateMaxMintAmount(uint256 _newMintLimit)
updateMintingFee
nonpayablefunction updateMintingFee(uint256 _newMintingFee)
updatePriceTolerance
nonpayablefunction updatePriceTolerance(uint256 _newPriceTolerance)
updateStalePeriod
nonpayablefunction updateStalePeriod(address _oracle, uint256 _newStalePeriod)
events
Mint
event Mint(address indexed tokenIn, uint256 amountIn, uint256 amountInAfterTransferFee, uint256 mintage, address receiver)
MintingLimitUpdated
event MintingLimitUpdated(uint256 previousMintLimit, uint256 newMintLimit)
UpdatedMintingFee
event UpdatedMintingFee(uint256 previousMintingFee, uint256 newMintingFee)
UpdatedPriceTolerance
event UpdatedPriceTolerance(uint256 previousPriceTolerance, uint256 newPriceTolerance)
UpdatedStalePeriod
event UpdatedStalePeriod(address indexed oracle, uint256 previousStalePeriod, uint256 newStalePeriod)
WhitelistedTokenAdded
event WhitelistedTokenAdded(address indexed token, address cToken, address oracle)
WhitelistedTokenRemoved
event WhitelistedTokenRemoved(address indexed token)
errors
No errors.
creation bytecode
0x60c060405260646003553480156200001657600080fd5b5060405162004fd738038062004fd783398181016040528101906200003c919062000a12565b6001600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620000b7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ae9062000cf2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050806002819055508173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013c57600080fd5b505afa15801562000151573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000177919062000aab565b60ff1660a08160ff1660f81b81525050620001d9736b175474e89094c44da98b954eedeac495271d0f735d3a536e4d6dbd6114cc1ead35777bab948e364373aed0c38402a5d19df6e4c03f4e2dced6e29c1ee9610e106200028760201b60201c565b6200022c73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb487339aa39c021dfbae8fac545936693ac917d5e7563738fffffd4afb6115b954bd326cbe7b4ba576818f6620151806200028760201b60201c565b6200027f73dac17f958d2ee523a2206206994597c13d831ec773f650c3d88d12db855b8bf7d11be6c55a4e07dcc9733e7d1eab13ad0104d2750b8863b489d65364e32d620151806200028760201b60201c565b50506200105e565b620002a2846007620004ce60201b620015271790919060201c565b620002e4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002db9062000d36565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000476837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff166200050660201b62001557179092919060201c565b8373ffffffffffffffffffffffffffffffffffffffff167ff264178f70a222c6991bf4849b98c3722e9f54b6e89d1fb550509113e60ae0b78484604051620004c092919062000c74565b60405180910390a250505050565b6000620004fe836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6200067860201b60201c565b905092915050565b6000811480620005a6575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b81526004016200055092919062000c74565b60206040518083038186803b1580156200056957600080fd5b505afa1580156200057e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a4919062000a7f565b145b620005e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005df9062000d9c565b60405180910390fd5b620006738363095ea7b360e01b84846040516024016200060a92919062000ca1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050620006f260201b60201c565b505050565b60006200068c8383620007c660201b60201c565b620006e7578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050620006ec565b600090505b92915050565b60006200075b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16620007e960201b620016b5179092919060201c565b9050600081511115620007c157808060200190518101906200077e919062000a53565b620007c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007b79062000d7a565b60405180910390fd5b5b505050565b600080836001016000848152602001908152602001600020541415905092915050565b60606200080084846000856200080960201b60201c565b90509392505050565b60608247101562000851576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008489062000d14565b60405180910390fd5b62000862856200093760201b60201c565b620008a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200089b9062000d58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051620008cf919062000c5b565b60006040518083038185875af1925050503d80600081146200090e576040519150601f19603f3d011682016040523d82523d6000602084013e62000913565b606091505b50915091506200092b8282866200094a60201b60201c565b92505050949350505050565b600080823b905060008111915050919050565b606083156200095c57829050620009af565b600083511115620009705782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a6919062000cce565b60405180910390fd5b9392505050565b600081519050620009c78162000ff6565b92915050565b600081519050620009de8162001010565b92915050565b600081519050620009f5816200102a565b92915050565b60008151905062000a0c8162001044565b92915050565b6000806040838503121562000a2657600080fd5b600062000a3685828601620009b6565b925050602062000a4985828601620009e4565b9150509250929050565b60006020828403121562000a6657600080fd5b600062000a7684828501620009cd565b91505092915050565b60006020828403121562000a9257600080fd5b600062000aa284828501620009e4565b91505092915050565b60006020828403121562000abe57600080fd5b600062000ace84828501620009fb565b91505092915050565b62000ae28162000df0565b82525050565b600062000af58262000dbe565b62000b01818562000dd4565b935062000b1381856020860162000e47565b80840191505092915050565b600062000b2c8262000dc9565b62000b38818562000ddf565b935062000b4a81856020860162000e47565b62000b558162000e7d565b840191505092915050565b600062000b6f60148362000ddf565b915062000b7c8262000e8e565b602082019050919050565b600062000b9660268362000ddf565b915062000ba38262000eb7565b604082019050919050565b600062000bbd60128362000ddf565b915062000bca8262000f06565b602082019050919050565b600062000be4601d8362000ddf565b915062000bf18262000f2f565b602082019050919050565b600062000c0b602a8362000ddf565b915062000c188262000f58565b604082019050919050565b600062000c3260368362000ddf565b915062000c3f8262000fa7565b604082019050919050565b62000c558162000e30565b82525050565b600062000c69828462000ae8565b915081905092915050565b600060408201905062000c8b600083018562000ad7565b62000c9a602083018462000ad7565b9392505050565b600060408201905062000cb8600083018562000ad7565b62000cc7602083018462000c4a565b9392505050565b6000602082019050818103600083015262000cea818462000b1f565b905092915050565b6000602082019050818103600083015262000d0d8162000b60565b9050919050565b6000602082019050818103600083015262000d2f8162000b87565b9050919050565b6000602082019050818103600083015262000d518162000bae565b9050919050565b6000602082019050818103600083015262000d738162000bd5565b9050919050565b6000602082019050818103600083015262000d958162000bfc565b9050919050565b6000602082019050818103600083015262000db78162000c23565b9050919050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600062000dfd8262000e10565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101562000e6757808201518184015260208101905062000e4a565b8381111562000e77576000848401525b50505050565b6000601f19601f8301169050919050565b7f767573642d616464726573732d69732d7a65726f000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f6164642d696e2d6c6973742d6661696c65640000000000000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b620010018162000df0565b81146200100d57600080fd5b50565b6200101b8162000e04565b81146200102757600080fd5b50565b620010358162000e30565b81146200104157600080fd5b50565b6200104f8162000e3a565b81146200105b57600080fd5b50565b60805160601c60a05160f81c613f23620010b460003960008181610d470152611ab80152600081816104b401528181610bbc01528181610c9e01528181610e690152818161145d015261219e0152613f236000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638c0b09d0116100de578063c0275a2511610097578063edac520311610071578063edac52031461043a578063f74bfe8e14610458578063fd967f4714610474578063ffa1ad741461049257610173565b8063c0275a25146103e6578063c760af5c14610402578063d654a3221461041e57610173565b80638c0b09d0146102ec578063a0712d681461031c578063a3f4df7e14610338578063ab37f48614610356578063addd509914610386578063bae5e393146103b657610173565b806359011cd11161013057806359011cd1146102385780635a64ad95146102565780635e1762a01461027457806361d027b31461029257806370e2f827146102b05780637d922722146102ce57610173565b80630c340a24146101785780631bee36d9146101965780631c88705d146101b2578063380a0df2146101ce578063482b6014146101ea5780635166c96a1461021a575b600080fd5b6101806104b0565b60405161018d9190613058565b60405180910390f35b6101b060048036038101906101ab91906129bf565b610555565b005b6101cc60048036038101906101c7919061290a565b610779565b005b6101e860048036038101906101e39190612a87565b610a7f565b005b61020460048036038101906101ff91906129bf565b610b89565b60405161021191906134b6565b60405180910390f35b610222610bb7565b60405161022f91906134b6565b60405180910390f35b610240610c7d565b60405161024d91906134b6565b60405180910390f35b61025e610c83565b60405161026b91906134b6565b60405180910390f35b61027c610c89565b60405161028991906130fc565b60405180910390f35b61029a610c9a565b6040516102a79190613058565b60405180910390f35b6102b8610d3f565b6040516102c591906134b6565b60405180910390f35b6102d6610d45565b6040516102e3919061353f565b60405180910390f35b6103066004803603810190610301919061290a565b610d69565b6040516103139190613058565b60405180910390f35b61033660048036038101906103319190612a87565b610d9c565b005b610340610eff565b60405161034d9190613154565b60405180910390f35b610370600480360381019061036b919061290a565b610f38565b60405161037d919061311e565b60405180910390f35b6103a0600480360381019061039b919061290a565b610f55565b6040516103ad9190613058565b60405180910390f35b6103d060048036038101906103cb919061290a565b610f88565b6040516103dd91906134b6565b60405180910390f35b61040060048036038101906103fb9190612a87565b610fa0565b005b61041c60048036038101906104179190612a87565b6110eb565b005b6104386004803603810190610433919061295c565b61123a565b005b61044261145b565b60405161044f9190613139565b60405180910390f35b610472600480360381019061046d91906129fb565b61147f565b005b61047c6114e8565b60405161048991906134b6565b60405180910390f35b61049a6114ee565b6040516104a79190613154565b60405180910390f35b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561051857600080fd5b505afa15801561052c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105509190612933565b905090565b61055d6104b0565b73ffffffffffffffffffffffffffffffffffffffff1661057b6116cd565b73ffffffffffffffffffffffffffffffffffffffff16146105d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c890613216565b60405180910390fd5b6000811415610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060c90613316565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141561069d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069490613296565b60405180910390fd5b818114156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d790613176565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167fa4d13447e0a7888b1316f15dd7e76bfe640e00a29607696ed1d452414b3d4b6f82846040516107289291906134d1565b60405180910390a281600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6107816104b0565b73ffffffffffffffffffffffffffffffffffffffff1661079f6116cd565b73ffffffffffffffffffffffffffffffffffffffff16146107f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ec90613216565b60405180910390fd5b6108098160076116d590919063ffffffff16565b610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f906132f6565b60405180910390fd5b6108d3600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008373ffffffffffffffffffffffffffffffffffffffff166115579092919063ffffffff16565b60066000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558073ffffffffffffffffffffffffffffffffffffffff167f3e4130008265a57fa3e4f3cc37bc1d691652b77b4407bd08ddea997b2eda436760405160405180910390a250565b610a876104b0565b73ffffffffffffffffffffffffffffffffffffffff16610aa56116cd565b73ffffffffffffffffffffffffffffffffffffffff1614610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af290613216565b60405180910390fd5b6000600254905081811415610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906131d6565b60405180910390fd5b7f8353d6f6057b53994c31faf6112674bd84b37caab3af81c269080ae9904ebbeb8183604051610b769291906134d1565b60405180910390a1816002819055505050565b6000610b9f83600761170590919063ffffffff16565b15610bb157610bae8383611735565b90505b92915050565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2057600080fd5b505afa158015610c34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c589190612ab0565b90506000600254905081811115610c78578181610c759190613817565b92505b505090565b60035481565b60015481565b6060610c956007611b5a565b905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166361d027b36040518163ffffffff1660e01b815260040160206040518083038186803b158015610d0257600080fd5b505afa158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a9190612933565b905090565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610da46104b0565b73ffffffffffffffffffffffffffffffffffffffff16610dc26116cd565b73ffffffffffffffffffffffffffffffffffffffff1614610e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0f90613216565b60405180910390fd5b6000610e22610bb7565b905081811015610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613396565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f19610eab6116cd565b846040518363ffffffff1660e01b8152600401610ec99291906130d3565b600060405180830381600087803b158015610ee357600080fd5b505af1158015610ef7573d6000803e3d6000fd5b505050505050565b6040518060400160405280600b81526020017f565553442d4d696e74657200000000000000000000000000000000000000000081525081565b6000610f4e82600761170590919063ffffffff16565b9050919050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b610fa86104b0565b73ffffffffffffffffffffffffffffffffffffffff16610fc66116cd565b73ffffffffffffffffffffffffffffffffffffffff161461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101390613216565b60405180910390fd5b612710811115611061576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611058906133b6565b60405180910390fd5b8060015414156110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90613456565b60405180910390fd5b7f85735a3ef929fdaaf946ddf4b97deec396e7347cbb47fea3d6a8f3934e1b02e3600154826040516110d99291906134d1565b60405180910390a18060018190555050565b6110f36104b0565b73ffffffffffffffffffffffffffffffffffffffff166111116116cd565b73ffffffffffffffffffffffffffffffffffffffff1614611167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115e90613216565b60405180910390fd5b6127108111156111ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a390613336565b60405180910390fd5b60006003549050818114156111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed906133d6565b60405180910390fd5b7f3cb23ae97dcd603618548f333b96dbb9e41059b6fd0eb7face59058c5ac3b11b81836040516112279291906134d1565b60405180910390a1816003819055505050565b6112426104b0565b73ffffffffffffffffffffffffffffffffffffffff166112606116cd565b73ffffffffffffffffffffffffffffffffffffffff16146112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613216565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90613236565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90613196565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613356565b60405180910390fd5b60008111611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144090613256565b60405180910390fd5b61145584848484611b7b565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260005414156114c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bc90613476565b60405180910390fd5b60026000819055506114d984848484611daf565b50600160008190555050505050565b61271081565b6040518060400160405280600581526020017f312e342e3200000000000000000000000000000000000000000000000000000081525081565b600061154f836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612289565b905092915050565b60008114806115f0575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b815260040161159e929190613073565b60206040518083038186803b1580156115b657600080fd5b505afa1580156115ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ee9190612ab0565b145b61162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690613496565b60405180910390fd5b6116b08363095ea7b360e01b848460405160240161164e9291906130d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122f9565b505050565b60606116c484846000856123c0565b90509392505050565b600033905090565b60006116fd836000018373ffffffffffffffffffffffffffffffffffffffff1660001b6124d4565b905092915050565b600061172d836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61265a565b905092915050565b600080600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156117e257600080fd5b505afa1580156117f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181a9190612b50565b90506000808373ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561186557600080fd5b505afa158015611879573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189d9190612ad9565b50935050925050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481426118f09190613817565b10611930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192790613376565b60405180910390fd5b6000829050600084600a611944919061369f565b905060006127106003548361195991906137bd565b611963919061361b565b90506000818361197391906135c5565b9050600082846119839190613817565b90508185111580156119955750808510155b6119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906132b6565b60405180910390fd5b600080600154116119e5578b611a0e565b6127106001546127106119f89190613817565b8d611a0391906137bd565b611a0d919061361b565b5b905084861015611a3457848682611a2591906137bd565b611a2f919061361b565b611a36565b805b9a508c73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7e57600080fd5b505afa158015611a92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab69190612b50565b7f0000000000000000000000000000000000000000000000000000000000000000611ae1919061384b565b600a611aed919061369f565b8b611af891906137bd565b9a506000611b04610bb7565b90508b811015611b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4090613396565b60405180910390fd5b505050505050505050505092915050565b60606000611b6a8360000161267d565b905060608190508092505050919050565b611b8f84600761152790919063ffffffff16565b611bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc5906132d6565b60405180910390fd5b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d59837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8673ffffffffffffffffffffffffffffffffffffffff166115579092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167ff264178f70a222c6991bf4849b98c3722e9f54b6e89d1fb550509113e60ae0b78484604051611da1929190613073565b60405180910390a250505050565b6000611dc585600761170590919063ffffffff16565b611e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfb90613276565b60405180910390fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e3f9190613058565b60206040518083038186803b158015611e5757600080fd5b505afa158015611e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8f9190612ab0565b9050611ec5611e9c6116cd565b30878973ffffffffffffffffffffffffffffffffffffffff166126d9909392919063ffffffff16565b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f009190613058565b60206040518083038186803b158015611f1857600080fd5b505afa158015611f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f509190612ab0565b905060008282611f609190613817565b9050611f6c8882611735565b935085841015611fb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa8906131b6565b60405180910390fd5b6000600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1663a0712d68856040518263ffffffff1660e01b815260040161205091906134b6565b602060405180830381600087803b15801561206a57600080fd5b505af115801561207e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a29190612ab0565b146120e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d990613436565b60405180910390fd5b61219c6120ed610c9a565b8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121269190613058565b60206040518083038186803b15801561213e57600080fd5b505afa158015612152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121769190612ab0565b8373ffffffffffffffffffffffffffffffffffffffff166127629092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1987876040518363ffffffff1660e01b81526004016121f79291906130d3565b600060405180830381600087803b15801561221157600080fd5b505af1158015612225573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff167fa8137fff86647d8a402117b9c5dbda627f721d3773338fb9678c83e54ed390808984888a60405161227594939291906134fa565b60405180910390a250505050949350505050565b6000612295838361265a565b6122ee5782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506122f3565b600090505b92915050565b600061235b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116b59092919063ffffffff16565b90506000815111156123bb578080602001905181019061237b9190612a5e565b6123ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b190613416565b60405180910390fd5b5b505050565b606082471015612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc906131f6565b60405180910390fd5b61240e856127e8565b61244d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612444906133f6565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124769190613041565b60006040518083038185875af1925050503d80600081146124b3576040519150601f19603f3d011682016040523d82523d6000602084013e6124b8565b606091505b50915091506124c88282866127fb565b92505050949350505050565b6000808360010160008481526020019081526020016000205490506000811461264e5760006001826125069190613817565b905060006001866000018054905061251e9190613817565b90508181146125d9576000866000018281548110612565577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050808760000184815481106125af577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480612613577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612654565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156126cd57602002820191906000526020600020905b8154815260200190600101908083116126b9575b50505050509050919050565b61275c846323b872dd60e01b8585856040516024016126fa9392919061309c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122f9565b50505050565b6127e38363a9059cbb60e01b84846040516024016127819291906130d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506122f9565b505050565b600080823b905060008111915050919050565b6060831561280b5782905061285b565b60008351111561281e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128529190613154565b60405180910390fd5b9392505050565b60008135905061287181613e63565b92915050565b60008151905061288681613e63565b92915050565b60008151905061289b81613e7a565b92915050565b6000815190506128b081613e91565b92915050565b6000813590506128c581613ea8565b92915050565b6000815190506128da81613ea8565b92915050565b6000815190506128ef81613ed6565b92915050565b60008151905061290481613ebf565b92915050565b60006020828403121561291c57600080fd5b600061292a84828501612862565b91505092915050565b60006020828403121561294557600080fd5b600061295384828501612877565b91505092915050565b6000806000806080858703121561297257600080fd5b600061298087828801612862565b945050602061299187828801612862565b93505060406129a287828801612862565b92505060606129b3878288016128b6565b91505092959194509250565b600080604083850312156129d257600080fd5b60006129e085828601612862565b92505060206129f1858286016128b6565b9150509250929050565b60008060008060808587031215612a1157600080fd5b6000612a1f87828801612862565b9450506020612a30878288016128b6565b9350506040612a41878288016128b6565b9250506060612a5287828801612862565b91505092959194509250565b600060208284031215612a7057600080fd5b6000612a7e8482850161288c565b91505092915050565b600060208284031215612a9957600080fd5b6000612aa7848285016128b6565b91505092915050565b600060208284031215612ac257600080fd5b6000612ad0848285016128cb565b91505092915050565b600080600080600060a08688031215612af157600080fd5b6000612aff888289016128e0565b9550506020612b10888289016128a1565b9450506040612b21888289016128cb565b9350506060612b32888289016128cb565b9250506080612b43888289016128e0565b9150509295509295909350565b600060208284031215612b6257600080fd5b6000612b70848285016128f5565b91505092915050565b6000612b858383612b91565b60208301905092915050565b612b9a8161387f565b82525050565b612ba98161387f565b82525050565b6000612bba8261356a565b612bc48185613598565b9350612bcf8361355a565b8060005b83811015612c00578151612be78882612b79565b9750612bf28361358b565b925050600181019050612bd3565b5085935050505092915050565b612c1681613891565b82525050565b6000612c2782613575565b612c3181856135a9565b9350612c41818560208601613918565b80840191505092915050565b612c56816138f4565b82525050565b6000612c6782613580565b612c7181856135b4565b9350612c81818560208601613918565b612c8a816139a9565b840191505092915050565b6000612ca26011836135b4565b9150612cad826139c7565b602082019050919050565b6000612cc56016836135b4565b9150612cd0826139f0565b602082019050919050565b6000612ce86020836135b4565b9150612cf382613a19565b602082019050919050565b6000612d0b600f836135b4565b9150612d1682613a42565b602082019050919050565b6000612d2e6026836135b4565b9150612d3982613a6b565b604082019050919050565b6000612d51601a836135b4565b9150612d5c82613aba565b602082019050919050565b6000612d746015836135b4565b9150612d7f82613ae3565b602082019050919050565b6000612d976014836135b4565b9150612da282613b0c565b602082019050919050565b6000612dba6016836135b4565b9150612dc582613b35565b602082019050919050565b6000612ddd600e836135b4565b9150612de882613b5e565b602082019050919050565b6000612e00601d836135b4565b9150612e0b82613b87565b602082019050919050565b6000612e236012836135b4565b9150612e2e82613bb0565b602082019050919050565b6000612e466017836135b4565b9150612e5182613bd9565b602082019050919050565b6000612e696017836135b4565b9150612e7482613c02565b602082019050919050565b6000612e8c601a836135b4565b9150612e9782613c2b565b602082019050919050565b6000612eaf6016836135b4565b9150612eba82613c54565b602082019050919050565b6000612ed26015836135b4565b9150612edd82613c7d565b602082019050919050565b6000612ef56012836135b4565b9150612f0082613ca6565b602082019050919050565b6000612f186019836135b4565b9150612f2382613ccf565b602082019050919050565b6000612f3b601a836135b4565b9150612f4682613cf8565b602082019050919050565b6000612f5e601d836135b4565b9150612f6982613d21565b602082019050919050565b6000612f81602a836135b4565b9150612f8c82613d4a565b604082019050919050565b6000612fa46012836135b4565b9150612faf82613d99565b602082019050919050565b6000612fc76010836135b4565b9150612fd282613dc2565b602082019050919050565b6000612fea601f836135b4565b9150612ff582613deb565b602082019050919050565b600061300d6036836135b4565b915061301882613e14565b604082019050919050565b61302c816138c7565b82525050565b61303b816138d1565b82525050565b600061304d8284612c1c565b915081905092915050565b600060208201905061306d6000830184612ba0565b92915050565b60006040820190506130886000830185612ba0565b6130956020830184612ba0565b9392505050565b60006060820190506130b16000830186612ba0565b6130be6020830185612ba0565b6130cb6040830184613023565b949350505050565b60006040820190506130e86000830185612ba0565b6130f56020830184613023565b9392505050565b600060208201905081810360008301526131168184612baf565b905092915050565b60006020820190506131336000830184612c0d565b92915050565b600060208201905061314e6000830184612c4d565b92915050565b6000602082019050818103600083015261316e8184612c5c565b905092915050565b6000602082019050818103600083015261318f81612c95565b9050919050565b600060208201905081810360008301526131af81612cb8565b9050919050565b600060208201905081810360008301526131cf81612cdb565b9050919050565b600060208201905081810360008301526131ef81612cfe565b9050919050565b6000602082019050818103600083015261320f81612d21565b9050919050565b6000602082019050818103600083015261322f81612d44565b9050919050565b6000602082019050818103600083015261324f81612d67565b9050919050565b6000602082019050818103600083015261326f81612d8a565b9050919050565b6000602082019050818103600083015261328f81612dad565b9050919050565b600060208201905081810360008301526132af81612dd0565b9050919050565b600060208201905081810360008301526132cf81612df3565b9050919050565b600060208201905081810360008301526132ef81612e16565b9050919050565b6000602082019050818103600083015261330f81612e39565b9050919050565b6000602082019050818103600083015261332f81612e5c565b9050919050565b6000602082019050818103600083015261334f81612e7f565b9050919050565b6000602082019050818103600083015261336f81612ea2565b9050919050565b6000602082019050818103600083015261338f81612ec5565b9050919050565b600060208201905081810360008301526133af81612ee8565b9050919050565b600060208201905081810360008301526133cf81612f0b565b9050919050565b600060208201905081810360008301526133ef81612f2e565b9050919050565b6000602082019050818103600083015261340f81612f51565b9050919050565b6000602082019050818103600083015261342f81612f74565b9050919050565b6000602082019050818103600083015261344f81612f97565b9050919050565b6000602082019050818103600083015261346f81612fba565b9050919050565b6000602082019050818103600083015261348f81612fdd565b9050919050565b600060208201905081810360008301526134af81613000565b9050919050565b60006020820190506134cb6000830184613023565b92915050565b60006040820190506134e66000830185613023565b6134f36020830184613023565b9392505050565b600060808201905061350f6000830187613023565b61351c6020830186613023565b6135296040830185613023565b6135366060830184612ba0565b95945050505050565b60006020820190506135546000830184613032565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135d0826138c7565b91506135db836138c7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136105761360f61394b565b5b828201905092915050565b6000613626826138c7565b9150613631836138c7565b9250826136415761364061397a565b5b828204905092915050565b6000808291508390505b6001851115613696578086048111156136725761367161394b565b5b60018516156136815780820291505b808102905061368f856139ba565b9450613656565b94509492505050565b60006136aa826138c7565b91506136b5836138d1565b92506136e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846136ea565b905092915050565b6000826136fa57600190506137b6565b8161370857600090506137b6565b816001811461371e576002811461372857613757565b60019150506137b6565b60ff84111561373a5761373961394b565b5b8360020a9150848211156137515761375061394b565b5b506137b6565b5060208310610133831016604e8410600b841016171561378c5782820a9050838111156137875761378661394b565b5b6137b6565b613799848484600161364c565b925090508184048111156137b0576137af61394b565b5b81810290505b9392505050565b60006137c8826138c7565b91506137d3836138c7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561380c5761380b61394b565b5b828202905092915050565b6000613822826138c7565b915061382d836138c7565b9250828210156138405761383f61394b565b5b828203905092915050565b6000613856826138d1565b9150613861836138d1565b9250828210156138745761387361394b565b5b828203905092915050565b600061388a826138a7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600069ffffffffffffffffffff82169050919050565b60006138ff82613906565b9050919050565b6000613911826138a7565b9050919050565b60005b8381101561393657808201518184015260208101905061391b565b83811115613945576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f73616d652d7374616c652d706572696f64000000000000000000000000000000600082015250565b7f63546f6b656e2d616464726573732d69732d7a65726f00000000000000000000600082015250565b7f6d696e742d616d6f756e742d69732d6c6573732d7468616e2d6d696e696d756d600082015250565b7f73616d652d6d696e742d6c696d69740000000000000000000000000000000000600082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f63616c6c65722d69732d6e6f742d7468652d676f7665726e6f72000000000000600082015250565b7f746f6b656e2d616464726573732d69732d7a65726f0000000000000000000000600082015250565b7f696e76616c69642d7374616c652d706572696f64000000000000000000000000600082015250565b7f746f6b656e2d69732d6e6f742d737570706f7274656400000000000000000000600082015250565b7f696e76616c69642d6f7261636c65000000000000000000000000000000000000600082015250565b7f6f7261636c652d70726963652d6578636565642d746f6c6572616e6365000000600082015250565b7f6164642d696e2d6c6973742d6661696c65640000000000000000000000000000600082015250565b7f72656d6f76652d66726f6d2d6c6973742d6661696c6564000000000000000000600082015250565b7f7374616c652d706572696f642d69732d696e76616c6964000000000000000000600082015250565b7f70726963652d646576696174696f6e2d69732d696e76616c6964000000000000600082015250565b7f6f7261636c652d616464726573732d69732d7a65726f00000000000000000000600082015250565b7f6f7261636c652d70726963652d69732d7374616c650000000000000000000000600082015250565b7f6d696e742d6c696d69742d726561636865640000000000000000000000000000600082015250565b7f6d696e74696e672d6665652d6c696d69742d7265616368656400000000000000600082015250565b7f73616d652d70726963652d646576696174696f6e2d6c696d6974000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f63546f6b656e2d6d696e742d6661696c65640000000000000000000000000000600082015250565b7f73616d652d6d696e74696e672d66656500000000000000000000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b613e6c8161387f565b8114613e7757600080fd5b50565b613e8381613891565b8114613e8e57600080fd5b50565b613e9a8161389d565b8114613ea557600080fd5b50565b613eb1816138c7565b8114613ebc57600080fd5b50565b613ec8816138d1565b8114613ed357600080fd5b50565b613edf816138de565b8114613eea57600080fd5b5056fea2646970667358221220aff198ced1c1ed0f1fae5b2ca86124dab0a60c2cab70f32ddbcf1e37954d5ed064736f6c63430008030033000000000000000000000000677ddbd918637e5f2c79e164d402454de7da86190000000000000000000000000000000000000000019d971e4fe8401e74000000