60a06040523480156200001157600080fd5b506040516200248e3803806200248e833981016040819052620000349162000118565b6040518060400160405280601581526020017f4e75747344414f20506f6b657220506c61796572730000000000000000000000815250604051806040016040528060078152602001664e75747344414f60c81b81525081600290816200009b9190620001d7565b506003620000aa8282620001d7565b5050600160005550620000bd33620000c6565b608052620002a3565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200012b57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200015d57607f821691505b6020821081036200017e57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001d257600081815260208120601f850160051c81016020861015620001ad5750805b601f850160051c820191505b81811015620001ce57828155600101620001b9565b5050505b505050565b81516001600160401b03811115620001f357620001f362000132565b6200020b8162000204845462000148565b8462000184565b602080601f8311600181146200024357600084156200022a5750858301515b600019600386901b1c1916600185901b178555620001ce565b600085815260208120601f198616915b82811015620002745788860151825594840194600190910190840162000253565b5085821015620002935787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516121c1620002cd6000396000818161055201528181610ad60152610b4501526121c16000f3fe6080604052600436106101d85760003560e01c80638da5cb5b11610102578063bb0fd14711610095578063d5abeb0111610064578063d5abeb0114610540578063d7e45cd714610574578063e985e9c51461058e578063f2fde38b146105ae57600080fd5b8063bb0fd147146104cb578063bcdb446b146104eb578063c21b471b14610500578063c87b56dd1461052057600080fd5b80639be65a60116100d15780639be65a601461043f578063a22cb4651461045f578063aa271e1a1461047f578063b88d4fde146104b857600080fd5b80638da5cb5b146103d757806395d89b41146103f5578063983b2d561461040a578063989bdbb61461042a57600080fd5b80633092afd51161017a5780636352211e116101495780636352211e1461036d5780636c0360eb1461038d57806370a08231146103a2578063715018a6146103c257600080fd5b80633092afd5146102fa57806340c10f191461031a57806342842e0e1461033a57806355f804b31461034d57600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806318160ddd1461028157806323b872dd146102a85780632a55205a146102bb57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004611b74565b6105ce565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b506102276105ee565b6040516102099190611be1565b34801561024057600080fd5b5061025461024f366004611bf4565b610680565b6040516001600160a01b039091168152602001610209565b61027f61027a366004611c29565b6106c4565b005b34801561028d57600080fd5b5060015460005403600019015b604051908152602001610209565b61027f6102b6366004611c53565b610764565b3480156102c757600080fd5b506102db6102d6366004611c8f565b6108fd565b604080516001600160a01b039093168352602083019190915201610209565b34801561030657600080fd5b5061027f610315366004611cb1565b6109a9565b34801561032657600080fd5b5061027f610335366004611c29565b610a5e565b61027f610348366004611c53565b610c58565b34801561035957600080fd5b5061027f610368366004611d58565b610c78565b34801561037957600080fd5b50610254610388366004611bf4565b610cde565b34801561039957600080fd5b50610227610ce9565b3480156103ae57600080fd5b5061029a6103bd366004611cb1565b610d77565b3480156103ce57600080fd5b5061027f610dc6565b3480156103e357600080fd5b50600a546001600160a01b0316610254565b34801561040157600080fd5b50610227610dda565b34801561041657600080fd5b5061027f610425366004611cb1565b610de9565b34801561043657600080fd5b5061027f610ea6565b34801561044b57600080fd5b5061027f61045a366004611cb1565b610f89565b34801561046b57600080fd5b5061027f61047a366004611daf565b6110b9565b34801561048b57600080fd5b506101fd61049a366004611cb1565b6001600160a01b03166000908152600b602052604090205460ff1690565b61027f6104c6366004611de6565b611125565b3480156104d757600080fd5b5061027f6104e6366004611c29565b611169565b3480156104f757600080fd5b5061027f611212565b34801561050c57600080fd5b5061027f61051b366004611e62565b611280565b34801561052c57600080fd5b5061022761053b366004611bf4565b6112ee565b34801561054c57600080fd5b5061029a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561058057600080fd5b50600c546101fd9060ff1681565b34801561059a57600080fd5b506101fd6105a9366004611e9a565b611372565b3480156105ba57600080fd5b5061027f6105c9366004611cb1565b6113a0565b60006105d982611419565b806105e857506105e882611467565b92915050565b6060600280546105fd90611ecd565b80601f016020809104026020016040519081016040528092919081815260200182805461062990611ecd565b80156106765780601f1061064b57610100808354040283529160200191610676565b820191906000526020600020905b81548152906001019060200180831161065957829003601f168201915b5050505050905090565b600061068b8261149c565b6106a8576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006106cf82610cde565b9050336001600160a01b03821614610708576106eb8133611372565b610708576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061076f826114d1565b9050836001600160a01b0316816001600160a01b0316146107a25760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b038816909114176107ef576107d28633611372565b6107ef57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661081657604051633a954ecd60e21b815260040160405180910390fd5b801561082157600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b841690036108b3576001840160008181526004602052604081205490036108b15760005481146108b15760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45b505050505050565b60008281526009602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916109725750604080518082019091526008546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610991906001600160601b031687611f1d565b61099b9190611f4a565b915196919550909350505050565b6109b1611540565b6001600160a01b0381166000908152600b602052604090205460ff16610a155760405162461bcd60e51b815260206004820152601460248201527326b4b73a30b136329d102737ba1036b4b73a32b960611b60448201526064015b60405180910390fd5b6001600160a01b0381166000818152600b6020526040808220805460ff19169055517fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb666929190a250565b336000908152600b602052604090205460ff16610abd5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7461626c653a2043616c6c6572206973206e6f74206d696e74657200006044820152606401610a0c565b6000610ad26001546000546000199190030190565b90507f00000000000000000000000000000000000000000000000000000000000000008110610b435760405162461bcd60e51b815260206004820152601960248201527f4e46543a20546f74616c20737570706c792072656163686564000000000000006044820152606401610a0c565b7f0000000000000000000000000000000000000000000000000000000000000000610b6e8383611f5e565b1115610bbc5760405162461bcd60e51b815260206004820152601a60248201527f4e46543a205175616e746974792061626f766520737570706c790000000000006044820152606401610a0c565b60008211610c045760405162461bcd60e51b81526020600482015260156024820152744e46543a20496e76616c6964207175616e7469747960581b6044820152606401610a0c565b60005b82811015610c52576000610c1c826014611f5e565b8411610c3157610c2c8285611f71565b610c34565b60145b9050610c40858261159a565b610c4a8183611f5e565b915050610c07565b50505050565b610c7383838360405180602001604052806000815250611125565b505050565b610c80611540565b600c5460ff1615610cce5760405162461bcd60e51b81526020600482015260186024820152771391950e8813595d1859185d1848185c99481b1bd8dad95960421b6044820152606401610a0c565b600d610cda8282611fca565b5050565b60006105e8826114d1565b600d8054610cf690611ecd565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2290611ecd565b8015610d6f5780601f10610d4457610100808354040283529160200191610d6f565b820191906000526020600020905b815481529060010190602001808311610d5257829003601f168201915b505050505081565b60006001600160a01b038216610da0576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b610dce611540565b610dd86000611698565b565b6060600380546105fd90611ecd565b610df1611540565b6001600160a01b0381166000908152600b602052604090205460ff1615610e5a5760405162461bcd60e51b815260206004820152601860248201527f4d696e7461626c653a20416c7265616479206d696e74657200000000000000006044820152606401610a0c565b6001600160a01b0381166000818152600b6020526040808220805460ff19166001179055517f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f69190a250565b610eae611540565b600c5460ff1615610efc5760405162461bcd60e51b81526020600482015260186024820152771391950e8813595d1859185d1848185c99481b1bd8dad95960421b6044820152606401610a0c565b6000600d8054610f0b90611ecd565b905011610f515760405162461bcd60e51b81526020600482015260146024820152731391950e8810985cd9555c9a481b9bdd081cd95d60621b6044820152606401610a0c565b600c805460ff191660011790556040517f95a231e0e633252fd44273c53079a71e951df22e856f058d0114c54c6430e81c90600090a1565b610f91611540565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610fd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffc919061208a565b90508060000361105e5760405162461bcd60e51b815260206004820152602760248201527f4f7065726174696f6e733a2043616e6e6f74207265636f766572207a65726f2060448201526662616c616e636560c81b6064820152608401610a0c565b6110726001600160a01b03831633836116ea565b816001600160a01b03167f14f11966a996e0629572e51064726d2057a80fbd34efc066682c06a71dbb6e98826040516110ad91815260200190565b60405180910390a25050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b611130848484610764565b6001600160a01b0383163b15610c525761114c8484848461173c565b610c52576040516368d2bf6b60e11b815260040160405180910390fd5b611171611540565b6040516323b872dd60e01b8152306004820152336024820152604481018290526001600160a01b038316906323b872dd90606401600060405180830381600087803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b50505050816001600160a01b03167f861c3ea25dbda3af0bf5d258ba8582c0276c9446b1479e817be3f1b4a89acf91826040516110ad91815260200190565b61121a611540565b6040514790339082156108fc029083906000818181858888f19350505050158015611249573d6000803e3d6000fd5b506040518181527f5c0a34c718716ee467140afbc9fb741fc2980e41d00f04a8f7f635d76484ff479060200160405180910390a150565b611288611540565b611295600a6127106120a3565b6001600160601b0316816001600160601b031611156112e45760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642066656560a81b6044820152606401610a0c565b610cda8282611828565b60606112f98261149c565b61131657604051630a14c4b560e41b815260040160405180910390fd5b6000611320611925565b90508051600003611340576040518060200160405280600081525061136b565b8061134a84611934565b60405160200161135b9291906120c9565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6113a8611540565b6001600160a01b03811661140d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a0c565b61141681611698565b50565b60006301ffc9a760e01b6001600160e01b03198316148061144a57506380ac58cd60e01b6001600160e01b03198316145b806105e85750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b14806105e857506301ffc9a760e01b6001600160e01b03198316146105e8565b6000816001111580156114b0575060005482105b80156105e8575050600090815260046020526040902054600160e01b161590565b60008180600111611527576000548110156115275760008181526004602052604081205490600160e01b82169003611525575b8060000361136b575060001901600081815260046020526040902054611504565b505b604051636f96cda160e11b815260040160405180910390fd5b600a546001600160a01b03163314610dd85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a0c565b60008054908290036115bf5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461166e57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101611636565b508160000361168f57604051622e076360e81b815260040160405180910390fd5b60005550505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c73908490611978565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906117719033908990889088906004016120f8565b6020604051808303816000875af19250505080156117ac575060408051601f3d908101601f191682019092526117a991810190612135565b60015b61180a573d8080156117da576040519150601f19603f3d011682016040523d82523d6000602084013e6117df565b606091505b508051600003611802576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6127106001600160601b03821611156118965760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610a0c565b6001600160a01b0382166118ec5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610a0c565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600855565b6060600d80546105fd90611ecd565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061194e5750819003601f19909101908152919050565b60006119cd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611a4a9092919063ffffffff16565b805190915015610c7357808060200190518101906119eb9190612152565b610c735760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610a0c565b60606118208484600085856001600160a01b0385163b611aac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a0c565b600080866001600160a01b03168587604051611ac8919061216f565b60006040518083038185875af1925050503d8060008114611b05576040519150601f19603f3d011682016040523d82523d6000602084013e611b0a565b606091505b5091509150611b1a828286611b25565b979650505050505050565b60608315611b3457508161136b565b825115611b445782518084602001fd5b8160405162461bcd60e51b8152600401610a0c9190611be1565b6001600160e01b03198116811461141657600080fd5b600060208284031215611b8657600080fd5b813561136b81611b5e565b60005b83811015611bac578181015183820152602001611b94565b50506000910152565b60008151808452611bcd816020860160208601611b91565b601f01601f19169290920160200192915050565b60208152600061136b6020830184611bb5565b600060208284031215611c0657600080fd5b5035919050565b80356001600160a01b0381168114611c2457600080fd5b919050565b60008060408385031215611c3c57600080fd5b611c4583611c0d565b946020939093013593505050565b600080600060608486031215611c6857600080fd5b611c7184611c0d565b9250611c7f60208501611c0d565b9150604084013590509250925092565b60008060408385031215611ca257600080fd5b50508035926020909101359150565b600060208284031215611cc357600080fd5b61136b82611c0d565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611cfd57611cfd611ccc565b604051601f8501601f19908116603f01168101908282118183101715611d2557611d25611ccc565b81604052809350858152868686011115611d3e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611d6a57600080fd5b813567ffffffffffffffff811115611d8157600080fd5b8201601f81018413611d9257600080fd5b61182084823560208401611ce2565b801515811461141657600080fd5b60008060408385031215611dc257600080fd5b611dcb83611c0d565b91506020830135611ddb81611da1565b809150509250929050565b60008060008060808587031215611dfc57600080fd5b611e0585611c0d565b9350611e1360208601611c0d565b925060408501359150606085013567ffffffffffffffff811115611e3657600080fd5b8501601f81018713611e4757600080fd5b611e5687823560208401611ce2565b91505092959194509250565b60008060408385031215611e7557600080fd5b611e7e83611c0d565b915060208301356001600160601b0381168114611ddb57600080fd5b60008060408385031215611ead57600080fd5b611eb683611c0d565b9150611ec460208401611c0d565b90509250929050565b600181811c90821680611ee157607f821691505b602082108103611f0157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105e8576105e8611f07565b634e487b7160e01b600052601260045260246000fd5b600082611f5957611f59611f34565b500490565b808201808211156105e8576105e8611f07565b818103818111156105e8576105e8611f07565b601f821115610c7357600081815260208120601f850160051c81016020861015611fab5750805b601f850160051c820191505b818110156108f557828155600101611fb7565b815167ffffffffffffffff811115611fe457611fe4611ccc565b611ff881611ff28454611ecd565b84611f84565b602080601f83116001811461202d57600084156120155750858301515b600019600386901b1c1916600185901b1785556108f5565b600085815260208120601f198616915b8281101561205c5788860151825594840194600190910190840161203d565b508582101561207a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561209c57600080fd5b5051919050565b60006001600160601b03808416806120bd576120bd611f34565b92169190910492915050565b600083516120db818460208801611b91565b8351908301906120ef818360208801611b91565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061212b90830184611bb5565b9695505050505050565b60006020828403121561214757600080fd5b815161136b81611b5e565b60006020828403121561216457600080fd5b815161136b81611da1565b60008251612181818460208701611b91565b919091019291505056fea26469706673582212208a578bf51f70e39ab25f6e3fa71b2683b4d9d3e241528230226aecd02b9f4a1e64736f6c634300081100330000000000000000000000000000000000000000000000000000000000002710