0x6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e1461069a578063e2f45605146106ba578063f2fde38b146106d0578063f8b45b05146106f0578063ffb54a991461070657600080fd5b8063a9059cbb1461060f578063afa4f3b21461062f578063c02466681461064f578063c8c8ebe41461066f578063c9567bf91461068557600080fd5b806389291a8f116100f257806389291a8f146105875780638da5cb5b1461059c57806395d89b41146105ba5780639a7a23d6146105cf578063a457c2d7146105ef57600080fd5b806370a08231146104e7578063715018a61461051d578063751039fc146105325780637571336a1461054757806375f0a8741461056757600080fd5b8063311028af116101bc5780634fbee193116101805780634fbee19314610425578063583e05681461045e5780635d60c7be1461049257806364cc78a0146104b25780636ddd1713146104c757600080fd5b8063311028af1461037f578063313ce56714610395578063346cc7be146103b157806339509351146103d157806349bd5a5e146103f157600080fd5b806318160ddd1161020357806318160ddd146102dc578063185870f9146102fb5780631f3fed8f1461033357806323b872dd1461034957806327c8f8351461036957600080fd5b806306fdde0314610240578063095ea7b31461026b5780630a702e8d1461029b5780630b78f9c0146102ba57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610720565b6040516102629190611da3565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611e06565b6107b2565b6040519015158152602001610262565b3480156102a757600080fd5b50600d5461028b90610100900460ff1681565b3480156102c657600080fd5b506102da6102d5366004611e32565b6107cc565b005b3480156102e857600080fd5b506002545b604051908152602001610262565b34801561030757600080fd5b5060075461031b906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561033f57600080fd5b506102ed60105481565b34801561035557600080fd5b5061028b610364366004611e54565b6107df565b34801561037557600080fd5b5061031b61dead81565b34801561038b57600080fd5b506102ed60095481565b3480156103a157600080fd5b5060405160128152602001610262565b3480156103bd57600080fd5b506102da6103cc366004611e95565b610803565b3480156103dd57600080fd5b5061028b6103ec366004611e06565b6109af565b3480156103fd57600080fd5b5061031b7f0000000000000000000000008e88984de904eee05c3b5236318ca2d795d5590381565b34801561043157600080fd5b5061028b610440366004611e95565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561046a57600080fd5b5061031b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561049e57600080fd5b5060065461031b906001600160a01b031681565b3480156104be57600080fd5b506102da6109d1565b3480156104d357600080fd5b50600d5461028b9062010000900460ff1681565b3480156104f357600080fd5b506102ed610502366004611e95565b6001600160a01b031660009081526020819052604090205490565b34801561052957600080fd5b506102da6109e6565b34801561053e57600080fd5b506102da6109fa565b34801561055357600080fd5b506102da610562366004611ec0565b610a23565b34801561057357600080fd5b5060085461031b906001600160a01b031681565b34801561059357600080fd5b506102da610a56565b3480156105a857600080fd5b506005546001600160a01b031661031b565b3480156105c657600080fd5b50610255610ad6565b3480156105db57600080fd5b506102da6105ea366004611ec0565b610ae5565b3480156105fb57600080fd5b5061028b61060a366004611e06565b610ba2565b34801561061b57600080fd5b5061028b61062a366004611e06565b610c1d565b34801561063b57600080fd5b506102da61064a366004611ef9565b610c2b565b34801561065b57600080fd5b506102da61066a366004611ec0565b610c4b565b34801561067b57600080fd5b506102ed600a5481565b34801561069157600080fd5b506102da610cb2565b3480156106a657600080fd5b506102ed6106b5366004611f12565b610f95565b3480156106c657600080fd5b506102ed600c5481565b3480156106dc57600080fd5b506102da6106eb366004611e95565b610fc0565b3480156106fc57600080fd5b506102ed600b5481565b34801561071257600080fd5b50600d5461028b9060ff1681565b60606003805461072f90611f40565b80601f016020809104026020016040519081016040528092919081815260200182805461075b90611f40565b80156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b5050505050905090565b6000336107c0818585611036565b60019150505b92915050565b6107d461115a565b600e91909155600f55565b6000336107ed8582856111b4565b6107f885858561122e565b506001949350505050565b61080b61115a565b306001600160a01b038216036108725760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611f7a565b9050600081116109395760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610869565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190611f93565b505050565b6000336107c08185856109c28383610f95565b6109cc9190611fc6565b611036565b6109d961115a565b600d805461ff0019169055565b6109ee61115a565b6109f86000611860565b565b610a0261115a565b6000610a0d60025490565b600a819055600b5550600d805461ff0019169055565b610a2b61115a565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b610a5e61115a565b60004711610aa75760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610869565b60405133904780156108fc02916000818181858888f19350505050158015610ad3573d6000803e3d6000fd5b50565b60606004805461072f90611f40565b610aed61115a565b7f0000000000000000000000008e88984de904eee05c3b5236318ca2d795d559036001600160a01b0316826001600160a01b031603610b945760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610869565b610b9e82826118b2565b5050565b60003381610bb08286610f95565b905083811015610c105760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610869565b6107f88286868403611036565b6000336107c081858561122e565b610c3361115a565b610c4581670de0b6b3a7640000611fd9565b600c5550565b610c5361115a565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cba61115a565b600d5460ff1615610d0d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610869565b610d3a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d600954611036565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7194730610d956046610d8f306001600160a01b031660009081526020819052604090205490565b90611906565b600080610daa6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e379190611ff0565b5050600854600c5430925063a9059cbb916001600160a01b031690610e5d90600d611982565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190611f93565b5060405163095ea7b360e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8116600483015260001960248301527f0000000000000000000000008e88984de904eee05c3b5236318ca2d795d55903169063095ea7b3906044016020604051808303816000875af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190611f93565b50600d805462ff00ff191662010001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610fc861115a565b6001600160a01b03811661102d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b610ad381611860565b6001600160a01b0383166110985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610869565b6001600160a01b0382166110f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610869565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146109f85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610869565b60006111c08484610f95565b90506000198114611228578181101561121b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610869565b6112288484848403611036565b50505050565b6001600160a01b0383166112545760405162461bcd60e51b81526004016108699061201e565b6001600160a01b03821661127a5760405162461bcd60e51b815260040161086990612063565b8060000361128e576109aa8383600061198e565b6005546001600160a01b038481169116148015906112ba57506005546001600160a01b03838116911614155b80156112ce57506001600160a01b03821615155b80156112e557506001600160a01b03821661dead14155b80156112fb5750600854600160a01b900460ff16155b1561169257600d5460ff1661138e576001600160a01b03831660009081526011602052604090205460ff168061134957506001600160a01b03821660009081526011602052604090205460ff165b61138e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610869565b6001600160a01b03831660009081526013602052604090205460ff1680156113cf57506001600160a01b03821660009081526012602052604090205460ff16155b1561155157600a548111156114445760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610869565b600b546001600160a01b03831660009081526020819052604090205461146a9083611fc6565b11156114ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610869565b600d54610100900460ff161561154c576001600160a01b03821660009081526014602052604090205443116115305760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f6e65206275792070657220626c6f636b20697320616c6c6f7765604482015261321760f11b6064820152608401610869565b6001600160a01b03821660009081526014602052604090204390555b611692565b6001600160a01b03821660009081526013602052604090205460ff16801561159257506001600160a01b03831660009081526012602052604090205460ff16155b1561160857600a5481111561154c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610869565b6001600160a01b03821660009081526012602052604090205460ff1661169257600b546001600160a01b03831660009081526020819052604090205461164e9083611fc6565b11156116925760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610869565b30600090815260208190526040902054600c54811080159081906116be5750600d5462010000900460ff165b80156116d45750600854600160a01b900460ff16155b80156116f957506001600160a01b03851660009081526013602052604090205460ff16155b801561171e57506001600160a01b03851660009081526011602052604090205460ff16155b801561174357506001600160a01b03841660009081526011602052604090205460ff16155b15611771576008805460ff60a01b1916600160a01b179055611763611ab8565b6008805460ff60a01b191690555b6008546001600160a01b03861660009081526011602052604090205460ff600160a01b9092048216159116806117bf57506001600160a01b03851660009081526011602052604090205460ff165b156117c8575060005b6000811561184c576001600160a01b03861660009081526013602052604081205460ff16156117fa5750600f546117ff565b50600e545b611814606461180e8884611982565b90611bcb565b915081601060008282546118289190611fc6565b9091555050811561183e5761183e88308461198e565b61184882876120a6565b9550505b61185787878761198e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600060648211156119655760405162461bcd60e51b8152602060048201526024808201527f50657263656e74616765206d757374206265206265747765656e203020616e646044820152630203130360e41b6064820152608401610869565b60646119718385611fd9565b61197b91906120b9565b9392505050565b600061197b8284611fd9565b6001600160a01b0383166119b45760405162461bcd60e51b81526004016108699061201e565b6001600160a01b0382166119da5760405162461bcd60e51b815260040161086990612063565b6001600160a01b03831660009081526020819052604090205481811015611a525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610869565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611228565b30600090815260208190526040812054601054909180831580611ad9575082155b15611ae45750505050565b600854600160a81b900460ff16611b1d57600c54611b03906005611fd9565b6008805460ff60a81b1916600160a81b1790559150611b34565b600c54841015611b2d5783611b31565b600c545b91505b47611b3e83611bd7565b6000611b4a4783611d97565b90506000611b678661180e6010548561198290919063ffffffff16565b600060108190556007546040519293506001600160a01b031691839181818185875af1925050503d8060008114611bba576040519150601f19603f3d011682016040523d82523d6000602084013e611bbf565b606091505b50505050505050505050565b600061197b82846120b9565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c0c57611c0c6120db565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae91906120f1565b81600181518110611cc157611cc16120db565b60200260200101906001600160a01b031690816001600160a01b031681525050611d0c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611036565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611d6190859060009086903090429060040161210e565b600060405180830381600087803b158015611d7b57600080fd5b505af1158015611d8f573d6000803e3d6000fd5b505050505050565b600061197b82846120a6565b600060208083528351808285015260005b81811015611dd057858101830151858201604001528201611db4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ad357600080fd5b60008060408385031215611e1957600080fd5b8235611e2481611df1565b946020939093013593505050565b60008060408385031215611e4557600080fd5b50508035926020909101359150565b600080600060608486031215611e6957600080fd5b8335611e7481611df1565b92506020840135611e8481611df1565b929592945050506040919091013590565b600060208284031215611ea757600080fd5b813561197b81611df1565b8015158114610ad357600080fd5b60008060408385031215611ed357600080fd5b8235611ede81611df1565b91506020830135611eee81611eb2565b809150509250929050565b600060208284031215611f0b57600080fd5b5035919050565b60008060408385031215611f2557600080fd5b8235611f3081611df1565b91506020830135611eee81611df1565b600181811c90821680611f5457607f821691505b602082108103611f7457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611f8c57600080fd5b5051919050565b600060208284031215611fa557600080fd5b815161197b81611eb2565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c6576107c6611fb0565b80820281158282048414176107c6576107c6611fb0565b60008060006060848603121561200557600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107c6576107c6611fb0565b6000826120d657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561210357600080fd5b815161197b81611df1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561215e5784516001600160a01b031683529383019391830191600101612139565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220504965eeb8d2270642f3f220416391f3cf87e21a4b9498b46539d40ba7f9a11a64736f6c63430008130033
0x60c060405269d3c21bcecceda100000060095569043c33c1937564800000600a819055600b5569021e19e0c9bab2400000600c55600d805462ffffff19166101001790556019600e819055600f553480156200005a57600080fd5b506040805180820182526004808252634a414b4560e01b6020808401829052845180860190955291845290830152906003620000978382620006bc565b506004620000a68282620006bc565b505050620000c3620000bd620003a660201b60201c565b620003aa565b737a250d5630b4cf539739df2c5dacb4c659f2488d6080819052620000ea906001620003fc565b6080516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200012b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000151919062000788565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c7919062000788565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000215573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023b919062000788565b6001600160a01b031660a081905262000256906001620003fc565b60a0516200026690600162000431565b60068054336001600160a01b03199182161790915560088054821673652a62ffc26b1756bf5a0ff0a6348f7d249655f617905560078054909116732c23efde0f366d98f7fb939a51f26afdc977581a179055600554620002d1906001600160a01b0316600162000485565b620002de30600162000485565b620002ed61dead600162000485565b60085462000306906001600160a01b0316600162000485565b6007546200031f906001600160a01b0316600162000485565b6200033e620003366005546001600160a01b031690565b6001620003fc565b6200034b306001620003fc565b6200035a61dead6001620003fc565b60085462000373906001600160a01b03166001620003fc565b6007546200038c906001600160a01b03166001620003fc565b620003a033600954620004ee60201b60201c565b620007e2565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000406620005b5565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6200048f620005b5565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200054a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600260008282546200055e9190620007ba565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620006115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000541565b565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200064357607f821691505b6020821081036200066457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200061357600081815260208120601f850160051c81016020861015620006935750805b601f850160051c820191505b81811015620006b4578281556001016200069f565b505050505050565b81516001600160401b03811115620006d857620006d862000618565b620006f081620006e984546200062e565b846200066a565b602080601f8311600181146200072857600084156200070f5750858301515b600019600386901b1c1916600185901b178555620006b4565b600085815260208120601f198616915b82811015620007595788860151825594840194600190910190840162000738565b5085821015620007785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200079b57600080fd5b81516001600160a01b0381168114620007b357600080fd5b9392505050565b80820180821115620007dc57634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a0516121b5620008406000396000818161040301528181610aef0152610f1401526000818161047001528181610d1301528181610d3c01528181610ee401528181611c2e01528181611ce70152611d2301526121b56000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e1461069a578063e2f45605146106ba578063f2fde38b146106d0578063f8b45b05146106f0578063ffb54a991461070657600080fd5b8063a9059cbb1461060f578063afa4f3b21461062f578063c02466681461064f578063c8c8ebe41461066f578063c9567bf91461068557600080fd5b806389291a8f116100f257806389291a8f146105875780638da5cb5b1461059c57806395d89b41146105ba5780639a7a23d6146105cf578063a457c2d7146105ef57600080fd5b806370a08231146104e7578063715018a61461051d578063751039fc146105325780637571336a1461054757806375f0a8741461056757600080fd5b8063311028af116101bc5780634fbee193116101805780634fbee19314610425578063583e05681461045e5780635d60c7be1461049257806364cc78a0146104b25780636ddd1713146104c757600080fd5b8063311028af1461037f578063313ce56714610395578063346cc7be146103b157806339509351146103d157806349bd5a5e146103f157600080fd5b806318160ddd1161020357806318160ddd146102dc578063185870f9146102fb5780631f3fed8f1461033357806323b872dd1461034957806327c8f8351461036957600080fd5b806306fdde0314610240578063095ea7b31461026b5780630a702e8d1461029b5780630b78f9c0146102ba57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610720565b6040516102629190611da3565b60405180910390f35b34801561027757600080fd5b5061028b610286366004611e06565b6107b2565b6040519015158152602001610262565b3480156102a757600080fd5b50600d5461028b90610100900460ff1681565b3480156102c657600080fd5b506102da6102d5366004611e32565b6107cc565b005b3480156102e857600080fd5b506002545b604051908152602001610262565b34801561030757600080fd5b5060075461031b906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561033f57600080fd5b506102ed60105481565b34801561035557600080fd5b5061028b610364366004611e54565b6107df565b34801561037557600080fd5b5061031b61dead81565b34801561038b57600080fd5b506102ed60095481565b3480156103a157600080fd5b5060405160128152602001610262565b3480156103bd57600080fd5b506102da6103cc366004611e95565b610803565b3480156103dd57600080fd5b5061028b6103ec366004611e06565b6109af565b3480156103fd57600080fd5b5061031b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043157600080fd5b5061028b610440366004611e95565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561046a57600080fd5b5061031b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049e57600080fd5b5060065461031b906001600160a01b031681565b3480156104be57600080fd5b506102da6109d1565b3480156104d357600080fd5b50600d5461028b9062010000900460ff1681565b3480156104f357600080fd5b506102ed610502366004611e95565b6001600160a01b031660009081526020819052604090205490565b34801561052957600080fd5b506102da6109e6565b34801561053e57600080fd5b506102da6109fa565b34801561055357600080fd5b506102da610562366004611ec0565b610a23565b34801561057357600080fd5b5060085461031b906001600160a01b031681565b34801561059357600080fd5b506102da610a56565b3480156105a857600080fd5b506005546001600160a01b031661031b565b3480156105c657600080fd5b50610255610ad6565b3480156105db57600080fd5b506102da6105ea366004611ec0565b610ae5565b3480156105fb57600080fd5b5061028b61060a366004611e06565b610ba2565b34801561061b57600080fd5b5061028b61062a366004611e06565b610c1d565b34801561063b57600080fd5b506102da61064a366004611ef9565b610c2b565b34801561065b57600080fd5b506102da61066a366004611ec0565b610c4b565b34801561067b57600080fd5b506102ed600a5481565b34801561069157600080fd5b506102da610cb2565b3480156106a657600080fd5b506102ed6106b5366004611f12565b610f95565b3480156106c657600080fd5b506102ed600c5481565b3480156106dc57600080fd5b506102da6106eb366004611e95565b610fc0565b3480156106fc57600080fd5b506102ed600b5481565b34801561071257600080fd5b50600d5461028b9060ff1681565b60606003805461072f90611f40565b80601f016020809104026020016040519081016040528092919081815260200182805461075b90611f40565b80156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b5050505050905090565b6000336107c0818585611036565b60019150505b92915050565b6107d461115a565b600e91909155600f55565b6000336107ed8582856111b4565b6107f885858561122e565b506001949350505050565b61080b61115a565b306001600160a01b038216036108725760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b656044820152603760f91b60648201526084015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156108b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108dd9190611f7a565b9050600081116109395760405162461bcd60e51b815260206004820152602160248201527f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c65616044820152603960f91b6064820152608401610869565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190611f93565b505050565b6000336107c08185856109c28383610f95565b6109cc9190611fc6565b611036565b6109d961115a565b600d805461ff0019169055565b6109ee61115a565b6109f86000611860565b565b610a0261115a565b6000610a0d60025490565b600a819055600b5550600d805461ff0019169055565b610a2b61115a565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b610a5e61115a565b60004711610aa75760405162461bcd60e51b81526020600482015260166024820152752a37b5b2b71d1037379032ba34103a379031b632b0b960511b6044820152606401610869565b60405133904780156108fc02916000818181858888f19350505050158015610ad3573d6000803e3d6000fd5b50565b60606004805461072f90611f40565b610aed61115a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610b945760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610869565b610b9e82826118b2565b5050565b60003381610bb08286610f95565b905083811015610c105760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610869565b6107f88286868403611036565b6000336107c081858561122e565b610c3361115a565b610c4581670de0b6b3a7640000611fd9565b600c5550565b610c5361115a565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b610cba61115a565b600d5460ff1615610d0d5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610869565b610d3a307f0000000000000000000000000000000000000000000000000000000000000000600954611036565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7194730610d956046610d8f306001600160a01b031660009081526020819052604090205490565b90611906565b600080610daa6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610e12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e379190611ff0565b5050600854600c5430925063a9059cbb916001600160a01b031690610e5d90600d611982565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610ea8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ecc9190611f93565b5060405163095ea7b360e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260001960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303816000875af1158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190611f93565b50600d805462ff00ff191662010001179055565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610fc861115a565b6001600160a01b03811661102d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b610ad381611860565b6001600160a01b0383166110985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610869565b6001600160a01b0382166110f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610869565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146109f85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610869565b60006111c08484610f95565b90506000198114611228578181101561121b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610869565b6112288484848403611036565b50505050565b6001600160a01b0383166112545760405162461bcd60e51b81526004016108699061201e565b6001600160a01b03821661127a5760405162461bcd60e51b815260040161086990612063565b8060000361128e576109aa8383600061198e565b6005546001600160a01b038481169116148015906112ba57506005546001600160a01b03838116911614155b80156112ce57506001600160a01b03821615155b80156112e557506001600160a01b03821661dead14155b80156112fb5750600854600160a01b900460ff16155b1561169257600d5460ff1661138e576001600160a01b03831660009081526011602052604090205460ff168061134957506001600160a01b03821660009081526011602052604090205460ff165b61138e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610869565b6001600160a01b03831660009081526013602052604090205460ff1680156113cf57506001600160a01b03821660009081526012602052604090205460ff16155b1561155157600a548111156114445760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152608401610869565b600b546001600160a01b03831660009081526020819052604090205461146a9083611fc6565b11156114ae5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610869565b600d54610100900460ff161561154c576001600160a01b03821660009081526014602052604090205443116115305760405162461bcd60e51b815260206004820152602260248201527f4f6e6c79206f6e65206275792070657220626c6f636b20697320616c6c6f7765604482015261321760f11b6064820152608401610869565b6001600160a01b03821660009081526014602052604090204390555b611692565b6001600160a01b03821660009081526013602052604090205460ff16801561159257506001600160a01b03831660009081526012602052604090205460ff16155b1561160857600a5481111561154c5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152608401610869565b6001600160a01b03821660009081526012602052604090205460ff1661169257600b546001600160a01b03831660009081526020819052604090205461164e9083611fc6565b11156116925760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610869565b30600090815260208190526040902054600c54811080159081906116be5750600d5462010000900460ff165b80156116d45750600854600160a01b900460ff16155b80156116f957506001600160a01b03851660009081526013602052604090205460ff16155b801561171e57506001600160a01b03851660009081526011602052604090205460ff16155b801561174357506001600160a01b03841660009081526011602052604090205460ff16155b15611771576008805460ff60a01b1916600160a01b179055611763611ab8565b6008805460ff60a01b191690555b6008546001600160a01b03861660009081526011602052604090205460ff600160a01b9092048216159116806117bf57506001600160a01b03851660009081526011602052604090205460ff165b156117c8575060005b6000811561184c576001600160a01b03861660009081526013602052604081205460ff16156117fa5750600f546117ff565b50600e545b611814606461180e8884611982565b90611bcb565b915081601060008282546118289190611fc6565b9091555050811561183e5761183e88308461198e565b61184882876120a6565b9550505b61185787878761198e565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600060648211156119655760405162461bcd60e51b8152602060048201526024808201527f50657263656e74616765206d757374206265206265747765656e203020616e646044820152630203130360e41b6064820152608401610869565b60646119718385611fd9565b61197b91906120b9565b9392505050565b600061197b8284611fd9565b6001600160a01b0383166119b45760405162461bcd60e51b81526004016108699061201e565b6001600160a01b0382166119da5760405162461bcd60e51b815260040161086990612063565b6001600160a01b03831660009081526020819052604090205481811015611a525760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610869565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611228565b30600090815260208190526040812054601054909180831580611ad9575082155b15611ae45750505050565b600854600160a81b900460ff16611b1d57600c54611b03906005611fd9565b6008805460ff60a81b1916600160a81b1790559150611b34565b600c54841015611b2d5783611b31565b600c545b91505b47611b3e83611bd7565b6000611b4a4783611d97565b90506000611b678661180e6010548561198290919063ffffffff16565b600060108190556007546040519293506001600160a01b031691839181818185875af1925050503d8060008114611bba576040519150601f19603f3d011682016040523d82523d6000602084013e611bbf565b606091505b50505050505050505050565b600061197b82846120b9565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c0c57611c0c6120db565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cae91906120f1565b81600181518110611cc157611cc16120db565b60200260200101906001600160a01b031690816001600160a01b031681525050611d0c307f000000000000000000000000000000000000000000000000000000000000000084611036565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611d6190859060009086903090429060040161210e565b600060405180830381600087803b158015611d7b57600080fd5b505af1158015611d8f573d6000803e3d6000fd5b505050505050565b600061197b82846120a6565b600060208083528351808285015260005b81811015611dd057858101830151858201604001528201611db4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ad357600080fd5b60008060408385031215611e1957600080fd5b8235611e2481611df1565b946020939093013593505050565b60008060408385031215611e4557600080fd5b50508035926020909101359150565b600080600060608486031215611e6957600080fd5b8335611e7481611df1565b92506020840135611e8481611df1565b929592945050506040919091013590565b600060208284031215611ea757600080fd5b813561197b81611df1565b8015158114610ad357600080fd5b60008060408385031215611ed357600080fd5b8235611ede81611df1565b91506020830135611eee81611eb2565b809150509250929050565b600060208284031215611f0b57600080fd5b5035919050565b60008060408385031215611f2557600080fd5b8235611f3081611df1565b91506020830135611eee81611df1565b600181811c90821680611f5457607f821691505b602082108103611f7457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611f8c57600080fd5b5051919050565b600060208284031215611fa557600080fd5b815161197b81611eb2565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c6576107c6611fb0565b80820281158282048414176107c6576107c6611fb0565b60008060006060848603121561200557600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156107c6576107c6611fb0565b6000826120d657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561210357600080fd5b815161197b81611df1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561215e5784516001600160a01b031683529383019391830191600101612139565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220504965eeb8d2270642f3f220416391f3cf87e21a4b9498b46539d40ba7f9a11a64736f6c63430008130033