60a06040819052600060808190526200001b9160099162000242565b5060408051808201909152600580825264173539b7b760d91b60209092019182526200004a91600a9162000242565b50669fdf42f6e48000600c55611387600d556014600e556103e8600f556010805461ffff19166101001790553480156200008357600080fd5b506040518060400160405280601481526020017f4665746368204f7574646f6f72732047656e20320000000000000000000000008152506040518060400160405280600581526020016408ccae8c6d60db1b815250620000f2620000ec6200016a60201b60201c565b6200016e565b81516200010790600390602085019062000242565b5080516200011d90600490602084019062000242565b506000600155505060408051808201909152601a81527f697066733a2f2f5f5f4349445f5f2f68696464656e2e6a736f6e00000000000060208201526200016490620001be565b62000325565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001c8620001e1565b8051620001dd90600b90602084019062000242565b5050565b6000546001600160a01b03163314620002405760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b8280546200025090620002e8565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b600181811c90821680620002fd57607f821691505b602082108114156200031f57634e487b7160e01b600052602260045260246000fd5b50919050565b611fd380620003356000396000f3fe60806040526004361061023b5760003560e01c80636f8b44b01161012e578063b071401b116100ab578063d5abeb011161006f578063d5abeb0114610648578063e0a808531461065e578063e985e9c51461067e578063efbd73f4146106c7578063f2fde38b146106e757600080fd5b8063b071401b146105bf578063b88d4fde146105df578063ba7d2c76146105f2578063c87b56dd14610608578063d0eb26b01461062857600080fd5b806394354fd0116100f257806394354fd01461054c57806395d89b4114610562578063a0712d6814610577578063a22cb4651461058a578063a45ba8e7146105aa57600080fd5b80636f8b44b0146104b957806370a08231146104d9578063715018a6146104f95780637ec4a6591461050e5780638da5cb5b1461052e57600080fd5b80633ccfd60b116101bc578063518302271161018057806351830227146104365780635503a0e8146104555780635c975abb1461046a57806362b99ad4146104845780636352211e1461049957600080fd5b80633ccfd60b146103a157806342842e0e146103b6578063438b6300146103c957806344a0d68a146103f65780634fdd43cb1461041657600080fd5b806316ba10e01161020357806316ba10e01461030857806316c38b3c1461032857806318160ddd1461034857806318cae2691461036157806323b872dd1461038e57600080fd5b806301ffc9a71461024057806306fdde0314610275578063081812fc14610297578063095ea7b3146102cf57806313faede6146102e4575b600080fd5b34801561024c57600080fd5b5061026061025b366004611bf4565b610707565b60405190151581526020015b60405180910390f35b34801561028157600080fd5b5061028a610759565b60405161026c9190611e24565b3480156102a357600080fd5b506102b76102b2366004611c77565b6107eb565b6040516001600160a01b03909116815260200161026c565b6102e26102dd366004611baf565b61082f565b005b3480156102f057600080fd5b506102fa600c5481565b60405190815260200161026c565b34801561031457600080fd5b506102e2610323366004611c2e565b6108cf565b34801561033457600080fd5b506102e2610343366004611bd9565b6108ee565b34801561035457600080fd5b50600254600154036102fa565b34801561036d57600080fd5b506102fa61037c366004611a7f565b60116020526000908152604090205481565b6102e261039c366004611acd565b610909565b3480156103ad57600080fd5b506102e2610a9a565b6102e26103c4366004611acd565b610b7f565b3480156103d557600080fd5b506103e96103e4366004611a7f565b610b9f565b60405161026c9190611de0565b34801561040257600080fd5b506102e2610411366004611c77565b610c80565b34801561042257600080fd5b506102e2610431366004611c2e565b610c8d565b34801561044257600080fd5b5060105461026090610100900460ff1681565b34801561046157600080fd5b5061028a610ca8565b34801561047657600080fd5b506010546102609060ff1681565b34801561049057600080fd5b5061028a610d36565b3480156104a557600080fd5b506102b76104b4366004611c77565b610d43565b3480156104c557600080fd5b506102e26104d4366004611c77565b610d4e565b3480156104e557600080fd5b506102fa6104f4366004611a7f565b610d5b565b34801561050557600080fd5b506102e2610daa565b34801561051a57600080fd5b506102e2610529366004611c2e565b610dbe565b34801561053a57600080fd5b506000546001600160a01b03166102b7565b34801561055857600080fd5b506102fa600e5481565b34801561056e57600080fd5b5061028a610dd9565b6102e2610585366004611c77565b610de8565b34801561059657600080fd5b506102e26105a5366004611b85565b610fe8565b3480156105b657600080fd5b5061028a611054565b3480156105cb57600080fd5b506102e26105da366004611c77565b611061565b6102e26105ed366004611b09565b61106e565b3480156105fe57600080fd5b506102fa600f5481565b34801561061457600080fd5b5061028a610623366004611c77565b6110b8565b34801561063457600080fd5b506102e2610643366004611c77565b611227565b34801561065457600080fd5b506102fa600d5481565b34801561066a57600080fd5b506102e2610679366004611bd9565b611234565b34801561068a57600080fd5b50610260610699366004611a9a565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b3480156106d357600080fd5b506102e26106e2366004611c90565b611256565b3480156106f357600080fd5b506102e2610702366004611a7f565b611415565b60006301ffc9a760e01b6001600160e01b03198316148061073857506380ac58cd60e01b6001600160e01b03198316145b806107535750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606003805461076890611ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461079490611ec5565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b5050505050905090565b60006107f68261148e565b610813576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b600061083a82610d43565b9050336001600160a01b03821614610873576108568133610699565b610873576040516367d9dca160e11b815260040160405180910390fd5b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6108d76114b6565b80516108ea90600a906020840190611944565b5050565b6108f66114b6565b6010805460ff1916911515919091179055565b600061091482611510565b9050836001600160a01b0316816001600160a01b0316146109475760405162a1148160e81b815260040160405180910390fd5b60008281526007602052604090208054338082146001600160a01b03881690911417610994576109778633610699565b61099457604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166109bb57604051633a954ecd60e21b815260040160405180910390fd5b80156109c657600082555b6001600160a01b038681166000908152600660205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260056020526040902055600160e11b8316610a515760018401600081815260056020526040902054610a4f576001548114610a4f5760008181526005602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b610aa26114b6565b600073fc81f7b32b0e05f299d88ae2503f29b0d3e5f33f6064610ac6476050611e63565b610ad09190611e4f565b604051600081818185875af1925050503d8060008114610b0c576040519150601f19603f3d011682016040523d82523d6000602084013e610b11565b606091505b5050905080610b1f57600080fd5b600080546040516001600160a01b039091169047908381818185875af1925050503d8060008114610b6c576040519150601f19603f3d011682016040523d82523d6000602084013e610b71565b606091505b50509050806108ea57600080fd5b610b9a8383836040518060200160405280600081525061106e565b505050565b60606000610bac83610d5b565b905060008167ffffffffffffffff811115610bc957610bc9611f71565b604051908082528060200260200182016040528015610bf2578160200160208202803683370190505b509050600160005b8381108015610c0b5750600d548211155b15610c76576000610c1b83610d43565b9050866001600160a01b0316816001600160a01b03161415610c635782848381518110610c4a57610c4a611f5b565b602090810291909101015281610c5f81611f00565b9250505b82610c6d81611f00565b93505050610bfa565b5090949350505050565b610c886114b6565b600c55565b610c956114b6565b80516108ea90600b906020840190611944565b600a8054610cb590611ec5565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce190611ec5565b8015610d2e5780601f10610d0357610100808354040283529160200191610d2e565b820191906000526020600020905b815481529060010190602001808311610d1157829003601f168201915b505050505081565b60098054610cb590611ec5565b600061075382611510565b610d566114b6565b600d55565b60006001600160a01b038216610d84576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526006602052604090205467ffffffffffffffff1690565b610db26114b6565b610dbc6000611571565b565b610dc66114b6565b80516108ea906009906020840190611944565b60606004805461076890611ec5565b33600090815260116020526040902054600f54829190610e088383611e37565b1115610e5b5760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e46542070657220616464726573732065786365656465640000000060448201526064015b60405180910390fd5b600082118015610e6d5750600e548211155b610eb05760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610e52565b600d5482610ec16002546001540390565b610ecb9190611e37565b1115610f105760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610e52565b60105460ff1615610f5d5760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610e52565b82600c54610f6b9190611e63565b341015610fb05760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610e52565b33600090815260116020526040902054610fcb908490611e37565b33600081815260116020526040902091909155610b9a90846115c1565b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600b8054610cb590611ec5565b6110696114b6565b600e55565b611079848484610909565b6001600160a01b0383163b156110b257611095848484846115db565b6110b2576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b60606110c38261148e565b6111275760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610e52565b601054610100900460ff166111c857600b805461114390611ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461116f90611ec5565b80156111bc5780601f10611191576101008083540402835291602001916111bc565b820191906000526020600020905b81548152906001019060200180831161119f57829003601f168201915b50505050509050919050565b60006111d26116d3565b905060008151116111f25760405180602001604052806000815250611220565b806111fc846116e2565b600a60405160200161121093929190611cdf565b6040516020818303038152906040525b9392505050565b61122f6114b6565b600f55565b61123c6114b6565b601080549115156101000261ff0019909216919091179055565b33600090815260116020526040902054600f548391906112768383611e37565b11156112c45760405162461bcd60e51b815260206004820152601c60248201527f6d6178204e4654207065722061646472657373206578636565646564000000006044820152606401610e52565b6000821180156112d65750600e548211155b6113195760405162461bcd60e51b8152602060048201526014602482015273496e76616c6964206d696e7420616d6f756e742160601b6044820152606401610e52565b600d548261132a6002546001540390565b6113349190611e37565b11156113795760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610e52565b60105460ff16156113c65760405162461bcd60e51b815260206004820152601760248201527654686520636f6e7472616374206973207061757365642160481b6044820152606401610e52565b6113ce6114b6565b6001600160a01b0383166000908152601160205260409020546113f2908590611e37565b6001600160a01b0384166000908152601160205260409020556110b283856115c1565b61141d6114b6565b6001600160a01b0381166114825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610e52565b61148b81611571565b50565b600060015482108015610753575050600090815260056020526040902054600160e01b161590565b6000546001600160a01b03163314610dbc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e52565b60008160015481101561155857600081815260056020526040902054600160e01b8116611556575b80611220575060001901600081815260056020526040902054611538565b505b604051636f96cda160e11b815260040160405180910390fd5b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6108ea8282604051806020016040528060008152506117e0565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611610903390899088908890600401611da3565b602060405180830381600087803b15801561162a57600080fd5b505af192505050801561165a575060408051601f3d908101601f1916820190925261165791810190611c11565b60015b6116b5573d808015611688576040519150601f19603f3d011682016040523d82523d6000602084013e61168d565b606091505b5080516116ad576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b60606009805461076890611ec5565b6060816117065750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611730578061171a81611f00565b91506117299050600a83611e4f565b915061170a565b60008167ffffffffffffffff81111561174b5761174b611f71565b6040519080825280601f01601f191660200182016040528015611775576020820181803683370190505b5090505b84156116cb5761178a600183611e82565b9150611797600a86611f1b565b6117a2906030611e37565b60f81b8183815181106117b7576117b7611f5b565b60200101906001600160f81b031916908160001a9053506117d9600a86611e4f565b9450611779565b6117ea838361184d565b6001600160a01b0383163b15610b9a576001548281035b61181460008683806001019450866115db565b611831576040516368d2bf6b60e11b815260040160405180910390fd5b81811061180157816001541461184657600080fd5b5050505050565b6001548161186e5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526006602090815260408083208054680100000000000000018802019055848352600590915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461191d57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016118e5565b508161193b57604051622e076360e81b815260040160405180910390fd5b60015550505050565b82805461195090611ec5565b90600052602060002090601f01602090048101928261197257600085556119b8565b82601f1061198b57805160ff19168380011785556119b8565b828001600101855582156119b8579182015b828111156119b857825182559160200191906001019061199d565b506119c49291506119c8565b5090565b5b808211156119c457600081556001016119c9565b600067ffffffffffffffff808411156119f8576119f8611f71565b604051601f8501601f19908116603f01168101908282118183101715611a2057611a20611f71565b81604052809350858152868686011115611a3957600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611a6a57600080fd5b919050565b80358015158114611a6a57600080fd5b600060208284031215611a9157600080fd5b61122082611a53565b60008060408385031215611aad57600080fd5b611ab683611a53565b9150611ac460208401611a53565b90509250929050565b600080600060608486031215611ae257600080fd5b611aeb84611a53565b9250611af960208501611a53565b9150604084013590509250925092565b60008060008060808587031215611b1f57600080fd5b611b2885611a53565b9350611b3660208601611a53565b925060408501359150606085013567ffffffffffffffff811115611b5957600080fd5b8501601f81018713611b6a57600080fd5b611b79878235602084016119dd565b91505092959194509250565b60008060408385031215611b9857600080fd5b611ba183611a53565b9150611ac460208401611a6f565b60008060408385031215611bc257600080fd5b611bcb83611a53565b946020939093013593505050565b600060208284031215611beb57600080fd5b61122082611a6f565b600060208284031215611c0657600080fd5b813561122081611f87565b600060208284031215611c2357600080fd5b815161122081611f87565b600060208284031215611c4057600080fd5b813567ffffffffffffffff811115611c5757600080fd5b8201601f81018413611c6857600080fd5b6116cb848235602084016119dd565b600060208284031215611c8957600080fd5b5035919050565b60008060408385031215611ca357600080fd5b82359150611ac460208401611a53565b60008151808452611ccb816020860160208601611e99565b601f01601f19169290920160200192915050565b600084516020611cf28285838a01611e99565b855191840191611d058184848a01611e99565b8554920191600090600181811c9080831680611d2257607f831692505b858310811415611d4057634e487b7160e01b85526022600452602485fd5b808015611d545760018114611d6557611d92565b60ff19851688528388019550611d92565b60008b81526020902060005b85811015611d8a5781548a820152908401908801611d71565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611dd690830184611cb3565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611e1857835183529284019291840191600101611dfc565b50909695505050505050565b6020815260006112206020830184611cb3565b60008219821115611e4a57611e4a611f2f565b500190565b600082611e5e57611e5e611f45565b500490565b6000816000190483118215151615611e7d57611e7d611f2f565b500290565b600082821015611e9457611e94611f2f565b500390565b60005b83811015611eb4578181015183820152602001611e9c565b838111156110b25750506000910152565b600181811c90821680611ed957607f821691505b60208210811415611efa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611f1457611f14611f2f565b5060010190565b600082611f2a57611f2a611f45565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461148b57600080fdfea26469706673582212200958c4913fe8e0b14f524f115689f270c627607c3a57ab06617ab9260059de9f64736f6c63430008070033