60806040526101006010556013805460ff191660011790553480156200002457600080fd5b50604051620037ce380380620037ce8339810160408190526200004791620003a9565b604080518082018252601b81527f4d6f6f6e436174506f702056656e64696e67204d616368696e657300000000006020808301918252835180850190945260058452644d4350564d60d81b908401528151919291620000a9916000916200029b565b508051620000bf9060019060208401906200029b565b505050620000dc620000d66200019360201b60201c565b62000197565b600a805460ff60a01b19169055620000f8600c8260026200032a565b5062000103620001e9565b604051630f41a04d60e11b815233600482015273084b1c3c81545d370f3634392de611caabff814890631e83409a90602401602060405180830381600087803b1580156200015057600080fd5b505af115801562000165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018b919062000445565b50506200049c565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001fd600a54600160a01b900460ff1690565b15620002425760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640160405180910390fd5b600a805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200027e3390565b6040516001600160a01b03909116815260200160405180910390a1565b828054620002a9906200045f565b90600052602060002090601f016020900481019282620002cd576000855562000318565b82601f10620002e857805160ff191683800117855562000318565b8280016001018555821562000318579182015b8281111562000318578251825591602001919060010190620002fb565b506200032692915062000375565b5090565b826002810192821562000318579160200282015b828111156200031857825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200033e565b5b8082111562000326576000815560010162000376565b80516001600160a01b0381168114620003a457600080fd5b919050565b600060408284031215620003bc57600080fd5b82601f830112620003cc57600080fd5b604080519081016001600160401b0381118282101715620003fd57634e487b7160e01b600052604160045260246000fd5b80604052508060408401858111156200041557600080fd5b845b818110156200043a576200042b816200038c565b83526020928301920162000417565b509195945050505050565b6000602082840312156200045857600080fd5b5051919050565b600181811c908216806200047457607f821691505b602082108114156200049657634e487b7160e01b600052602260045260246000fd5b50919050565b61332280620004ac6000396000f3fe6080604052600436106102295760003560e01c80636c0360eb11610123578063b88d4fde116100ab578063ef70aebf1161006f578063ef70aebf1461069f578063efeb5e58146106b4578063f2fde38b146106d4578063f4473e71146106f4578063f803bf4a1461071457600080fd5b8063b88d4fde146105c9578063c7b1756a146105e9578063c87b56dd14610609578063e3c6add314610629578063e985e9c51461065657600080fd5b80638da5cb5b116100f25780638da5cb5b14610533578063900fadc41461055157806395d89b411461057f578063a22cb46514610594578063ad2e22e2146105b457600080fd5b80636c0360eb146104c95780636fd1f270146104de57806370a08231146104fe578063715018a61461051e57600080fd5b80632f745c59116101b157806355f75eee1161017557806355f75eee1461043457806355f804b31461044a5780635c4719951461046a5780635c975abb1461048a5780636352211e146104a957600080fd5b80632f745c591461039f5780633ccfd60b146103bf57806342842e0e146103d4578063481ff53e146103f45780634f6ccce71461041457600080fd5b80630ce06b68116101f85780630ce06b68146102ec57806316705a711461030c57806318160ddd1461034057806323b872dd1461035f5780632aa909d31461037f57600080fd5b806301ffc9a71461023d57806306fdde0314610272578063081812fc14610294578063095ea7b3146102cc57600080fd5b3661023857610236610729565b005b600080fd5b34801561024957600080fd5b5061025d6102583660046126c0565b610811565b60405190151581526020015b60405180910390f35b34801561027e57600080fd5b5061028761083c565b604051610269919061273c565b3480156102a057600080fd5b506102b46102af36600461274f565b6108ce565b6040516001600160a01b039091168152602001610269565b3480156102d857600080fd5b506102366102e736600461277d565b610963565b3480156102f857600080fd5b5061023661030736600461277d565b610a79565b34801561031857600080fd5b5061032c61032736600461274f565b610b30565b6040516102699897969594939291906127a9565b34801561034c57600080fd5b506008545b604051908152602001610269565b34801561036b57600080fd5b5061023661037a366004612809565b610c31565b34801561038b57600080fd5b5061035161039a36600461274f565b610c62565b3480156103ab57600080fd5b506103516103ba36600461277d565b610cc5565b3480156103cb57600080fd5b50610236610d5b565b3480156103e057600080fd5b506102366103ef366004612809565b610d65565b34801561040057600080fd5b5061025d61040f36600461274f565b610d80565b34801561042057600080fd5b5061035161042f36600461274f565b610d9f565b34801561044057600080fd5b5061035160105481565b34801561045657600080fd5b506102366104653660046128d6565b610e32565b34801561047657600080fd5b5061023661048536600461291f565b610eaa565b34801561049657600080fd5b50600a54600160a01b900460ff1661025d565b3480156104b557600080fd5b506102b46104c436600461274f565b610feb565b3480156104d557600080fd5b50610287611062565b3480156104ea57600080fd5b506102366104f936600461277d565b6110f0565b34801561050a57600080fd5b5061035161051936600461291f565b611188565b34801561052a57600080fd5b5061023661120f565b34801561053f57600080fd5b50600a546001600160a01b03166102b4565b34801561055d57600080fd5b5061057161056c36600461274f565b611243565b60405161026992919061299d565b34801561058b57600080fd5b50610287611452565b3480156105a057600080fd5b506102366105af366004612a5b565b611461565b3480156105c057600080fd5b50610236611526565b3480156105d557600080fd5b506102366105e4366004612a94565b611558565b3480156105f557600080fd5b50610236610604366004612b14565b611590565b34801561061557600080fd5b5061028761062436600461274f565b6115fe565b34801561063557600080fd5b5061035161064436600461274f565b600f6020526000908152604090205481565b34801561066257600080fd5b5061025d610671366004612b89565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156106ab57600080fd5b506102366116d9565b3480156106c057600080fd5b506102b46106cf36600461274f565b61170b565b3480156106e057600080fd5b506102366106ef36600461291f565b61172b565b34801561070057600080fd5b5061023661070f366004612bb7565b6117c6565b34801561072057600080fd5b50610236611a8b565b60135460ff1661076c5760405162461bcd60e51b81526020600482015260096024820152681499595b9d1c985b9d60ba1b60448201526064015b60405180910390fd5b6013805460ff19169055600c546001600160a01b03166108fc6064610792476032612c1e565b61079c9190612c53565b6040518115909202916000818181858888f193505050501580156107c4573d6000803e3d6000fd5b50600c600101546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610801573d6000803e3d6000fd5b506013805460ff19166001179055565b60006001600160e01b0319821663780e9d6360e01b1480610836575061083682611abd565b92915050565b60606000805461084b90612c67565b80601f016020809104026020016040519081016040528092919081815260200182805461087790612c67565b80156108c45780601f10610899576101008083540402835291602001916108c4565b820191906000526020600020905b8154815290600101906020018083116108a757829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166109475760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610763565b506000908152600460205260409020546001600160a01b031690565b600061096e82610feb565b9050806001600160a01b0316836001600160a01b031614156109dc5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610763565b336001600160a01b03821614806109f857506109f88133610671565b610a6a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610763565b610a748383611b0d565b505050565b600a546001600160a01b03163314610aa35760405162461bcd60e51b815260040161076390612ca2565b816001600160a01b03166342842e0e30610ac5600a546001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260448101849052606401600060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050505050565b60118181548110610b4057600080fd5b60009182526020909120600290910201805460018201805461ffff8316945060ff62010000840481169463010000008504821694640100000000810483169465010000000000820484169466010000000000008304851694600160381b9093049092169291610bae90612c67565b80601f0160208091040260200160405190810160405280929190818152602001828054610bda90612c67565b8015610c275780601f10610bfc57610100808354040283529160200191610c27565b820191906000526020600020905b815481529060010190602001808311610c0a57829003601f168201915b5050505050905088565b610c3b3382611b7b565b610c575760405162461bcd60e51b815260040161076390612cd7565b610a74838383611c72565b6000818152600e6020526040812054610caa5760405162461bcd60e51b815260206004820152600a6024820152694e6f204d616368696e6560b01b6044820152606401610763565b6000828152600e602052604090205461083690600a90612d28565b6000610cd083611188565b8210610d325760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610763565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610d63610729565b565b610a7483838360405180602001604052806000815250611558565b6000818152600260205260408120546001600160a01b03161515610836565b6000610daa60085490565b8210610e0d5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610763565b60088281548110610e2057610e20612bf2565b90600052602060002001549050919050565b600a546001600160a01b03163314610e5c5760405162461bcd60e51b815260040161076390612ca2565b8051610e6f90600b906020840190612611565b507ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f681604051610e9f919061273c565b60405180910390a150565b600a546001600160a01b03163314610ed45760405162461bcd60e51b815260040161076390612ca2565b806001600160a01b03811663a9059cbb610ef6600a546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b158015610f3557600080fd5b505afa158015610f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6d9190612d3f565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b158015610fb357600080fd5b505af1158015610fc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190612d58565b6000818152600260205260408120546001600160a01b0316806108365760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610763565b600b805461106f90612c67565b80601f016020809104026020016040519081016040528092919081815260200182805461109b90612c67565b80156110e85780601f106110bd576101008083540402835291602001916110e8565b820191906000526020600020905b8154815290600101906020018083116110cb57829003601f168201915b505050505081565b600c816002811061110357611103612bf2565b01546001600160a01b0316336001600160a01b0316146111515760405162461bcd60e51b81526020600482015260096024820152682337b93134b23232b760b91b6044820152606401610763565b81600c826002811061116557611165612bf2565b0180546001600160a01b0319166001600160a01b03929092169190911790555050565b60006001600160a01b0382166111f35760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610763565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146112395760405162461bcd60e51b815260040161076390612ca2565b610d636000611e1d565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c082019290925260e081019190915260606011838154811061129b5761129b612bf2565b60009182526020808320868452601282526040938490208451610100810186526002909402909101805461ffff8116855260ff620100008204811694860194909452630100000081048416958501959095526401000000008504831660608501526501000000000085048316608085015266010000000000008504831660a0850152600160381b90940490911660c0830152600183018054919291849160e084019161134690612c67565b80601f016020809104026020016040519081016040528092919081815260200182805461137290612c67565b80156113bf5780601f10611394576101008083540402835291602001916113bf565b820191906000526020600020905b8154815290600101906020018083116113a257829003601f168201915b505050505081525050915080805480602002602001604051908101604052809291908181526020016000905b8282101561144357600084815260209081902060408051606081018252918501546001600160e81b0381168352600160e81b810460ff1683850152600160f01b900461ffff16908201528252600190920191016113eb565b50505050905091509150915091565b60606001805461084b90612c67565b6001600160a01b0382163314156114ba5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610763565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600a546001600160a01b031633146115505760405162461bcd60e51b815260040161076390612ca2565b610d63611e6f565b6115623383611b7b565b61157e5760405162461bcd60e51b815260040161076390612cd7565b61158a84848484611f0c565b50505050565b600a546001600160a01b031633146115ba5760405162461bcd60e51b815260040161076390612ca2565b60005b81811015610a74576115ec8383838181106115da576115da612bf2565b905060200281019061070f9190612d75565b806115f681612d95565b9150506115bd565b6000818152600260205260409020546060906001600160a01b031661167d5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610763565b6000600b805461168c90612c67565b9050116116a85760405180602001604052806000815250610836565b600b6116b383611f3f565b6040516020016116c4929190612db0565b60405160208183030381529060405292915050565b600a546001600160a01b031633146117035760405162461bcd60e51b815260040161076390612ca2565b600854601055565b600c816002811061171b57600080fd5b01546001600160a01b0316905081565b600a546001600160a01b031633146117555760405162461bcd60e51b815260040161076390612ca2565b6001600160a01b0381166117ba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610763565b6117c381611e1d565b50565b600a546001600160a01b031633146117f05760405162461bcd60e51b815260040161076390612ca2565b601054600854106118435760405162461bcd60e51b815260206004820152601e60248201527f56656e64696e67204d616368696e65206c696d697420657863656564656400006044820152606401610763565b600e60006118518380612e43565b61185f906020810190612e69565b61ffff168152602001908152602001600020546000146118b55760405162461bcd60e51b8152602060048201526011602482015270111d5c1b1a58d85d1948135bdbdb90d85d607a1b6044820152606401610763565b60006118c060085490565b9050600073c3f733ca98e0dad0386979eb96fb1722a1a05e69636352211e6118e88580612e43565b6118f6906020810190612e69565b6040516001600160e01b031960e084901b16815261ffff909116600482015260240160206040518083038186803b15801561193057600080fd5b505afa158015611944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119689190612e86565b9050611974818361203d565b60005b6119846040850185612ea3565b90508110156119fb5760008381526012602052604090819020906119aa90860186612ea3565b838181106119ba576119ba612bf2565b835460018101855560009485526020909420606090910292909201929190910190506119e68282612f06565b505080806119f390612d95565b915050611977565b506011611a088480612e43565b815460018101835560009283526020909220909160020201611a2a82826130c2565b50611a3b90506020840135436131fe565b6000838152600f6020526040902055611a5582600a6131fe565b600e6000611a638680612e43565b611a71906020810190612e69565b61ffff168152602081019190915260400160002055505050565b600a546001600160a01b03163314611ab55760405162461bcd60e51b815260040161076390612ca2565b610d6361205b565b60006001600160e01b031982166380ac58cd60e01b1480611aee57506001600160e01b03198216635b5e139f60e01b145b8061083657506301ffc9a760e01b6001600160e01b0319831614610836565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611b4282610feb565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611bf45760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610763565b6000611bff83610feb565b9050806001600160a01b0316846001600160a01b03161480611c3a5750836001600160a01b0316611c2f846108ce565b6001600160a01b0316145b80611c6a57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611c8582610feb565b6001600160a01b031614611ced5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610763565b6001600160a01b038216611d4f5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610763565b611d5a8383836120e3565b611d65600082611b0d565b6001600160a01b0383166000908152600360205260408120805460019290611d8e908490612d28565b90915550506001600160a01b0382166000908152600360205260408120805460019290611dbc9084906131fe565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a54600160a01b900460ff16611ebf5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610763565b600a805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b611f17848484611c72565b611f238484848461213b565b61158a5760405162461bcd60e51b815260040161076390613216565b606081611f635750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f8d5780611f7781612d95565b9150611f869050600a83612c53565b9150611f67565b60008167ffffffffffffffff811115611fa857611fa861284a565b6040519080825280601f01601f191660200182016040528015611fd2576020820181803683370190505b5090505b8415611c6a57611fe7600183612d28565b9150611ff4600a86613268565b611fff9060306131fe565b60f81b81838151811061201457612014612bf2565b60200101906001600160f81b031916908160001a905350612036600a86612c53565b9450611fd6565b612057828260405180602001604052806000815250612248565b5050565b600a54600160a01b900460ff16156120a85760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610763565b600a805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611eef3390565b600a54600160a01b900460ff16156121305760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610763565b610a7483838361227b565b60006001600160a01b0384163b1561223d57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061217f90339089908890889060040161327c565b602060405180830381600087803b15801561219957600080fd5b505af19250505080156121c9575060408051601f3d908101601f191682019092526121c6918101906132b9565b60015b612223573d8080156121f7576040519150601f19603f3d011682016040523d82523d6000602084013e6121fc565b606091505b50805161221b5760405162461bcd60e51b815260040161076390613216565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611c6a565b506001949350505050565b6122528383612333565b61225f600084848461213b565b610a745760405162461bcd60e51b815260040161076390613216565b6001600160a01b0383166122d6576122d181600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6122f9565b816001600160a01b0316836001600160a01b0316146122f9576122f98382612481565b6001600160a01b03821661231057610a748161251e565b826001600160a01b0316826001600160a01b031614610a7457610a7482826125cd565b6001600160a01b0382166123895760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610763565b6000818152600260205260409020546001600160a01b0316156123ee5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610763565b6123fa600083836120e3565b6001600160a01b03821660009081526003602052604081208054600192906124239084906131fe565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161248e84611188565b6124989190612d28565b6000838152600760205260409020549091508082146124eb576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061253090600190612d28565b6000838152600960205260408120546008805493945090928490811061255857612558612bf2565b90600052602060002001549050806008838154811061257957612579612bf2565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806125b1576125b16132d6565b6001900381819060005260206000200160009055905550505050565b60006125d883611188565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b82805461261d90612c67565b90600052602060002090601f01602090048101928261263f5760008555612685565b82601f1061265857805160ff1916838001178555612685565b82800160010185558215612685579182015b8281111561268557825182559160200191906001019061266a565b50612691929150612695565b5090565b5b808211156126915760008155600101612696565b6001600160e01b0319811681146117c357600080fd5b6000602082840312156126d257600080fd5b81356126dd816126aa565b9392505050565b60005b838110156126ff5781810151838201526020016126e7565b8381111561158a5750506000910152565b600081518084526127288160208601602086016126e4565b601f01601f19169290920160200192915050565b6020815260006126dd6020830184612710565b60006020828403121561276157600080fd5b5035919050565b6001600160a01b03811681146117c357600080fd5b6000806040838503121561279057600080fd5b823561279b81612768565b946020939093013593505050565b600061010061ffff8b16835260ff808b166020850152808a1660408501528089166060850152808816608085015280871660a085015280861660c0850152508060e08401526127fa81840185612710565b9b9a5050505050505050505050565b60008060006060848603121561281e57600080fd5b833561282981612768565b9250602084013561283981612768565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561287b5761287b61284a565b604051601f8501601f19908116603f011681019082821181831017156128a3576128a361284a565b816040528093508581528686860111156128bc57600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156128e857600080fd5b813567ffffffffffffffff8111156128ff57600080fd5b8201601f8101841361291057600080fd5b611c6a84823560208401612860565b60006020828403121561293157600080fd5b81356126dd81612768565b600081518084526020808501945080840160005b8381101561299257815180516001600160e81b031688528381015160ff168489015260409081015161ffff169088015260609096019590820190600101612950565b509495945050505050565b6040815261ffff835116604082015260ff6020840151166060820152600060408401516129cf608084018260ff169052565b50606084015160ff811660a084015250608084015160ff811660c08401525060a084015160ff811660e08401525060c0840151610100612a138185018360ff169052565b60e086015191508061012085015250612a30610140840182612710565b90508281036020840152612a44818561293c565b95945050505050565b80151581146117c357600080fd5b60008060408385031215612a6e57600080fd5b8235612a7981612768565b91506020830135612a8981612a4d565b809150509250929050565b60008060008060808587031215612aaa57600080fd5b8435612ab581612768565b93506020850135612ac581612768565b925060408501359150606085013567ffffffffffffffff811115612ae857600080fd5b8501601f81018713612af957600080fd5b612b0887823560208401612860565b91505092959194509250565b60008060208385031215612b2757600080fd5b823567ffffffffffffffff80821115612b3f57600080fd5b818501915085601f830112612b5357600080fd5b813581811115612b6257600080fd5b8660208260051b8501011115612b7757600080fd5b60209290920196919550909350505050565b60008060408385031215612b9c57600080fd5b8235612ba781612768565b91506020830135612a8981612768565b600060208284031215612bc957600080fd5b813567ffffffffffffffff811115612be057600080fd5b8201606081850312156126dd57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615612c3857612c38612c08565b500290565b634e487b7160e01b600052601260045260246000fd5b600082612c6257612c62612c3d565b500490565b600181811c90821680612c7b57607f821691505b60208210811415612c9c57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082821015612d3a57612d3a612c08565b500390565b600060208284031215612d5157600080fd5b5051919050565b600060208284031215612d6a57600080fd5b81516126dd81612a4d565b60008235605e19833603018112612d8b57600080fd5b9190910192915050565b6000600019821415612da957612da9612c08565b5060010190565b6000808454612dbe81612c67565b60018281168015612dd65760018114612de757612e16565b60ff19841687528287019450612e16565b8860005260208060002060005b85811015612e0d5781548a820152908401908201612df4565b50505082870194505b505050508351612e2a8183602088016126e4565b64173539b7b760d91b9101908152600501949350505050565b6000823560fe19833603018112612d8b57600080fd5b61ffff811681146117c357600080fd5b600060208284031215612e7b57600080fd5b81356126dd81612e59565b600060208284031215612e9857600080fd5b81516126dd81612768565b6000808335601e19843603018112612eba57600080fd5b83018035915067ffffffffffffffff821115612ed557600080fd5b6020019150606081023603821315612eec57600080fd5b9250929050565b6000813560ff8116811461083657600080fd5b81356001600160e81b038116808214612f1e57600080fd5b82546001600160e81b0319811682178455915060ff60e81b612f4260208601612ef3565b60e81b1661ffff60f01b81838286161717855560408601359350612f6584612e59565b911760f09290921b1617905550565b6000808335601e19843603018112612f8b57600080fd5b83018035915067ffffffffffffffff821115612fa657600080fd5b602001915036819003821315612eec57600080fd5b601f821115610a7457600081815260208120601f850160051c81016020861015612fe25750805b601f850160051c820191505b81811015610b2857828155600101612fee565b67ffffffffffffffff8311156130195761301961284a565b61302d836130278354612c67565b83612fbb565b6000601f84116001811461306157600085156130495750838201355b600019600387901b1c1916600186901b1783556130bb565b600083815260209020601f19861690835b828110156130925786850135825560209485019460019092019101613072565b50868210156130af5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81356130cd81612e59565b61ffff8116905081548161ffff19821617835562ff00006130f060208601612ef3565b60101b168262ffffff19831617178355505061312b61311160408401612ef3565b825463ff000000191660189190911b63ff00000016178255565b61315661313a60608401612ef3565b825464ff00000000191660209190911b64ff0000000016178255565b61318361316560808401612ef3565b825465ff0000000000191660289190911b65ff000000000016178255565b6131b261319260a08401612ef3565b825466ff000000000000191660309190911b66ff00000000000016178255565b6131e36131c160c08401612ef3565b825467ff00000000000000191660389190911b67ff0000000000000016178255565b6131f060e0830183612f74565b61158a818360018601613001565b6000821982111561321157613211612c08565b500190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261327757613277612c3d565b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906132af90830184612710565b9695505050505050565b6000602082840312156132cb57600080fd5b81516126dd816126aa565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a9680db9dc7f1e91d14b56a6fb46ee26b102af075d5aed06f009e50904ec5f3b64736f6c634300080900330000000000000000000000000d559a63df6016e1dfbfa0b0a8929a3d606f7f90000000000000000000000000d342a4f0397b4268e6adce89b9b88c746afa85ee