0x60806040526004361061037a5760003560e01c80634fbee193116101d157806395d89b4111610102578063dd62ed3e116100a0578063eec2744e1161006f578063eec2744e14610af7578063f94aa1b414610b17578063fdb78c0e14610b6e578063fe575a8714610b8d57600080fd5b8063dd62ed3e14610a66578063e4fcfd1814610aac578063eafb5a3c14610ac2578063ee5d9c2d14610ae257600080fd5b8063b1b08f71116100dc578063b1b08f7114610604578063b3d514fb146109c5578063cab5ebea146109db578063cf847706146109fb57600080fd5b806395d89b411461093f578063a9059cbb14610985578063aa22b172146109a557600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d757806389a30271146108f55780638a63bd9b146109155780638a8c523c1461092a57600080fd5b8063715018a61461088257806375cb1bd11461089757806380c581d1146108b757600080fd5b80635c24b074116101ab5780635c24b074146107de5780635cce86cd146107fe5780636ebd00781461083757806370a082311461084c57600080fd5b80634fbee1931461076657806350a8e0161461079f578063590ffdce146107be57600080fd5b80632610eaca116102ab57806333251a0b116102495780633f3cf56c116102235780633f3cf56c146106ec578063452ed4f11461070c5780634ada218b1461072c5780634fb2e45d1461074657600080fd5b806333251a0b1461068c57806334cd8260146106ac57806336fddb04146106cc57600080fd5b80632cee7602116102855780632cee76021461061a5780632e8fa8211461063a578063313ce5671461065057806332cde6641461066c57600080fd5b80632610eaca146105c457806329dd8798146105e45780632b28fc7a1461060457600080fd5b8063095ea7b31161031857806318160ddd116102f257806318160ddd1461054f5780631cc43f071461056457806323b872dd1461058457806326003957146105a457600080fd5b8063095ea7b3146104ea578063098f8b021461051a5780630fa604e41461053a57600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d924146104a457806309231602146104ca57600080fd5b806303fd2a45146103865780630445b667146103b957806305bbedb6146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60165481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f836600461448d565b610bad565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152601581527f57696665204368616e67696e67204361706974616c000000000000000000000060208201525b6040516103b091906144df565b3480156104b057600080fd5b50600b5461039c906201000090046001600160a01b031681565b3480156104d657600080fd5b506103fd6104e5366004614534565b610c86565b3480156104f657600080fd5b5061050a61050536600461454d565b610da5565b60405190151581526020016103b0565b34801561052657600080fd5b506103fd610535366004614534565b610dbc565b34801561054657600080fd5b506103cf6113ce565b34801561055b57600080fd5b506103cf6113ee565b34801561057057600080fd5b506103fd61057f366004614579565b611430565b34801561059057600080fd5b5061050a61059f366004614634565b611585565b3480156105b057600080fd5b506103fd6105bf366004614675565b6115fd565b3480156105d057600080fd5b506103fd6105df366004614579565b61174c565b3480156105f057600080fd5b506103fd6105ff366004614697565b6118b6565b34801561061057600080fd5b506103cf6107d081565b34801561062657600080fd5b506103fd61063536600461454d565b61199f565b34801561064657600080fd5b506103cf60175481565b34801561065c57600080fd5b50604051601281526020016103b0565b34801561067857600080fd5b506103fd61068736600461470a565b611a41565b34801561069857600080fd5b506103fd6106a736600461474d565b611b7c565b3480156106b857600080fd5b506103fd6106c736600461476a565b611c1c565b3480156106d857600080fd5b506103fd6106e73660046147a5565b611cd9565b3480156106f857600080fd5b506103fd610707366004614675565b611d52565b34801561071857600080fd5b50600c5461039c906001600160a01b031681565b34801561073857600080fd5b50601a5461050a9060ff1681565b34801561075257600080fd5b506103fd61076136600461474d565b611ea2565b34801561077257600080fd5b5061050a61078136600461474d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ab57600080fd5b50601a5461050a90610100900460ff1681565b3480156107ca57600080fd5b506103fd6107d93660046147a5565b6120d8565b3480156107ea57600080fd5b506103fd6107f936600461474d565b612151565b34801561080a57600080fd5b5061050a61081936600461474d565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084357600080fd5b506103cf61224c565b34801561085857600080fd5b506103cf61086736600461474d565b6001600160a01b031660009081526001602052604090205490565b34801561088e57600080fd5b506103fd612267565b3480156108a357600080fd5b506103fd6108b23660046147d3565b612322565b3480156108c357600080fd5b506103fd6108d23660046147a5565b6123c7565b3480156108e357600080fd5b506000546001600160a01b031661039c565b34801561090157600080fd5b50600e5461039c906001600160a01b031681565b34801561092157600080fd5b5061050a612576565b34801561093657600080fd5b506103fd6125eb565b34801561094b57600080fd5b5060408051808201909152600481527f57494645000000000000000000000000000000000000000000000000000000006020820152610497565b34801561099157600080fd5b5061050a6109a036600461454d565b612853565b3480156109b157600080fd5b506103fd6109c036600461470a565b61286a565b3480156109d157600080fd5b506103cf610b5481565b3480156109e757600080fd5b506103fd6109f636600461481e565b6129b6565b348015610a0757600080fd5b50600a54610a389061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a7257600080fd5b506103cf610a8136600461483b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ab857600080fd5b506103cf60145481565b348015610ace57600080fd5b506103fd610add36600461474d565b612a58565b348015610aee57600080fd5b506103fd612e35565b348015610b0357600080fd5b506103fd610b123660046147a5565b612ff4565b348015610b2357600080fd5b50601054601154601254610b44926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b7a57600080fd5b5060135461050a90610100900460ff1681565b348015610b9957600080fd5b5061050a610ba836600461474d565b61309c565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c5090859085906004016148ad565b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60c8811015610d255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf7565b601a546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b5050505050565b6000610db233848461312a565b5060015b92915050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615610e775760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610bf7565b600f546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906148d1565b11610f4a5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206d757374206861766520555344432e00000000000000006044820152606401610bf7565b610f566012600a6149fd565b610f609082614a0c565b336000908152600160205260409020541015610fbe5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bf7565b600b60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190614a2b565b600e546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b5461112f9291821691620100009091041660001961312a565b600b5461114f9030906201000090046001600160a01b031660001961312a565b600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190614a48565b50601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112366012600a6149fd565b6112409082614a0c565b905061125433308360008060006001613237565b50600b54600e54600f546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b036201000090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f691906148d1565b306000908152600160205260409020546000805460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0396871660048201529486166024860152604485019390935260648401919091526084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190614a65565b5050506113cb6125eb565b50565b60006113dc6012600a6149fd565b6019546113e99190614a93565b905090565b60006113fc6012600a6149fd565b61140a906305f5e100614a0c565b60000361141657600080fd5b6114226012600a6149fd565b6113e9906305f5e100614a0c565b6000546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146114cf5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff161015611580576114ea6012600a6149fd565b828260ff16815181106114ff576114ff614ace565b60200260200101516115119190614a0c565b33600090815260016020526040902054101561152c57600080fd5b61156e838260ff168151811061154457611544614ace565b6020026020010151838360ff168151811061156157611561614ace565b602002602001015161199f565b8061157881614afd565b9150506114d2565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ea576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115e4908490614b1c565b90915550505b6115f5848484613477565b949350505050565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60646116596012600a6149fd565b611667906305f5e100614a0c565b6116719190614a93565b818361167f6012600a6149fd565b61168d906305f5e100614a0c565b6116979190614a0c565b6116a19190614a93565b10156117155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bf7565b80826117236012600a6149fd565b611731906305f5e100614a0c565b61173b9190614a0c565b6117459190614a93565b6019555050565b6000546001600160a01b0316331461179a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146117eb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff16101561158057818160ff168151811061180f5761180f614ace565b6020026020010151611836336001600160a01b031660009081526001602052604090205490565b101561184157600080fd5b6118a333848360ff168151811061185a5761185a614ace565b60200260200101516012600a61187091906149fd565b858560ff168151811061188557611885614ace565b60200260200101516118979190614a0c565b60008060006001613237565b50806118ae81614afd565b9150506117ee565b6000546001600160a01b031633146119045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561198157600080fd5b505af1158015611995573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146119ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615611a1757600080fd5b611a236012600a6149fd565b611a2d9082614a0c565b905061158033838360008060006001613237565b6000546001600160a01b03163314611a8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6107d08361ffff1611158015611aab5750610b548261ffff1611155b8015611abd57506107d08161ffff1611155b611b095760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf7565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611bca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d70565b6000546001600160a01b03163314611c6a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b8385611c786012600a6149fd565b611c86906305f5e100614a0c565b611c909190614a0c565b611c9a9190614a93565b6016558183611cab6012600a6149fd565b611cb9906305f5e100614a0c565b611cc39190614a0c565b611ccd9190614a93565b60175560145550505050565b6000546001600160a01b03163314611d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611da05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6103e8611daf6012600a6149fd565b611dbd906305f5e100614a0c565b611dc79190614a93565b8183611dd56012600a6149fd565b611de3906305f5e100614a0c565b611ded9190614a0c565b611df79190614a93565b1015611e6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf7565b8082611e796012600a6149fd565b611e87906305f5e100614a0c565b611e919190614a0c565b611e9b9190614a93565b6018555050565b6000546001600160a01b03163314611ef05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b038116611f6c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161200a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b60008054612023916001600160a01b03909116906120d8565b61202e8160016120d8565b600080546001600160a01b03168152600160205260409020541561207557600080546001600160a01b0316808252600160205260409091205461207391908390611897565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146121265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461219f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff16156121b457600080fd5b306001600160a01b0382160361220c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf7565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600061225a6012600a6149fd565b6018546113e99190614a93565b6000546001600160a01b031633146122b55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600080546122ce916001600160a01b03909116906120d8565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601080546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155601180549385169382169390931790925560128054919093169116179055565b6000546001600160a01b031633146124155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b801515600003612491576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c50565b600354156124f8576203f480600354426124ab9190614b1c565b116124f85760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf7565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c50565b5050565b600080546001600160a01b031633146125c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600b546125e59030906201000090046001600160a01b031660001961312a565b50600190565b6000546001600160a01b031633146126395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a5460ff161561268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf7565b601a54610100900460ff166126e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf7565b601a546201000090046001600160a01b031661272957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156127b457600080fd5b505af19250505080156127c5575060015b50601a805460ff19166001179055600c5461271090612802906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61280d90600a614a0c565b6128179190614a93565b601655600c546001600160a01b031660009081526001602052604090205461271090612844906019614a0c565b61284e9190614a93565b601755565b6000612860338484613477565b5060019392505050565b6000546001600160a01b031633146128b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600a805461ffff8581167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000085831602177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000008483160217909155600b5416816129328486614b33565b61293c9190614b33565b6129469190614b33565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546129949162010000820481169116614b33565b600a5461ffff9182166601000000000000909104909116111561158057600080fd5b6000546001600160a01b03163314612a045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a4d90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0f9190614a2b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c079190614a2b565b90506001600160a01b038116612db057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c799190614a2b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cea9190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d739190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612de4565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03858116820292909217928390556115809230929190041660001961312a565b6000546001600160a01b03163314612e835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff1615612edb5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf7565b600f546000546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039283169263a9059cbb92169083906370a0823190602401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d91906148d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612fd0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb9190614a48565b6000546001600160a01b031633146130425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db69190614a48565b6001600160a01b0383166131805760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0382166131d65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff166132e3576132538888613932565b601a54610100900460ff1615801561327057506132708888613a90565b156132e35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6132ed8888613a90565b156133a057601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613389575060408051601f3d908101601f1916820190925261338691810190614a48565b60015b61339257600080fd5b90508061339e57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906133c8908490614b1c565b9091555060009050856133db57866133e7565b6133e78986868a613b65565b6001600160a01b038916600090815260016020526040812080549293508392909190613414908490614b59565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166134f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0383166135715760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b600082116135e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0384166000908152600260205260408120548190819060ff16156136155760019250613643565b6001600160a01b03861660009081526002602052604090205460ff161561363f5760019150613643565b5060015b61364d8787613a90565b1561385957601a5460ff166136a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf7565b82806136ad5750815b15613771576001600160a01b03871660009081526006602052604090205460ff161580156136f457506001600160a01b03861660009081526006602052604090205460ff16155b15613771576018548511156137715760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf7565b600b546001600160a01b03878116620100009092041614801590613793575081155b15613859576001600160a01b03861660009081526006602052604090205460ff1661385957601954856137db886001600160a01b031660009081526001602052604090205490565b6137e59190614b59565b11156138595760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b03871660009081526005602052604090205460019060ff168061389b57506001600160a01b03871660009081526005602052604090205460ff165b156138a4575060005b82156139175760135460ff161580156138c45750601354610100900460ff165b1561391757426014546015546138da9190614b59565b10156139175730600090815260016020526040902054601654811061391557601754811061390757506017545b61391081613c3c565b426015555b505b61392688888884888888613237565b98975050505050505050565b601a54610100900460ff16156139b05760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6139ba8282613a90565b1580156139d45750600c546001600160a01b038281169116145b15612572576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff001916610100179081905562010000900416613a4957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b03848116911614801590613abd57506000546001600160a01b03838116911614155b8015613ad457506000546001600160a01b03163214155b8015613af957506001600160a01b03821660009081526008602052604090205460ff16155b8015613b1e57506001600160a01b03831660009081526008602052604090205460ff16155b8015613b3557506001600160a01b03821661dead14155b8015613b4957506001600160a01b03821615155b8015613b5e57506001600160a01b0383163014155b9392505050565b6000808415613b7b575060095461ffff16613ba5565b8315613b94575060095462010000900461ffff16613ba5565b50600954640100000000900461ffff165b6000612710613bb48386614a0c565b613bbe9190614a93565b30600090815260016020526040812080549293508392909190613be2908490614b59565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613c318185614b1c565b979650505050505050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613c9d5750614365565b306000908152600460209081526040808320600b546201000090046001600160a01b0316845290915290205460001914613d0257306000908152600460209081526040808320600b546201000090046001600160a01b03168452909152902060001990555b600f54600b546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152620100009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa158015613d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9b91906148d1565b14613e3b57600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015613e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e399190614a48565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e7057613e70614ace565b6001600160a01b039283166020918202929092010152600e54825191169082906001908110613ea157613ea1614ace565b6001600160a01b039283166020918202929092010152600b54601a546040517f5c11d7950000000000000000000000000000000000000000000000000000000081526201000092839004841693635c11d79593613f109389936000938993909204909116904290600401614b71565b600060405180830381600087803b158015613f2a57600080fd5b505af1158015613f3e573d6000803e3d6000fd5b50505050601a60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f9257600080fd5b505af1158015613fa6573d6000803e3d6000fd5b5050600f546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561400e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403291906148d1565b90506000836060015161ffff16846020015161ffff16836140539190614a0c565b61405d9190614a93565b6060850151600b5491925060009161ffff9182169161407d911685614a0c565b6140879190614a93565b90506000856060015161ffff16866040015161ffff16856140a89190614a0c565b6140b29190614a93565b90506000816140c18486614b59565b6140cb9190614b59565b6140d59086614b1c565b602088015190915061ffff161561417a57600f54600d546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015614154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141789190614a48565b505b865161ffff161561421957600f546010546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142179190614a48565b505b602087015161ffff16156142bb57600f546011546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810187905291169063a9059cbb906044016020604051808303816000875af1158015614295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b99190614a48565b505b604087015161ffff161561435d57600f546012546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015614337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061435b9190614a48565b505b505050505050505b506013805460ff19169055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156143ca576143ca614372565b604052919050565b600067ffffffffffffffff8211156143ec576143ec614372565b5060051b60200190565b6001600160a01b03811681146113cb57600080fd5b600082601f83011261441c57600080fd5b8135602061443161442c836143d2565b6143a1565b82815260059290921b8401810191818101908684111561445057600080fd5b8286015b84811015614474578035614467816143f6565b8352918301918301614454565b509695505050505050565b80151581146113cb57600080fd5b600080604083850312156144a057600080fd5b823567ffffffffffffffff8111156144b757600080fd5b6144c38582860161440b565b92505060208301356144d48161447f565b809150509250929050565b600060208083528351808285015260005b8181101561450c578581018301518582016040015282016144f0565b8181111561451e576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561454657600080fd5b5035919050565b6000806040838503121561456057600080fd5b823561456b816143f6565b946020939093013593505050565b6000806040838503121561458c57600080fd5b823567ffffffffffffffff808211156145a457600080fd5b6145b08683870161440b565b93506020915081850135818111156145c757600080fd5b85019050601f810186136145da57600080fd5b80356145e861442c826143d2565b81815260059190911b8201830190838101908883111561460757600080fd5b928401925b828410156146255783358252928401929084019061460c565b80955050505050509250929050565b60008060006060848603121561464957600080fd5b8335614654816143f6565b92506020840135614664816143f6565b929592945050506040919091013590565b6000806040838503121561468857600080fd5b50508035926020909101359150565b600080600080608085870312156146ad57600080fd5b84356146b88161447f565b935060208501356146c88161447f565b925060408501356146d88161447f565b915060608501356146e88161447f565b939692955090935050565b803561ffff8116811461470557600080fd5b919050565b60008060006060848603121561471f57600080fd5b614728846146f3565b9250614736602085016146f3565b9150614744604085016146f3565b90509250925092565b60006020828403121561475f57600080fd5b8135613b5e816143f6565b600080600080600060a0868803121561478257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156147b857600080fd5b82356147c3816143f6565b915060208301356144d48161447f565b6000806000606084860312156147e857600080fd5b83356147f3816143f6565b92506020840135614803816143f6565b91506040840135614813816143f6565b809150509250925092565b60006020828403121561483057600080fd5b8135613b5e8161447f565b6000806040838503121561484e57600080fd5b8235614859816143f6565b915060208301356144d4816143f6565b600081518084526020808501945080840160005b838110156148a25781516001600160a01b03168752958201959082019060010161487d565b509495945050505050565b6040815260006148c06040830185614869565b905082151560208301529392505050565b6000602082840312156148e357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561495457816000190482111561493a5761493a6148ea565b8085161561494757918102915b93841c939080029061491e565b509250929050565b60008261496b57506001610db6565b8161497857506000610db6565b816001811461498e5760028114614998576149b4565b6001915050610db6565b60ff8411156149a9576149a96148ea565b50506001821b610db6565b5060208310610133831016604e8410600b84101617156149d7575081810a610db6565b6149e18383614919565b80600019048211156149f5576149f56148ea565b029392505050565b6000613b5e60ff84168361495c565b6000816000190483118215151615614a2657614a266148ea565b500290565b600060208284031215614a3d57600080fd5b8151613b5e816143f6565b600060208284031215614a5a57600080fd5b8151613b5e8161447f565b600080600060608486031215614a7a57600080fd5b8351925060208401519150604084015190509250925092565b600082614ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614b1357614b136148ea565b60010192915050565b600082821015614b2e57614b2e6148ea565b500390565b600061ffff808316818516808303821115614b5057614b506148ea565b01949350505050565b60008219821115614b6c57614b6c6148ea565b500190565b85815284602082015260a060408201526000614b9060a0830186614869565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212206f78ea16a0aeaae945a61beb3c5be92dfbae67dfd160f9c46395f569ae42d6ba64736f6c634300080d0033
0x600060038190556105786080819052610af060a05260c0526009805465ffffffffffff19166505780af0057817905561076c60e0526105dc610100526102586101205261106861014052600a80546001600160401b031916671068025805dc076c178155600b805460c861ffff19909116179055600d8054731676f2a357cc4faeaded4a99aa0ab0a29cb7d9966001600160a01b031991821617909155600e805473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb489083168117909155600f8054831690911790556101c060405273167b89bc4c2b56e963e2980d8e49d74a49e0a44161016081905273e3706fff58a0dd7e3d217d33768a02b35128534861018081905273d0faa93480f564dc51ea10f05560aa9d5ea8bfbe6101a08190526010805485169093179092556011805484169091179055601280549092161781556013805461ff00191690556014929092556103e891620001609162000540565b62000170906305f5e10062000558565b6200017d90600562000558565b6200018991906200057a565b60185560646200019c6012600a62000540565b620001ac906305f5e10062000558565b620001b990600162000558565b620001c591906200057a565b601955601a805461ffff60ff60b01b0119169055620001e76012600a62000540565b620001f7906305f5e10062000558565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200023a6012600a62000540565b6200024a906305f5e10062000558565b60405190815260200160405180910390a3600080546001600160a01b0319163317905546603803620002a657600b805462010000600160b01b0319167510ed43c718714eb63d5aa57b78b54704e256024e0000179055620003a9565b46606103620002df57600b805462010000600160b01b031916759ac64cc6e4415144c455bd8e4837fea55603e5c30000179055620003a9565b4660011480620002ef5750466004145b80620002fb5750466003145b156200033157600b805462010000600160b01b031916757a250d5630b4cf539739df2c5dacb4c659f2488d0000179055620003a9565b4661a86a036200036b57600b805462010000600160b01b0319167560ae616a2155ee3d9a68541ba4544862310933d40000179055620003a9565b4660fa03620003a457600b805462010000600160b01b03191675f491e7b69e4244ad4002bc14e878a34207e38c290000179055620003a9565b600080fd5b600080546001600160a01b0390811682526005602090815260408084208054600160ff19918216811790925530865282862080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054821683179055855490941685526008909252909220805490911690911790556200059d565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004825781600019048211156200046657620004666200042b565b808516156200047457918102915b93841c939080029062000446565b509250929050565b6000826200049b575060016200053a565b81620004aa575060006200053a565b8160018114620004c35760028114620004ce57620004ee565b60019150506200053a565b60ff841115620004e257620004e26200042b565b50506001821b6200053a565b5060208310610133831016604e8410600b841016171562000513575081810a6200053a565b6200051f838362000441565b80600019048211156200053657620005366200042b565b0290505b92915050565b60006200055160ff8416836200048a565b9392505050565b60008160001904831182151516156200057557620005756200042b565b500290565b6000826200059857634e487b7160e01b600052601260045260246000fd5b500490565b614be380620005ad6000396000f3fe60806040526004361061037a5760003560e01c80634fbee193116101d157806395d89b4111610102578063dd62ed3e116100a0578063eec2744e1161006f578063eec2744e14610af7578063f94aa1b414610b17578063fdb78c0e14610b6e578063fe575a8714610b8d57600080fd5b8063dd62ed3e14610a66578063e4fcfd1814610aac578063eafb5a3c14610ac2578063ee5d9c2d14610ae257600080fd5b8063b1b08f71116100dc578063b1b08f7114610604578063b3d514fb146109c5578063cab5ebea146109db578063cf847706146109fb57600080fd5b806395d89b411461093f578063a9059cbb14610985578063aa22b172146109a557600080fd5b8063715018a61161016f578063893d20e811610149578063893d20e8146108d757806389a30271146108f55780638a63bd9b146109155780638a8c523c1461092a57600080fd5b8063715018a61461088257806375cb1bd11461089757806380c581d1146108b757600080fd5b80635c24b074116101ab5780635c24b074146107de5780635cce86cd146107fe5780636ebd00781461083757806370a082311461084c57600080fd5b80634fbee1931461076657806350a8e0161461079f578063590ffdce146107be57600080fd5b80632610eaca116102ab57806333251a0b116102495780633f3cf56c116102235780633f3cf56c146106ec578063452ed4f11461070c5780634ada218b1461072c5780634fb2e45d1461074657600080fd5b806333251a0b1461068c57806334cd8260146106ac57806336fddb04146106cc57600080fd5b80632cee7602116102855780632cee76021461061a5780632e8fa8211461063a578063313ce5671461065057806332cde6641461066c57600080fd5b80632610eaca146105c457806329dd8798146105e45780632b28fc7a1461060457600080fd5b8063095ea7b31161031857806318160ddd116102f257806318160ddd1461054f5780631cc43f071461056457806323b872dd1461058457806326003957146105a457600080fd5b8063095ea7b3146104ea578063098f8b021461051a5780630fa604e41461053a57600080fd5b8063069d955f11610354578063069d955f146103ff57806306fdde03146104555780630758d924146104a457806309231602146104ca57600080fd5b806303fd2a45146103865780630445b667146103b957806305bbedb6146103dd57600080fd5b3661038157005b600080fd5b34801561039257600080fd5b5061039c61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103c557600080fd5b506103cf60165481565b6040519081526020016103b0565b3480156103e957600080fd5b506103fd6103f836600461448d565b610bad565b005b34801561040b57600080fd5b506009546104309061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103b0565b34801561046157600080fd5b5060408051808201909152601581527f57696665204368616e67696e67204361706974616c000000000000000000000060208201525b6040516103b091906144df565b3480156104b057600080fd5b50600b5461039c906201000090046001600160a01b031681565b3480156104d657600080fd5b506103fd6104e5366004614534565b610c86565b3480156104f657600080fd5b5061050a61050536600461454d565b610da5565b60405190151581526020016103b0565b34801561052657600080fd5b506103fd610535366004614534565b610dbc565b34801561054657600080fd5b506103cf6113ce565b34801561055b57600080fd5b506103cf6113ee565b34801561057057600080fd5b506103fd61057f366004614579565b611430565b34801561059057600080fd5b5061050a61059f366004614634565b611585565b3480156105b057600080fd5b506103fd6105bf366004614675565b6115fd565b3480156105d057600080fd5b506103fd6105df366004614579565b61174c565b3480156105f057600080fd5b506103fd6105ff366004614697565b6118b6565b34801561061057600080fd5b506103cf6107d081565b34801561062657600080fd5b506103fd61063536600461454d565b61199f565b34801561064657600080fd5b506103cf60175481565b34801561065c57600080fd5b50604051601281526020016103b0565b34801561067857600080fd5b506103fd61068736600461470a565b611a41565b34801561069857600080fd5b506103fd6106a736600461474d565b611b7c565b3480156106b857600080fd5b506103fd6106c736600461476a565b611c1c565b3480156106d857600080fd5b506103fd6106e73660046147a5565b611cd9565b3480156106f857600080fd5b506103fd610707366004614675565b611d52565b34801561071857600080fd5b50600c5461039c906001600160a01b031681565b34801561073857600080fd5b50601a5461050a9060ff1681565b34801561075257600080fd5b506103fd61076136600461474d565b611ea2565b34801561077257600080fd5b5061050a61078136600461474d565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156107ab57600080fd5b50601a5461050a90610100900460ff1681565b3480156107ca57600080fd5b506103fd6107d93660046147a5565b6120d8565b3480156107ea57600080fd5b506103fd6107f936600461474d565b612151565b34801561080a57600080fd5b5061050a61081936600461474d565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084357600080fd5b506103cf61224c565b34801561085857600080fd5b506103cf61086736600461474d565b6001600160a01b031660009081526001602052604090205490565b34801561088e57600080fd5b506103fd612267565b3480156108a357600080fd5b506103fd6108b23660046147d3565b612322565b3480156108c357600080fd5b506103fd6108d23660046147a5565b6123c7565b3480156108e357600080fd5b506000546001600160a01b031661039c565b34801561090157600080fd5b50600e5461039c906001600160a01b031681565b34801561092157600080fd5b5061050a612576565b34801561093657600080fd5b506103fd6125eb565b34801561094b57600080fd5b5060408051808201909152600481527f57494645000000000000000000000000000000000000000000000000000000006020820152610497565b34801561099157600080fd5b5061050a6109a036600461454d565b612853565b3480156109b157600080fd5b506103fd6109c036600461470a565b61286a565b3480156109d157600080fd5b506103cf610b5481565b3480156109e757600080fd5b506103fd6109f636600461481e565b6129b6565b348015610a0757600080fd5b50600a54610a389061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103b0565b348015610a7257600080fd5b506103cf610a8136600461483b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610ab857600080fd5b506103cf60145481565b348015610ace57600080fd5b506103fd610add36600461474d565b612a58565b348015610aee57600080fd5b506103fd612e35565b348015610b0357600080fd5b506103fd610b123660046147a5565b612ff4565b348015610b2357600080fd5b50601054601154601254610b44926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103b0565b348015610b7a57600080fd5b5060135461050a90610100900460ff1681565b348015610b9957600080fd5b5061050a610ba836600461474d565b61309c565b6000546001600160a01b03163314610c005760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c5090859085906004016148ad565b600060405180830381600087803b158015610c6a57600080fd5b505af1158015610c7e573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60c8811015610d255760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf7565b601a546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8a57600080fd5b505af1158015610d9e573d6000803e3d6000fd5b5050505050565b6000610db233848461312a565b5060015b92915050565b6000546001600160a01b03163314610e0a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615610e775760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610bf7565b600f546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efd91906148d1565b11610f4a5760405162461bcd60e51b815260206004820152601860248201527f436f6e7472616374206d757374206861766520555344432e00000000000000006044820152606401610bf7565b610f566012600a6149fd565b610f609082614a0c565b336000908152600160205260409020541015610fbe5760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bf7565b600b60029054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190614a2b565b600e546040517fc9c653960000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801561109f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c39190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600b5461112f9291821691620100009091041660001961312a565b600b5461114f9030906201000090046001600160a01b031660001961312a565b600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156111c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e89190614a48565b50601a80547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556112366012600a6149fd565b6112409082614a0c565b905061125433308360008060006001613237565b50600b54600e54600f546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482018190526001600160a01b036201000090950485169463e8e337009481169391929116906370a0823190602401602060405180830381865afa1580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f691906148d1565b306000908152600160205260409020546000805460405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0396871660048201529486166024860152604485019390935260648401919091526084830181905260a48301529190911660c48201524260e4820152610104016060604051808303816000875af115801561139c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c09190614a65565b5050506113cb6125eb565b50565b60006113dc6012600a6149fd565b6019546113e99190614a93565b905090565b60006113fc6012600a6149fd565b61140a906305f5e100614a0c565b60000361141657600080fd5b6114226012600a6149fd565b6113e9906305f5e100614a0c565b6000546001600160a01b0316331461147e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146114cf5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff161015611580576114ea6012600a6149fd565b828260ff16815181106114ff576114ff614ace565b60200260200101516115119190614a0c565b33600090815260016020526040902054101561152c57600080fd5b61156e838260ff168151811061154457611544614ace565b6020026020010151838360ff168151811061156157611561614ace565b602002602001015161199f565b8061157881614afd565b9150506114d2565b505050565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146115ea576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906115e4908490614b1c565b90915550505b6115f5848484613477565b949350505050565b6000546001600160a01b0316331461164b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60646116596012600a6149fd565b611667906305f5e100614a0c565b6116719190614a93565b818361167f6012600a6149fd565b61168d906305f5e100614a0c565b6116979190614a0c565b6116a19190614a93565b10156117155760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bf7565b80826117236012600a6149fd565b611731906305f5e100614a0c565b61173b9190614a0c565b6117459190614a93565b6019555050565b6000546001600160a01b0316331461179a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b80518251146117eb5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bf7565b60005b82518160ff16101561158057818160ff168151811061180f5761180f614ace565b6020026020010151611836336001600160a01b031660009081526001602052604090205490565b101561184157600080fd5b6118a333848360ff168151811061185a5761185a614ace565b60200260200101516012600a61187091906149fd565b858560ff168151811061188557611885614ace565b60200260200101516118979190614a0c565b60008060006001613237565b50806118ae81614afd565b9150506117ee565b6000546001600160a01b031633146119045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561198157600080fd5b505af1158015611995573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146119ed5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54760100000000000000000000000000000000000000000000900460ff1615611a1757600080fd5b611a236012600a6149fd565b611a2d9082614a0c565b905061158033838360008060006001613237565b6000546001600160a01b03163314611a8f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6107d08361ffff1611158015611aab5750610b548261ffff1611155b8015611abd57506107d08161ffff1611155b611b095760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf7565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b03163314611bca5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d70565b6000546001600160a01b03163314611c6a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b8385611c786012600a6149fd565b611c86906305f5e100614a0c565b611c909190614a0c565b611c9a9190614a93565b6016558183611cab6012600a6149fd565b611cb9906305f5e100614a0c565b611cc39190614a0c565b611ccd9190614a93565b60175560145550505050565b6000546001600160a01b03163314611d275760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611da05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6103e8611daf6012600a6149fd565b611dbd906305f5e100614a0c565b611dc79190614a93565b8183611dd56012600a6149fd565b611de3906305f5e100614a0c565b611ded9190614a0c565b611df79190614a93565b1015611e6b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf7565b8082611e796012600a6149fd565b611e87906305f5e100614a0c565b611e919190614a0c565b611e9b9190614a93565b6018555050565b6000546001600160a01b03163314611ef05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b038116611f6c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b0382160161200a5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf7565b60008054612023916001600160a01b03909116906120d8565b61202e8160016120d8565b600080546001600160a01b03168152600160205260409020541561207557600080546001600160a01b0316808252600160205260409091205461207391908390611897565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146121265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461219f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff16156121b457600080fd5b306001600160a01b0382160361220c5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf7565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600061225a6012600a6149fd565b6018546113e99190614a93565b6000546001600160a01b031633146122b55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600080546122ce916001600160a01b03909116906120d8565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146123705760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601080546001600160a01b039485167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155601180549385169382169390931790925560128054919093169116179055565b6000546001600160a01b031633146124155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b801515600003612491576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c50565b600354156124f8576203f480600354426124ab9190614b1c565b116124f85760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf7565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c50565b5050565b600080546001600160a01b031633146125c55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600b546125e59030906201000090046001600160a01b031660001961312a565b50600190565b6000546001600160a01b031633146126395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a5460ff161561268c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf7565b601a54610100900460ff166126e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf7565b601a546201000090046001600160a01b031661272957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156127b457600080fd5b505af19250505080156127c5575060015b50601a805460ff19166001179055600c5461271090612802906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61280d90600a614a0c565b6128179190614a93565b601655600c546001600160a01b031660009081526001602052604090205461271090612844906019614a0c565b61284e9190614a93565b601755565b6000612860338484613477565b5060019392505050565b6000546001600160a01b031633146128b85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b600a805461ffff8581167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000085831602177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000008483160217909155600b5416816129328486614b33565b61293c9190614b33565b6129469190614b33565b600a80547fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff16660100000000000061ffff938416021790556009546129949162010000820481169116614b33565b600a5461ffff9182166601000000000000909104909116111561158057600080fd5b6000546001600160a01b03163314612a045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601380548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790612a4d90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314612aa65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aeb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b0f9190614a2b565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b809190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c079190614a2b565b90506001600160a01b038116612db057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c799190614a2b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cea9190614a2b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d739190614a2b565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055612de4565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b03858116820292909217928390556115809230929190041660001961312a565b6000546001600160a01b03163314612e835760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a54610100900460ff1615612edb5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf7565b600f546000546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b039283169263a9059cbb92169083906370a0823190602401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d91906148d1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612fd0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb9190614a48565b6000546001600160a01b031633146130425760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf7565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c50565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613106573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db69190614a48565b6001600160a01b0383166131805760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0382166131d65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf7565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601a54600090610100900460ff166132e3576132538888613932565b601a54610100900460ff1615801561327057506132708888613a90565b156132e35760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6132ed8888613a90565b156133a057601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613389575060408051601f3d908101601f1916820190925261338691810190614a48565b60015b61339257600080fd5b90508061339e57600080fd5b505b6001600160a01b038816600090815260016020526040812080548892906133c8908490614b1c565b9091555060009050856133db57866133e7565b6133e78986868a613b65565b6001600160a01b038916600090815260016020526040812080549293508392909190613414908490614b59565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346091815260200190565b60405180910390a350600198975050505050505050565b60006001600160a01b0384166134f55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0383166135715760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b600082116135e75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b0384166000908152600260205260408120548190819060ff16156136155760019250613643565b6001600160a01b03861660009081526002602052604090205460ff161561363f5760019150613643565b5060015b61364d8787613a90565b1561385957601a5460ff166136a45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf7565b82806136ad5750815b15613771576001600160a01b03871660009081526006602052604090205460ff161580156136f457506001600160a01b03861660009081526006602052604090205460ff16155b15613771576018548511156137715760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf7565b600b546001600160a01b03878116620100009092041614801590613793575081155b15613859576001600160a01b03861660009081526006602052604090205460ff1661385957601954856137db886001600160a01b031660009081526001602052604090205490565b6137e59190614b59565b11156138595760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf7565b6001600160a01b03871660009081526005602052604090205460019060ff168061389b57506001600160a01b03871660009081526005602052604090205460ff165b156138a4575060005b82156139175760135460ff161580156138c45750601354610100900460ff165b1561391757426014546015546138da9190614b59565b10156139175730600090815260016020526040902054601654811061391557601754811061390757506017545b61391081613c3c565b426015555b505b61392688888884888888613237565b98975050505050505050565b601a54610100900460ff16156139b05760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf7565b6139ba8282613a90565b1580156139d45750600c546001600160a01b038281169116145b15612572576001600160a01b038083166000908152600860205260409020805460ff19166001179055601a805461ff001916610100179081905562010000900416613a4957601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080546001600160a01b03848116911614801590613abd57506000546001600160a01b03838116911614155b8015613ad457506000546001600160a01b03163214155b8015613af957506001600160a01b03821660009081526008602052604090205460ff16155b8015613b1e57506001600160a01b03831660009081526008602052604090205460ff16155b8015613b3557506001600160a01b03821661dead14155b8015613b4957506001600160a01b03821615155b8015613b5e57506001600160a01b0383163014155b9392505050565b6000808415613b7b575060095461ffff16613ba5565b8315613b94575060095462010000900461ffff16613ba5565b50600954640100000000900461ffff165b6000612710613bb48386614a0c565b613bbe9190614a93565b30600090815260016020526040812080549293508392909190613be2908490614b59565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613c318185614b1c565b979650505050505050565b6013805460ff1916600117905560408051608081018252600a5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000900490911660608201819052600003613c9d5750614365565b306000908152600460209081526040808320600b546201000090046001600160a01b0316845290915290205460001914613d0257306000908152600460209081526040808320600b546201000090046001600160a01b03168452909152902060001990555b600f54600b546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152306004820152620100009091046001600160a01b03908116602483015260001992169063dd62ed3e90604401602060405180830381865afa158015613d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d9b91906148d1565b14613e3b57600f54600b546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b036201000090920482166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af1158015613e15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e399190614a48565b505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613e7057613e70614ace565b6001600160a01b039283166020918202929092010152600e54825191169082906001908110613ea157613ea1614ace565b6001600160a01b039283166020918202929092010152600b54601a546040517f5c11d7950000000000000000000000000000000000000000000000000000000081526201000092839004841693635c11d79593613f109389936000938993909204909116904290600401614b71565b600060405180830381600087803b158015613f2a57600080fd5b505af1158015613f3e573d6000803e3d6000fd5b50505050601a60029054906101000a90046001600160a01b03166001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f9257600080fd5b505af1158015613fa6573d6000803e3d6000fd5b5050600f546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561400e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061403291906148d1565b90506000836060015161ffff16846020015161ffff16836140539190614a0c565b61405d9190614a93565b6060850151600b5491925060009161ffff9182169161407d911685614a0c565b6140879190614a93565b90506000856060015161ffff16866040015161ffff16856140a89190614a0c565b6140b29190614a93565b90506000816140c18486614b59565b6140cb9190614b59565b6140d59086614b1c565b602088015190915061ffff161561417a57600f54600d546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810186905291169063a9059cbb906044016020604051808303816000875af1158015614154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141789190614a48565b505b865161ffff161561421957600f546010546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af11580156141f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142179190614a48565b505b602087015161ffff16156142bb57600f546011546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810187905291169063a9059cbb906044016020604051808303816000875af1158015614295573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142b99190614a48565b505b604087015161ffff161561435d57600f546012546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303816000875af1158015614337573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061435b9190614a48565b505b505050505050505b506013805460ff19169055565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156143ca576143ca614372565b604052919050565b600067ffffffffffffffff8211156143ec576143ec614372565b5060051b60200190565b6001600160a01b03811681146113cb57600080fd5b600082601f83011261441c57600080fd5b8135602061443161442c836143d2565b6143a1565b82815260059290921b8401810191818101908684111561445057600080fd5b8286015b84811015614474578035614467816143f6565b8352918301918301614454565b509695505050505050565b80151581146113cb57600080fd5b600080604083850312156144a057600080fd5b823567ffffffffffffffff8111156144b757600080fd5b6144c38582860161440b565b92505060208301356144d48161447f565b809150509250929050565b600060208083528351808285015260005b8181101561450c578581018301518582016040015282016144f0565b8181111561451e576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561454657600080fd5b5035919050565b6000806040838503121561456057600080fd5b823561456b816143f6565b946020939093013593505050565b6000806040838503121561458c57600080fd5b823567ffffffffffffffff808211156145a457600080fd5b6145b08683870161440b565b93506020915081850135818111156145c757600080fd5b85019050601f810186136145da57600080fd5b80356145e861442c826143d2565b81815260059190911b8201830190838101908883111561460757600080fd5b928401925b828410156146255783358252928401929084019061460c565b80955050505050509250929050565b60008060006060848603121561464957600080fd5b8335614654816143f6565b92506020840135614664816143f6565b929592945050506040919091013590565b6000806040838503121561468857600080fd5b50508035926020909101359150565b600080600080608085870312156146ad57600080fd5b84356146b88161447f565b935060208501356146c88161447f565b925060408501356146d88161447f565b915060608501356146e88161447f565b939692955090935050565b803561ffff8116811461470557600080fd5b919050565b60008060006060848603121561471f57600080fd5b614728846146f3565b9250614736602085016146f3565b9150614744604085016146f3565b90509250925092565b60006020828403121561475f57600080fd5b8135613b5e816143f6565b600080600080600060a0868803121561478257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600080604083850312156147b857600080fd5b82356147c3816143f6565b915060208301356144d48161447f565b6000806000606084860312156147e857600080fd5b83356147f3816143f6565b92506020840135614803816143f6565b91506040840135614813816143f6565b809150509250925092565b60006020828403121561483057600080fd5b8135613b5e8161447f565b6000806040838503121561484e57600080fd5b8235614859816143f6565b915060208301356144d4816143f6565b600081518084526020808501945080840160005b838110156148a25781516001600160a01b03168752958201959082019060010161487d565b509495945050505050565b6040815260006148c06040830185614869565b905082151560208301529392505050565b6000602082840312156148e357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561495457816000190482111561493a5761493a6148ea565b8085161561494757918102915b93841c939080029061491e565b509250929050565b60008261496b57506001610db6565b8161497857506000610db6565b816001811461498e5760028114614998576149b4565b6001915050610db6565b60ff8411156149a9576149a96148ea565b50506001821b610db6565b5060208310610133831016604e8410600b84101617156149d7575081810a610db6565b6149e18383614919565b80600019048211156149f5576149f56148ea565b029392505050565b6000613b5e60ff84168361495c565b6000816000190483118215151615614a2657614a266148ea565b500290565b600060208284031215614a3d57600080fd5b8151613b5e816143f6565b600060208284031215614a5a57600080fd5b8151613b5e8161447f565b600080600060608486031215614a7a57600080fd5b8351925060208401519150604084015190509250925092565b600082614ac9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff8103614b1357614b136148ea565b60010192915050565b600082821015614b2e57614b2e6148ea565b500390565b600061ffff808316818516808303821115614b5057614b506148ea565b01949350505050565b60008219821115614b6c57614b6c6148ea565b500190565b85815284602082015260a060408201526000614b9060a0830186614869565b6001600160a01b039490941660608301525060800152939250505056fea26469706673582212206f78ea16a0aeaae945a61beb3c5be92dfbae67dfd160f9c46395f569ae42d6ba64736f6c634300080d0033