0x66354a6ba7a18000600c556014600d819055601e600e55600f819055600a6010556011556012805463ffffffff1916636356aec417905560c060405260096080819052682e657468657265756d60b81b60a0908152620000639160139190620005a1565b5060405180606001604052806021815260200162004e996021913980516200009491601491602090910190620005a1565b506015805460ff19166001179055604080518082018252601681527f2e657468657265756d204e616d652053657276696365000000000000000000006020808301918252835180850190945260098452682e657468657265756d60b81b9084015281519192916200010891600491620005a1565b5080516200011e906005906020840190620005a1565b50506001600055506200013133620001b4565b6001600b55604080518082019091526008815267657468657265756d60c01b6020820152620001609062000206565b604080518082019091526003815262656e7360e81b6020820152620001859062000206565b604080518082019091526007815266766974616c696b60c81b6020820152620001ae9062000206565b620007fe565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054815260016020908152604090912082516200022892840190620005a1565b506000546002826040516200023e91906200067a565b908152602001604051809103902081905550336017826040516200026391906200067a565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b03199092169190911790556200029f336001620002a2565b50565b620002c4828260405180602001604052806000815250620002c860201b60201c565b5050565b620002d483836200033f565b6001600160a01b0383163b156200033a576000548281035b6001810190620003029060009087908662000427565b62000320576040516368d2bf6b60e11b815260040160405180910390fd5b818110620002ec5781600054146200033757600080fd5b50505b505050565b60005481620003615760405163b562e8dd60e01b815260040160405180910390fd5b62000370600084838562000528565b6001600160a01b03831660008181526007602090815260408083208054680100000000000000018802019055848352600690915281206001851460e11b4260a01b1783179055828401908390839060008051602062004eba8339815191528180a4600183015b818114620003ff578083600060008051602062004eba833981519152600080a4600101620003d6565b50816200041e57604051622e076360e81b815260040160405180910390fd5b60005550505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906200045e9033908990889088906004016200073c565b602060405180830381600087803b1580156200047957600080fd5b505af1925050508015620004ac575060408051601f3d908101601f19168201909252620004a99181019062000647565b60015b6200050b573d808015620004dd576040519150601f19603f3d011682016040523d82523d6000602084013e620004e2565b606091505b50805162000503576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b62000541848484846200059b60201b620021a91760201c565b8260176001600085815260200190815260200160002060405162000566919062000698565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b031990921691909117905550505050565b50505050565b828054620005af90620007c1565b90600052602060002090601f016020900481019282620005d357600085556200061e565b82601f10620005ee57805160ff19168380011785556200061e565b828001600101855582156200061e579182015b828111156200061e57825182559160200191906001019062000601565b506200062c92915062000630565b5090565b5b808211156200062c576000815560010162000631565b6000602082840312156200065a57600080fd5b81516001600160e01b0319811681146200067357600080fd5b9392505050565b600082516200068e81846020870162000792565b9190910192915050565b600080835481600182811c915080831680620006b557607f831692505b6020808410821415620006d657634e487b7160e01b86526022600452602486fd5b818015620006ed5760018114620006ff576200072e565b60ff198616895284890196506200072e565b60008a81526020902060005b86811015620007265781548b8201529085019083016200070b565b505084890196505b509498975050505050505050565b600060018060a01b0380871683528086166020840152508360408301526080606083015282518060808401526200077b8160a085016020870162000792565b601f01601f19169190910160a00195945050505050565b60005b83811015620007af57818101518382015260200162000795565b838111156200059b5750506000910152565b600181811c90821680620007d657607f821691505b60208210811415620007f857634e487b7160e01b600052602260045260246000fd5b50919050565b61468b806200080e6000396000f3fe6080604052600436106103a25760003560e01c80638699e738116101e7578063b88d4fde1161010d578063e74a37f8116100a0578063f2fde38b1161006f578063f2fde38b14610b3f578063f3052d2614610b5f578063f54d368914610b7f578063f990f91a14610b9f57600080fd5b8063e74a37f814610a89578063e985e9c514610aa9578063ef8633ef14610aff578063f17b392714610b1f57600080fd5b8063d6bc2c7f116100dc578063d6bc2c7f146109f1578063d7d6c48514610a29578063e2bc750814610a49578063e42fa3f314610a6957600080fd5b8063b88d4fde1461097e578063c6fbf9a914610991578063c87b56dd146109b1578063c9e9c7eb146109d157600080fd5b806395d89b4111610185578063ad45a3ed11610154578063ad45a3ed146108dd578063afd800c5146108f0578063b6c6e69214610910578063b816aa8a1461095e57600080fd5b806395d89b41146108725780639b2ea4bd146108875780639ca34569146108a7578063a22cb465146108bd57600080fd5b80638da5cb5b116101c15780638da5cb5b146107d75780638e96de271461080257806390ad4bdf1461082257806391b7f5ed1461085257600080fd5b80638699e7381461078b5780638b8dd5fd146107ab5780638d859f3e146107c157600080fd5b80632eb4a7ab116102cc578063698c62c51161026a57806376d02b711161023957806376d02b71146106f65780637a921a1a146107105780637cb64759146107305780637d8f4ca31461075057600080fd5b8063698c62c5146106815780636e32e499146106a157806370a08231146106c1578063715018a6146106e157600080fd5b806342842e0e116102a657806342842e0e1461060e57806355f804b3146106215780635acf6139146106415780636352211e1461066157600080fd5b80632eb4a7ab146105b65780632f7758cd146105cc5780633ccfd60b146105f957600080fd5b8063095ea7b3116103445780631e59c529116103135780631e59c5291461055057806323b872dd1461056357806327b972f9146105765780632accb37c1461059657600080fd5b8063095ea7b3146104b45780630d6eec78146104c757806311d07f78146104ff57806318160ddd1461051557600080fd5b8063066034fc11610380578063066034fc1461041357806306fdde0314610437578063081812fc1461045957806308d841391461049e57600080fd5b806301595266146103a757806301ffc9a7146103c9578063049c5c49146103fe575b600080fd5b3480156103b357600080fd5b506103c76103c2366004613ff6565b610bbf565b005b3480156103d557600080fd5b506103e96103e4366004613b42565b610bfe565b60405190151581526020015b60405180910390f35b34801561040a57600080fd5b506103c7610ce3565b34801561041f57600080fd5b50610429600d5481565b6040519081526020016103f5565b34801561044357600080fd5b5061044c610d1d565b6040516103f591906142fe565b34801561046557600080fd5b50610479610474366004613b29565b610daf565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103f5565b3480156104aa57600080fd5b5061042960105481565b6103c76104c2366004613a62565b610e19565b3480156104d357600080fd5b506104296104e2366004613dc0565b805160208183018101805160028252928201919093012091525481565b34801561050b57600080fd5b50610429600f5481565b34801561052157600080fd5b50600354600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610429565b6103c761055e366004613df5565b610f04565b6103c7610571366004613980565b611105565b34801561058257600080fd5b50610479610591366004613dc0565b611397565b3480156105a257600080fd5b506103c76105b1366004613d74565b6113cb565b3480156105c257600080fd5b50610429601d5481565b3480156105d857600080fd5b506105ec6105e7366004613b29565b6114a7565b6040516103f5919061427e565b34801561060557600080fd5b506103c76115c4565b6103c761061c366004613980565b6116f7565b34801561062d57600080fd5b506103c761063c366004613dc0565b611717565b34801561064d57600080fd5b506103c761065c366004613b29565b611736565b34801561066d57600080fd5b5061047961067c366004613b29565b611743565b34801561068d57600080fd5b506103c761069c366004613d18565b61174e565b3480156106ad57600080fd5b5061044c6106bc366004613b29565b61186b565b3480156106cd57600080fd5b506104296106dc366004613932565b611905565b3480156106ed57600080fd5b506103c7611987565b34801561070257600080fd5b506015546103e99060ff1681565b34801561071c57600080fd5b506103e961072b366004613dc0565b61199b565b34801561073c57600080fd5b506103c761074b366004613b29565b611bd8565b34801561075c57600080fd5b506103e961076b366004613dc0565b805160208183018101805160198252928201919093012091525460ff1681565b34801561079757600080fd5b5061044c6107a6366004613932565b611be5565b3480156107b757600080fd5b50610429601e5481565b3480156107cd57600080fd5b50610429600c5481565b3480156107e357600080fd5b50600a5473ffffffffffffffffffffffffffffffffffffffff16610479565b34801561080e57600080fd5b5061044c61081d366004613eff565b611bfe565b34801561082e57600080fd5b506103e961083d366004613932565b601c6020526000908152604090205460ff1681565b34801561085e57600080fd5b506103c761086d366004613b29565b611c3f565b34801561087e57600080fd5b5061044c611c4c565b34801561089357600080fd5b506103c76108a2366004613bbe565b611c5b565b3480156108b357600080fd5b50610429600e5481565b3480156108c957600080fd5b506103c76108d8366004613a38565b611ed7565b6103c76108eb366004613eff565b611f6e565b3480156108fc57600080fd5b506103c761090b366004613fc4565b6121af565b34801561091c57600080fd5b5061047961092b366004613dc0565b805160208183018101805160178252928201919093012091525473ffffffffffffffffffffffffffffffffffffffff1681565b34801561096a57600080fd5b5061044c610979366004613fa2565b6121cb565b6103c761098c3660046139bc565b612203565b34801561099d57600080fd5b506103c76109ac366004613b7c565b61226d565b3480156109bd57600080fd5b5061044c6109cc366004613b29565b61230d565b3480156109dd57600080fd5b506103e96109ec366004613dc0565b6123ec565b3480156109fd57600080fd5b50610429610a0c366004613dc0565b8051602081830181018051601a8252928201919093012091525481565b348015610a3557600080fd5b506103c7610a44366004613f63565b612420565b348015610a5557600080fd5b5061044c610a64366004613ea3565b61246a565b348015610a7557600080fd5b506103c7610a84366004613e3a565b61253a565b348015610a9557600080fd5b506103c7610aa4366004613a8c565b612712565b348015610ab557600080fd5b506103e9610ac436600461394d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260096020908152604080832093909416825291909152205460ff1690565b348015610b0b57600080fd5b506103c7610b1a366004613c12565b61277b565b348015610b2b57600080fd5b506103c7610b3a366004613e3a565b6128cd565b348015610b4b57600080fd5b506103c7610b5a366004613932565b612a1c565b348015610b6b57600080fd5b506105ec610b7a366004613b29565b612ad3565b348015610b8b57600080fd5b506103c7610b9a366004613b29565b612bbf565b348015610bab57600080fd5b506105ec610bba366004613932565b612bcc565b610bc7612cea565b601280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610c9157507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610cdd57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610ceb612cea565b601580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b606060048054610d2c906144ca565b80601f0160208091040260200160405190810160405280929190818152602001828054610d58906144ca565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b5050505050905090565b6000610dba82612d6b565b610df0576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526008602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610e2482611743565b90503373ffffffffffffffffffffffffffffffffffffffff821614610e8357610e4d8133610ac4565b610e83576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526008602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b601254829063ffffffff16421015610f48576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f51816123ec565b610f87576040517f430f13b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60155460ff16610fc3576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5473ffffffffffffffffffffffffffffffffffffffff831615801591906000906110765773ffffffffffffffffffffffffffffffffffffffff851660009081526018602052604081208054611019906144ca565b9050111561103f576064600e54600c5402816110375761103761459a565b049050611059565b6064600d54600c5402816110555761105561459a565b0490505b6064600f54606403600c5402816110725761107261459a565b0491505b813410156110b0576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff86169082156108fc029083906000818181858888f193505050501580156110f3573d6000803e3d6000fd5b506110fd86612db9565b505050505050565b600061111082612e6f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611177576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260086020526040902080543380821473ffffffffffffffffffffffffffffffffffffffff8816909114176111ea576111b48633610ac4565b6111ea576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516611237576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112448686866001612f28565b801561124f57600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526007602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600660205260409020557c0200000000000000000000000000000000000000000000000000000000831661133757600184016000818152600660205260409020546113355760005481146113355760008181526006602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110fd565b6000806002836040516113aa9190614147565b90815260200160405180910390205490506113c481611743565b9392505050565b82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060405190935061142b925060029150611417908590614147565b908152602001604051809103902054612fa5565b805190915073ffffffffffffffffffffffffffffffffffffffff16331461147e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526016602090815260408220805460018101825590835291206110fd910186866135fa565b600354600080546060927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff910301908367ffffffffffffffff8111156114ef576114ef6145f8565b60405190808252806020026020018201604052801561152257816020015b606081526020019060019003908161150d5790505b50905060006115318584614452565b90506000611543565b60405180910390fd5b818411156115ba57600084815260016020908152604091829020915161156d92916013910161422a565b60405160208183030381529060405283828151811061158e5761158e6145c9565b602002602001018190525080806115a49061451e565b91505083806115b290614495565b945050611543565b5090949350505050565b6115cc612cea565b6002600b541415611639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161153a565b6002600b5547737cdb864677d9fd4057dd77be0868e7b82b18ce936108fc6064611664846032614415565b61166e9190614401565b6040518115909202916000818181858888f19350505050158015611696573d6000803e3d6000fd5b5073944245c6561cb4a9bca276eeec6f34d386bdbd566108fc60646116bc846032614415565b6116c69190614401565b6040518115909202916000818181858888f193505050501580156116ee573d6000803e3d6000fd5b50506001600b55565b61171283838360405180602001604052806000815250612203565b505050565b61171f612cea565b805161173290601490602084019061369c565b5050565b61173e612cea565b601155565b6000610cdd82612e6f565b83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060405190935061179a925060029150611417908590614147565b805190915073ffffffffffffffffffffffffffffffffffffffff1633146117ed576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82601a8787604051611800929190614137565b9081526020016040518091039020819055508360198787604051611825929190614137565b90815260405190819003602001902080549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216919091179055505050505050565b60016020526000908152604090208054611884906144ca565b80601f01602080910402602001604051908101604052809291908181526020018280546118b0906144ca565b80156118fd5780601f106118d2576101008083540402835291602001916118fd565b820191906000526020600020905b8154815290600101906020018083116118e057829003601f168201915b505050505081565b600073ffffffffffffffffffffffffffffffffffffffff8216611954576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205467ffffffffffffffff1690565b61198f612cea565b6119996000613043565b565b6011548151600091839111806119b2575060018151105b156119c05750600092915050565b60005b8151811015611bce5760008282815181106119e0576119e06145c9565b01602001517fff000000000000000000000000000000000000000000000000000000000000001690507f30000000000000000000000000000000000000000000000000000000000000008110801590611a7b57507f39000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821611155b158015611b1957507f61000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610801590611b1757507f7a000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821611155b155b8015611b6757507f5f000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821614155b8015611bb557507f2d000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821614155b15611bc557506000949350505050565b506001016119c3565b5060019392505050565b611be0612cea565b601d55565b60186020526000908152604090208054611884906144ca565b8151602081840181018051601b82529282019482019490942091909352815180830184018051928152908401929093019190912091528054611884906144ca565b611c47612cea565b600c55565b606060058054610d2c906144ca565b82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604051909350611ca7925060029150611417908590614147565b805190915073ffffffffffffffffffffffffffffffffffffffff163314611cfa576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006018600060178888604051611d12929190614137565b90815260408051602092819003830190205473ffffffffffffffffffffffffffffffffffffffff16835290820192909252016000208054611d52906144ca565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7e906144ca565b8015611dcb5780601f10611da057610100808354040283529160200191611dcb565b820191906000526020600020905b815481529060010190602001808311611dae57829003601f168201915b505050505090508585604051611de2929190614137565b604051809103902081805190602001201415611e6857604051806020016040528060008152506018600060178989604051611e1e929190614137565b90815260408051602092819003830190205473ffffffffffffffffffffffffffffffffffffffff1683528282019390935291016000208251611e66939192919091019061369c565b505b8360178787604051611e7b929190614137565b908152604051908190036020019020805473ffffffffffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055505050505050565b33600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60155460ff16611faa576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008183604051602001611fbf9291906141c6565b6040516020818303038152906040529050611fd98261199b565b1580611feb5750611fe98361199b565b155b8061201557506002816040516120019190614147565b908152602001604051809103902054600014155b1561204c576040517f430f13b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120616002856040516114179190614147565b805190915073ffffffffffffffffffffffffffffffffffffffff1633146121a0576019846040516120929190614147565b9081526040519081900360200190205460ff166120db576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a846040516120eb9190614147565b908152602001604051809103902054341015612133576040517f356680b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000015173ffffffffffffffffffffffffffffffffffffffff166108fc606460105460646121629190614452565b61216c9034614415565b6121769190614401565b6040518115909202916000818181858888f1935050505015801561219e573d6000803e3d6000fd5b505b6121a982612db9565b50505050565b6121b7612cea565b600d93909355600e91909155600f55601055565b601660205281600052604060002081815481106121e757600080fd5b90600052602060002001600091509150508054611884906144ca565b61220e848484611105565b73ffffffffffffffffffffffffffffffffffffffff83163b156121a957612237848484846130ba565b6121a9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1660178383604051612296929190614137565b9081526040519081900360200190205473ffffffffffffffffffffffffffffffffffffffff16146122f3576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526018602052604090206117129083836135fa565b606061231882612d6b565b6123a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000606482015260840161153a565b6123ac613240565b6123b58361324f565b60008481526001602090815260409182902091516123d69493929101614163565b6040516020818303038152906040529050919050565b60006002826040516123fe9190614147565b9081526020016040518091039020546000148015610cdd5750610cdd8261199b565b612428612cea565b60008381526001602052604090206124419083836135fa565b508260028383604051612455929190614137565b90815260405190819003602001902055505050565b6060601b8460405161247c9190614147565b9081526020016040518091039020838360405161249a929190614137565b908152602001604051809103902080546124b3906144ca565b80601f01602080910402602001604051908101604052809291908181526020018280546124df906144ca565b801561252c5780601f106125015761010080835404028352916020019161252c565b820191906000526020600020905b81548152906001019060200180831161250f57829003601f168201915b505050505090509392505050565b601254839063ffffffff1642101561257e576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612587816123ec565b6125bd576040517f430f13b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16602082015260009060340160405160208183030381529060405280519060200120905061264a84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601d549150849050613381565b612680576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152601c602052604090205460ff16156126ca576040517f3d2d8d4e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561270b85612db9565b5050505050565b61271a612cea565b60005b8151811015611732576060806016600085858151811061273f5761273f6145c9565b602002602001015181526020019081526020016000209080519060200190612768929190613710565b5050806127749061451e565b905061271d565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040519093506127c7925060029150611417908590614147565b805190915073ffffffffffffffffffffffffffffffffffffffff16331461281a576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b848110156128c357838181518110612837576128376145c9565b6020026020010151601b8989604051612851929190614137565b9081526020016040518091039020878784818110612871576128716145c9565b90506020028101906128839190614311565b604051612891929190614137565b908152602001604051809103902090805190602001906128b292919061369c565b506128bc8161451e565b905061281d565b5050505050505050565b601254839063ffffffff16421015612911576040517f3f88677400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61291a816123ec565b612950576040517f430f13b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b1660208201526000906034016040516020818303038152906040528051906020012090506129dd84848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050601e549150849050613381565b612a13576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270b85612db9565b612a24612cea565b73ffffffffffffffffffffffffffffffffffffffff8116612ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161153a565b612ad081613043565b50565b606060166000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015612bb4578382906000526020600020018054612b27906144ca565b80601f0160208091040260200160405190810160405280929190818152602001828054612b53906144ca565b8015612ba05780601f10612b7557610100808354040283529160200191612ba0565b820191906000526020600020905b815481529060010190602001808311612b8357829003601f168201915b505050505081526020019060010190612b08565b505050509050919050565b612bc7612cea565b601e55565b60606000612bd983611905565b905060008167ffffffffffffffff811115612bf657612bf66145f8565b604051908082528060200260200182016040528015612c2957816020015b6060815260200190600190039081612c145790505b509050600160005b838110156115ba576000612c4483611743565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cd7576000838152600160209081526040918290209151612c9c92916013910161422a565b604051602081830303815290604052848381518110612cbd57612cbd6145c9565b60200260200101819052508180612cd39061451e565b9250505b82612ce18161451e565b93505050612c31565b600a5473ffffffffffffffffffffffffffffffffffffffff163314611999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161153a565b600081600111158015612d7f575060005482105b8015610cdd5750506000908152600660205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b6000805481526001602090815260409091208251612dd99284019061369c565b50600054600282604051612ded9190614147565b90815260200160405180910390208190555033601782604051612e109190614147565b908152604051908190036020019020805473ffffffffffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179055612ad0336001613397565b60008180600111612ef657600054811015612ef6576000818152600660205260409020547c01000000000000000000000000000000000000000000000000000000008116612ef4575b806113c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260066020526040902054612eb8565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82601760016000858152602001908152602001600020604051612f4b919061421e565b908152604051908190036020019020805473ffffffffffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffff000000000000000000000000000000000000000090921691909117905550505050565b604080516080810182526000808252602082018190529181018290526060810191909152610cdd612fd583612e6f565b6040805160808101825273ffffffffffffffffffffffffffffffffffffffff8316815260a083901c67ffffffffffffffff1660208201527c0100000000000000000000000000000000000000000000000000000000831615159181019190915260e89190911c606082015290565b600a805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061311590339089908890889060040161423f565b602060405180830381600087803b15801561312f57600080fd5b505af192505050801561317d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261317a91810190613b5f565b60015b6131f1573d8080156131ab576040519150601f19603f3d011682016040523d82523d6000602084013e6131b0565b606091505b5080516131e9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b606060148054610d2c906144ca565b60608161328f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156132b957806132a38161451e565b91506132b29050600a83614401565b9150613293565b60008167ffffffffffffffff8111156132d4576132d46145f8565b6040519080825280601f01601f1916602001820160405280156132fe576020820181803683370190505b5090505b841561323857613313600183614452565b9150613320600a86614557565b61332b9060306143e9565b60f81b818381518110613340576133406145c9565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061337a600a86614401565b9450613302565b60008261338e85846133b1565b14949350505050565b6117328282604051806020016040528060008152506133fe565b600081815b84518110156133f6576133e2828683815181106133d5576133d56145c9565b602002602001015161348a565b9150806133ee8161451e565b9150506133b6565b509392505050565b61340883836134b6565b73ffffffffffffffffffffffffffffffffffffffff83163b15611712576000548281035b61343f60008683806001019450866130ba565b613475576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061342c57816000541461270b57600080fd5b60008183106134a65760008281526020849052604090206113c4565b5060009182526020526040902090565b600054816134f0576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6134fd6000848385612f28565b73ffffffffffffffffffffffffffffffffffffffff831660008181526007602090815260408083208054680100000000000000018802019055848352600690915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146135b957808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101613581565b50816135f1576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054613606906144ca565b90600052602060002090601f016020900481019282613628576000855561368c565b82601f1061365f578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082351617855561368c565b8280016001018555821561368c579182015b8281111561368c578235825591602001919060010190613671565b50613698929150613769565b5090565b8280546136a8906144ca565b90600052602060002090601f0160209004810192826136ca576000855561368c565b82601f106136e357805160ff191683800117855561368c565b8280016001018555821561368c579182015b8281111561368c5782518255916020019190600101906136f5565b82805482825590600052602060002090810192821561375d579160200282015b8281111561375d578251805161374d91849160209091019061369c565b5091602001919060010190613730565b5061369892915061377e565b5b80821115613698576000815560010161376a565b80821115613698576000613792828261379b565b5060010161377e565b5080546137a7906144ca565b6000825580601f106137b7575050565b601f016020900490600052602060002090810190612ad09190613769565b600067ffffffffffffffff8311156137ef576137ef6145f8565b61382060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601614376565b905082815283838301111561383457600080fd5b828260208301376000602084830101529392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461386f57600080fd5b919050565b60008083601f84011261388657600080fd5b50813567ffffffffffffffff81111561389e57600080fd5b6020830191508360208260051b85010111156138b957600080fd5b9250929050565b8035801515811461386f57600080fd5b60008083601f8401126138e257600080fd5b50813567ffffffffffffffff8111156138fa57600080fd5b6020830191508360208285010111156138b957600080fd5b600082601f83011261392357600080fd5b6113c4838335602085016137d5565b60006020828403121561394457600080fd5b6113c48261384b565b6000806040838503121561396057600080fd5b6139698361384b565b91506139776020840161384b565b90509250929050565b60008060006060848603121561399557600080fd5b61399e8461384b565b92506139ac6020850161384b565b9150604084013590509250925092565b600080600080608085870312156139d257600080fd5b6139db8561384b565b93506139e96020860161384b565b925060408501359150606085013567ffffffffffffffff811115613a0c57600080fd5b8501601f81018713613a1d57600080fd5b613a2c878235602084016137d5565b91505092959194509250565b60008060408385031215613a4b57600080fd5b613a548361384b565b9150613977602084016138c0565b60008060408385031215613a7557600080fd5b613a7e8361384b565b946020939093013593505050565b60006020808385031215613a9f57600080fd5b823567ffffffffffffffff811115613ab657600080fd5b8301601f81018513613ac757600080fd5b8035613ada613ad5826143c5565b614376565b80828252848201915084840188868560051b8701011115613afa57600080fd5b600094505b83851015613b1d578035835260019490940193918501918501613aff565b50979650505050505050565b600060208284031215613b3b57600080fd5b5035919050565b600060208284031215613b5457600080fd5b81356113c481614627565b600060208284031215613b7157600080fd5b81516113c481614627565b60008060208385031215613b8f57600080fd5b823567ffffffffffffffff811115613ba657600080fd5b613bb2858286016138d0565b90969095509350505050565b600080600060408486031215613bd357600080fd5b833567ffffffffffffffff811115613bea57600080fd5b613bf6868287016138d0565b9094509250613c0990506020850161384b565b90509250925092565b600080600080600060608688031215613c2a57600080fd5b67ffffffffffffffff8087351115613c4157600080fd5b613c4e88883589016138d0565b909650945060208781013582811115613c6657600080fd5b613c728a828b01613874565b909650945050604088013582811115613c8a57600080fd5b8801601f81018a13613c9b57600080fd5b8035613ca9613ad5826143c5565b8082825284820191508484018d868560051b8701011115613cc957600080fd5b60005b84811015613d03578782351115613ce257600080fd5b613cf18f888435890101613912565b84529286019290860190600101613ccc565b50508096505050505050509295509295909350565b60008060008060608587031215613d2e57600080fd5b843567ffffffffffffffff811115613d4557600080fd5b613d51878288016138d0565b9095509350613d649050602086016138c0565b9396929550929360400135925050565b600080600060408486031215613d8957600080fd5b833567ffffffffffffffff811115613da057600080fd5b613dac868287016138d0565b909790965060209590950135949350505050565b600060208284031215613dd257600080fd5b813567ffffffffffffffff811115613de957600080fd5b61323884828501613912565b60008060408385031215613e0857600080fd5b823567ffffffffffffffff811115613e1f57600080fd5b613e2b85828601613912565b9250506139776020840161384b565b600080600060408486031215613e4f57600080fd5b833567ffffffffffffffff80821115613e6757600080fd5b613e7387838801613912565b94506020860135915080821115613e8957600080fd5b50613e9686828701613874565b9497909650939450505050565b600080600060408486031215613eb857600080fd5b833567ffffffffffffffff80821115613ed057600080fd5b613edc87838801613912565b94506020860135915080821115613ef257600080fd5b50613e96868287016138d0565b60008060408385031215613f1257600080fd5b823567ffffffffffffffff80821115613f2a57600080fd5b613f3686838701613912565b93506020850135915080821115613f4c57600080fd5b50613f5985828601613912565b9150509250929050565b600080600060408486031215613f7857600080fd5b83359250602084013567ffffffffffffffff811115613f9657600080fd5b613e96868287016138d0565b60008060408385031215613fb557600080fd5b50508035926020909101359150565b60008060008060808587031215613fda57600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561400857600080fd5b813563ffffffff811681146113c457600080fd5b60008151808452614034816020860160208601614469565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8054600090600181811c908083168061408057607f831692505b60208084108214156140bb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8180156140cf57600181146140fe5761412b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0086168952848901965061412b565b60008881526020902060005b868110156141235781548b82015290850190830161410a565b505084890196505b50505050505092915050565b8183823760009101908152919050565b60008251614159818460208701614469565b9190910192915050565b60008451614175818460208901614469565b845190830190614189818360208901614469565b7f2f0000000000000000000000000000000000000000000000000000000000000091019081526141bc6001820185614066565b9695505050505050565b600083516141d8818460208801614469565b7f2e000000000000000000000000000000000000000000000000000000000000009083019081528351614212816001840160208801614469565b01600101949350505050565b60006113c48284614066565b60006132386142398386614066565b84614066565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526141bc608083018461401c565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526142df85835161401c565b945092850192908501906001016142a5565b5092979650505050505050565b6020815260006113c4602083018461401c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261434657600080fd5b83018035915067ffffffffffffffff82111561436157600080fd5b6020019150368190038213156138b957600080fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156143bd576143bd6145f8565b604052919050565b600067ffffffffffffffff8211156143df576143df6145f8565b5060051b60200190565b600082198211156143fc576143fc61456b565b500190565b6000826144105761441061459a565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561444d5761444d61456b565b500290565b6000828210156144645761446461456b565b500390565b60005b8381101561448457818101518382015260200161446c565b838111156121a95750506000910152565b6000816144a4576144a461456b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600181811c908216806144de57607f821691505b60208210811415614518577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156145505761455061456b565b5060010190565b6000826145665761456661459a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114612ad057600080fdfea2646970667358221220656b966129fea2aba49436789f225f9a152daa4b02082ff71668f6ee3470bf4764736f6c6343000807003368747470733a2f2f6d657461646174612e6574686e616d652e646f6d61696e732fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef