0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801561004357600080fd5b5060805161523361006d6000396000818161202d01528181612082015261223d01526152336000f3fe6080604052600436106102045760003560e01c806370a0823111610118578063ad3cb1cc116100a0578063e3d61eb31161006f578063e3d61eb314610776578063e985e9c51461079f578063ea924dec146107dc578063eddd0d9c14610819578063f2fde38b1461084257610204565b8063ad3cb1cc146106a8578063b88d4fde146106d3578063c87b56dd146106fc578063d5f5f1f81461073957610204565b806395d89b41116100e757806395d89b41146105d25780639e8b04d0146105fd578063a0bcfc7f1461063a578063a22cb46514610663578063acd379cc1461068c57610204565b806370a0823114610528578063715018a6146105655780637a5caab31461057c5780638da5cb5b146105a757610204565b80633b76b3a21161019b5780634f1ef2861161016a5780634f1ef2861461042a5780634f6ccce71461044657806352d1902d146104835780636352211e146104ae57806365df18e1146104eb57610204565b80633b76b3a21461039157806342842e0e146103ad5780634bb30912146103d65780634cd88b761461040157610204565b806318160ddd116101d757806318160ddd146102d75780631cbf88d91461030257806323b872dd1461032b5780632f745c591461035457610204565b806301ffc9a71461020957806306fdde0314610246578063081812fc14610271578063095ea7b3146102ae575b600080fd5b34801561021557600080fd5b50610230600480360381019061022b91906138e4565b61086b565b60405161023d919061392c565b60405180910390f35b34801561025257600080fd5b5061025b61088d565b60405161026891906139d7565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190613a2f565b61092e565b6040516102a59190613a9d565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d09190613ae4565b61094a565b005b3480156102e357600080fd5b506102ec610960565b6040516102f99190613b33565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190613a2f565b610976565b005b34801561033757600080fd5b50610352600480360381019061034d9190613b4e565b6109bf565b005b34801561036057600080fd5b5061037b60048036038101906103769190613ae4565b610ac1565b6040516103889190613b33565b60405180910390f35b6103ab60048036038101906103a69190613c3c565b610c02565b005b3480156103b957600080fd5b506103d460048036038101906103cf9190613b4e565b610dae565b005b3480156103e257600080fd5b506103eb610dce565b6040516103f89190613dbc565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190613f0e565b610ea7565b005b610444600480360381019061043f9190614027565b611097565b005b34801561045257600080fd5b5061046d60048036038101906104689190613a2f565b6110b6565b60405161047a9190613b33565b60405180910390f35b34801561048f57600080fd5b5061049861118f565b6040516104a59190614092565b60405180910390f35b3480156104ba57600080fd5b506104d560048036038101906104d09190613a2f565b6111c2565b6040516104e29190613a9d565b60405180910390f35b3480156104f757600080fd5b50610512600480360381019061050d9190613a2f565b6111d4565b60405161051f919061416b565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a919061418d565b6112bd565b60405161055c9190613b33565b60405180910390f35b34801561057157600080fd5b5061057a611386565b005b34801561058857600080fd5b5061059161139a565b60405161059e9190613b33565b60405180910390f35b3480156105b357600080fd5b506105bc6113a4565b6040516105c99190613a9d565b60405180910390f35b3480156105de57600080fd5b506105e76113dc565b6040516105f491906139d7565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f919061427d565b61147d565b604051610631919061416b565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c919061431c565b61153d565b005b34801561066f57600080fd5b5061068a60048036038101906106859190614395565b61155b565b005b6106a660048036038101906106a191906143d5565b611571565b005b3480156106b457600080fd5b506106bd6115eb565b6040516106ca91906139d7565b60405180910390f35b3480156106df57600080fd5b506106fa60048036038101906106f59190614435565b611624565b005b34801561070857600080fd5b50610723600480360381019061071e9190613a2f565b611649565b60405161073091906139d7565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190613a2f565b6116dc565b60405161076d9190613b33565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190614599565b6116ef565b005b3480156107ab57600080fd5b506107c660048036038101906107c191906145e2565b611749565b6040516107d3919061392c565b60405180910390f35b3480156107e857600080fd5b5061080360048036038101906107fe9190614622565b6117eb565b6040516108109190613b33565b60405180910390f35b34801561082557600080fd5b50610840600480360381019061083b9190613a2f565b611808565b005b34801561084e57600080fd5b506108696004803603810190610864919061418d565b611851565b005b6000610876826118d7565b80610886575061088582611951565b5b9050919050565b606060006108996119bb565b90508060000180546108aa9061467e565b80601f01602080910402602001604051908101604052809291908181526020018280546108d69061467e565b80156109235780601f106108f857610100808354040283529160200191610923565b820191906000526020600020905b81548152906001019060200180831161090657829003601f168201915b505050505091505090565b6000610939826119e3565b5061094382611a6b565b9050919050565b61095c8282610957611ab6565b611abe565b5050565b6000600160045461097191906146de565b905090565b61097e611ad0565b7f65be10805b2006e6e4c1b3ceac37b0bf12291b9ac3991f6b513f7911937db646816040516109ad9190613b33565b60405180910390a18060018190555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a315760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401610a289190613a9d565b60405180910390fd5b6000610a458383610a40611ab6565b611b57565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610abb578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610ab293929190614712565b60405180910390fd5b50505050565b6000610acc836112bd565b8210610b04576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b6a576040517f54cd056500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610b74611b6d565b90506000805b82811015610be5578573ffffffffffffffffffffffffffffffffffffffff16610ba282611b85565b73ffffffffffffffffffffffffffffffffffffffff1603610bd857848203610bcf57809350505050610bfc565b81806001019250505b8080600101915050610b7a565b506000610bf557610bf4614749565b5b6000925050505b92915050565b610c0a611bd0565b6000610c17858585611c27565b90508160076000838152602001908152602001600020819055506000610c3c826111d4565b90506000610c4982611dd2565b9050600154815110610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c87906147c4565b60405180910390fd5b6000600234610c9f9190614813565b905060008134610caf91906146de565b90506000835182610cc09190614813565b905060005b8451811015610d4357610cf2858281518110610ce457610ce3614844565b5b602002602001015183611eb5565b8160086000888481518110610d0a57610d09614844565b5b602002602001015181526020019081526020016000206000828254610d2f9190614873565b925050819055508080600101915050610cc5565b50610d55610d4f6113a4565b84611eb5565b86863373ffffffffffffffffffffffffffffffffffffffff167f0b7c505814320d2f13567f2fbb565b06dcf10bb7ea2c2c5b3e588a55071c6c8d60405160405180910390a4505050505050610da8611fa4565b50505050565b610dc983838360405180602001604052806000815250611624565b505050565b60606000805480602002602001604051908101604052809291908181526020016000905b82821015610e9e578382906000526020600020018054610e119061467e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3d9061467e565b8015610e8a5780601f10610e5f57610100808354040283529160200191610e8a565b820191906000526020600020905b815481529060010190602001808311610e6d57829003601f168201915b505050505081526020019060010190610df2565b50505050905090565b6000610eb1611fbd565b905060008160000160089054906101000a900460ff1615905060008260000160009054906101000a900467ffffffffffffffff1690506000808267ffffffffffffffff16148015610eff5750825b9050600060018367ffffffffffffffff16148015610f34575060003073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610f42575080155b15610f79576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018560000160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610fc95760018560000160086101000a81548160ff0219169083151502179055505b610fd38787611fe5565b610fdc33611ffb565b610fe461200f565b610fec612019565b600a6001819055506040518060600160405280602d81526020016151d1602d91396003908161101b9190614a53565b5066038d7ea4c680006002819055506001600481905550831561108e5760008560000160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516110859190614b74565b60405180910390a15b50505050505050565b61109f61202b565b6110a882612111565b6110b2828261211c565b5050565b6000806110c1611b6d565b90506110cb610960565b8310611103576040517f4e23d03500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8281101561117357600073ffffffffffffffffffffffffffffffffffffffff1661113082611b85565b73ffffffffffffffffffffffffffffffffffffffff16146111665784820361115d5780935050505061118a565b81806001019250505b8080600101915050611107565b50600061118357611182614749565b5b6000925050505b919050565b600061119961223b565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60006111cd826119e3565b9050919050565b60606000808390505b6001156112165760076000828152602001908152602001600020549050600081031561121657818061120e90614b8f565b9250506111dd565b60008267ffffffffffffffff81111561123257611231613de3565b5b6040519080825280602002602001820160405280156112605781602001602082028036833780820191505090505b50905060005b838110156112b157600760008781526020019081526020016000205495508582828151811061129857611297614844565b5b6020026020010181815250508080600101915050611266565b50809350505050919050565b6000806112c86119bb565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361133c5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016113339190613a9d565b60405180910390fd5b8060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054915050919050565b61138e611ad0565b61139860006122c2565b565b6000600254905090565b6000806113af612399565b90508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b606060006113e86119bb565b90508060010180546113f99061467e565b80601f01602080910402602001604051908101604052809291908181526020018280546114259061467e565b80156114725780601f1061144757610100808354040283529160200191611472565b820191906000526020600020905b81548152906001019060200180831161145557829003601f168201915b505050505091505090565b60606000825167ffffffffffffffff81111561149c5761149b613de3565b5b6040519080825280602002602001820160405280156114ca5781602001602082028036833780820191505090505b50905060005b835181101561153357600860008583815181106114f0576114ef614844565b5b602002602001015181526020019081526020016000205482828151811061151a57611519614844565b5b60200260200101818152505080806001019150506114d0565b5080915050919050565b611545611ad0565b818160039182611556929190614be2565b505050565b61156d611566611ab6565b83836123c1565b5050565b611579611bd0565b6000611586848484611c27565b90506115996115936113a4565b34611eb5565b803373ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe60405160405180910390a3506115e6611fa4565b505050565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b61162f8484846109bf565b61164361163a611ab6565b8585858561253f565b50505050565b60606000600660008481526020019081526020016000205460001c9050600081036116a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a090614cfe565b60405180910390fd5b60036116b4826126f0565b6040516020016116c5929190614ddd565b604051602081830303815290604052915050919050565b60006116e7826111d4565b519050919050565b6116f88161270e565b806000908051906020019061170e92919061379e565b507f9538911740e5519a40db77fb5f637de0d56cdd804318d81ae270cc24fbd8479e8160405161173e9190613dbc565b60405180910390a150565b6000806117546119bb565b90508060050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691505092915050565b600060056000838152602001908152602001600020549050919050565b611810611ad0565b7f38fbb1c8b109c430f0c030e7ed076cf5611a307773a4e8e365601e8f8bceaec68160405161183f9190613b33565b60405180910390a18060028190555050565b611859611ad0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118cb5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016118c29190613a9d565b60405180910390fd5b6118d4816122c2565b50565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061194a575061194982612719565b5b9050919050565b60007fa86517a1000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60007f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300905090565b6000806119ef83611b85565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a6257826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611a599190613b33565b60405180910390fd5b80915050919050565b600080611a766119bb565b905080600401600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b600033905090565b611acb83838360016127fb565b505050565b611ad8611ab6565b73ffffffffffffffffffffffffffffffffffffffff16611af66113a4565b73ffffffffffffffffffffffffffffffffffffffff1614611b5557611b19611ab6565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b4c9190613a9d565b60405180910390fd5b565b6000611b648484846129cf565b90509392505050565b600080611b78612a40565b9050806000015491505090565b600080611b906119bb565b905080600201600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915050919050565b6000611bda612a68565b90506002816000015403611c1a576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816000018190555050565b60006002543414611c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6490614e73565b60405180910390fd5b6000600560008681526020019081526020016000205414611cc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cba90614edf565b60405180910390fd5b6000806000611d1586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612a90565b925092509250600060018885858560405160008152602001604052604051611d409493929190614f1b565b6020604051602081039080840390855afa158015611d62573d6000803e3d6000fd5b505050602060405103519050611d7a81600454612ac2565b600454600560008a815260200190815260200160002081905550876006600060045481526020019081526020016000208190555060046000815480929190611dc190614b8f565b919050559450505050509392505050565b60606000825167ffffffffffffffff811115611df157611df0613de3565b5b604051908082528060200260200182016040528015611e1f5781602001602082028036833780820191505090505b50905060005b8351811015611eab57611e51848281518110611e4457611e43614844565b5b60200260200101516111c2565b828281518110611e6457611e63614844565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050611e25565b5080915050919050565b80471015611efc5747816040517fcf479181000000000000000000000000000000000000000000000000000000008152600401611ef3929190614f60565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611f2290614fba565b60006040518083038185875af1925050503d8060008114611f5f576040519150601f19603f3d011682016040523d82523d6000602084013e611f64565b606091505b5050905080611f9f576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000611fae612a68565b90506001816000018190555050565b60007ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611fed612ae0565b611ff78282612b20565b5050565b612003612ae0565b61200c81612b5d565b50565b612017612ae0565b565b612021612ae0565b612029612be3565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614806120d857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166120bf612c04565b73ffffffffffffffffffffffffffffffffffffffff1614155b1561210f576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612119611ad0565b50565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561218457506040513d601f19601f820116820180604052508101906121819190614fe4565b60015b6121c557816040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016121bc9190613a9d565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b811461222c57806040517faa1d49a40000000000000000000000000000000000000000000000000000000081526004016122239190614092565b60405180910390fd5b6122368383612c5b565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16146122c0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60006122cc612399565b905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050828260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b60007f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b60006123cb6119bb565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361243e57826040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016124359190613a9d565b60405180910390fd5b818160050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3184604051612531919061392c565b60405180910390a350505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156126e9578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b815260040161259e9493929190615066565b6020604051808303816000875af19250505080156125da57506040513d601f19601f820116820180604052508101906125d791906150c7565b60015b61265e573d806000811461260a576040519150601f19603f3d011682016040523d82523d6000602084013e61260f565b606091505b50600081510361265657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161264d9190613a9d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146126e757836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016126de9190613a9d565b60405180910390fd5b505b5050505050565b606061270782600161270185612cce565b01612d87565b9050919050565b612716611ad0565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127e457507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806127f457506127f382612fcd565b5b9050919050565b60006128056119bb565b905081806128405750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612974576000612850856119e3565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128bb57508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156128ce57506128cc8185611749565b155b1561291057836040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016129079190613a9d565b60405180910390fd5b821561297257848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8481600401600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612a2c576000612a0e612a40565b9050806001016000815480929190612a2590614b8f565b9190505550505b612a37848484613037565b90509392505050565b60007f0c12c17af20e858ae142203eca79d9fe977cde9a6d2226d7db28f4c9277f8085905090565b60007f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00905090565b60008060006041845114612aa357600080fd5b6020840151915060408401519050606084015160001a92509193909250565b612adc828260405180602001604052806000815250613264565b5050565b612ae8613288565b612b1e576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612b28612ae0565b6000612b326119bb565b905082816000019081612b459190614a53565b5081816001019081612b579190614a53565b50505050565b612b65612ae0565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bd75760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612bce9190613a9d565b60405180910390fd5b612be0816122c2565b50565b612beb612ae0565b6000612bf5612a68565b90506001816000018190555050565b6000612c327f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6132a8565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612c64826132b2565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a2600081511115612cc157612cbb828261337f565b50612cca565b612cc9613403565b5b5050565b600080600090506000612cf26fffffffffffffffffffffffffffffffff8511613440565b90506080810284901c93506010810282019150612d1867ffffffffffffffff8511613440565b90506040810284901c93506008810282019150612d3a63ffffffff8511613440565b90506020810284901c93506004810282019150612d5a61ffff8511613440565b90506010810284901c93506002810282019150612d7960ff8511613440565b820191508192505050919050565b6060600083905060006002846002612d9f91906150f4565b612da99190614873565b67ffffffffffffffff811115612dc257612dc1613de3565b5b6040519080825280601f01601f191660200182016040528015612df45781602001600182028036833780820191505090505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612e2c57612e2b614844565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612e9057612e8f614844565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006001856002612ed091906150f4565b612eda9190614873565b90505b6001811115612f7a577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110612f1c57612f1b614844565b5b1a60f81b828281518110612f3357612f32614844565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600483901c925080612f7390615136565b9050612edd565b5060008214612fc25784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401612fb9929190614f60565b60405180910390fd5b809250505092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000806130426119bb565b9050600061304f85611b85565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146130915761309081858761344c565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613124576130d36000866000806127fb565b60018260030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131a95760018260030160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8582600201600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550848673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480925050509392505050565b61326e8383613510565b613283613279611ab6565b600085858561253f565b505050565b6000613292611fbd565b60000160089054906101000a900460ff16905090565b6000819050919050565b60008173ffffffffffffffffffffffffffffffffffffffff163b0361330e57806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016133059190613a9d565b60405180910390fd5b8061333b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6132a8565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606000808473ffffffffffffffffffffffffffffffffffffffff16846040516133a99190615190565b600060405180830381855af49150503d80600081146133e4576040519150601f19603f3d011682016040523d82523d6000602084013e6133e9565b606091505b50915091506133f9858383613609565b9250505092915050565b600034111561343e576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60008115159050919050565b613457838383613698565b61350b57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036134cc57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016134c39190613b33565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016135029291906151a7565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135825760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016135799190613a9d565b60405180910390fd5b600061359083836000611b57565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146136045760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016135fb9190613a9d565b60405180910390fd5b505050565b60608261361e5761361982613759565b613690565b60008251148015613646575060008473ffffffffffffffffffffffffffffffffffffffff163b145b1561368857836040517f9996b31500000000000000000000000000000000000000000000000000000000815260040161367f9190613a9d565b60405180910390fd5b819050613691565b5b9392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561375057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061371157506137108484611749565b5b8061374f57508273ffffffffffffffffffffffffffffffffffffffff1661373783611a6b565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008151111561376c5780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8280548282559060005260206000209081019282156137e6579160200282015b828111156137e55782518290816137d59190614a53565b50916020019190600101906137be565b5b5090506137f391906137f7565b5090565b5b80821115613817576000818161380e919061381b565b506001016137f8565b5090565b5080546138279061467e565b6000825580601f106138395750613858565b601f016020900490600052602060002090810190613857919061385b565b5b50565b5b8082111561387457600081600090555060010161385c565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6138c18161388c565b81146138cc57600080fd5b50565b6000813590506138de816138b8565b92915050565b6000602082840312156138fa576138f9613882565b5b6000613908848285016138cf565b91505092915050565b60008115159050919050565b61392681613911565b82525050565b6000602082019050613941600083018461391d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613981578082015181840152602081019050613966565b60008484015250505050565b6000601f19601f8301169050919050565b60006139a982613947565b6139b38185613952565b93506139c3818560208601613963565b6139cc8161398d565b840191505092915050565b600060208201905081810360008301526139f1818461399e565b905092915050565b6000819050919050565b613a0c816139f9565b8114613a1757600080fd5b50565b600081359050613a2981613a03565b92915050565b600060208284031215613a4557613a44613882565b5b6000613a5384828501613a1a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8782613a5c565b9050919050565b613a9781613a7c565b82525050565b6000602082019050613ab26000830184613a8e565b92915050565b613ac181613a7c565b8114613acc57600080fd5b50565b600081359050613ade81613ab8565b92915050565b60008060408385031215613afb57613afa613882565b5b6000613b0985828601613acf565b9250506020613b1a85828601613a1a565b9150509250929050565b613b2d816139f9565b82525050565b6000602082019050613b486000830184613b24565b92915050565b600080600060608486031215613b6757613b66613882565b5b6000613b7586828701613acf565b9350506020613b8686828701613acf565b9250506040613b9786828701613a1a565b9150509250925092565b6000819050919050565b613bb481613ba1565b8114613bbf57600080fd5b50565b600081359050613bd181613bab565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613bfc57613bfb613bd7565b5b8235905067ffffffffffffffff811115613c1957613c18613bdc565b5b602083019150836001820283011115613c3557613c34613be1565b5b9250929050565b60008060008060608587031215613c5657613c55613882565b5b6000613c6487828801613bc2565b945050602085013567ffffffffffffffff811115613c8557613c84613887565b5b613c9187828801613be6565b93509350506040613ca487828801613a1a565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b6000613cf882613947565b613d028185613cdc565b9350613d12818560208601613963565b613d1b8161398d565b840191505092915050565b6000613d328383613ced565b905092915050565b6000602082019050919050565b6000613d5282613cb0565b613d5c8185613cbb565b935083602082028501613d6e85613ccc565b8060005b85811015613daa5784840389528151613d8b8582613d26565b9450613d9683613d3a565b925060208a01995050600181019050613d72565b50829750879550505050505092915050565b60006020820190508181036000830152613dd68184613d47565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613e1b8261398d565b810181811067ffffffffffffffff82111715613e3a57613e39613de3565b5b80604052505050565b6000613e4d613878565b9050613e598282613e12565b919050565b600067ffffffffffffffff821115613e7957613e78613de3565b5b613e828261398d565b9050602081019050919050565b82818337600083830152505050565b6000613eb1613eac84613e5e565b613e43565b905082815260208101848484011115613ecd57613ecc613dde565b5b613ed8848285613e8f565b509392505050565b600082601f830112613ef557613ef4613bd7565b5b8135613f05848260208601613e9e565b91505092915050565b60008060408385031215613f2557613f24613882565b5b600083013567ffffffffffffffff811115613f4357613f42613887565b5b613f4f85828601613ee0565b925050602083013567ffffffffffffffff811115613f7057613f6f613887565b5b613f7c85828601613ee0565b9150509250929050565b600067ffffffffffffffff821115613fa157613fa0613de3565b5b613faa8261398d565b9050602081019050919050565b6000613fca613fc584613f86565b613e43565b905082815260208101848484011115613fe657613fe5613dde565b5b613ff1848285613e8f565b509392505050565b600082601f83011261400e5761400d613bd7565b5b813561401e848260208601613fb7565b91505092915050565b6000806040838503121561403e5761403d613882565b5b600061404c85828601613acf565b925050602083013567ffffffffffffffff81111561406d5761406c613887565b5b61407985828601613ff9565b9150509250929050565b61408c81613ba1565b82525050565b60006020820190506140a76000830184614083565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140e2816139f9565b82525050565b60006140f483836140d9565b60208301905092915050565b6000602082019050919050565b6000614118826140ad565b61412281856140b8565b935061412d836140c9565b8060005b8381101561415e57815161414588826140e8565b975061415083614100565b925050600181019050614131565b5085935050505092915050565b60006020820190508181036000830152614185818461410d565b905092915050565b6000602082840312156141a3576141a2613882565b5b60006141b184828501613acf565b91505092915050565b600067ffffffffffffffff8211156141d5576141d4613de3565b5b602082029050602081019050919050565b60006141f96141f4846141ba565b613e43565b9050808382526020820190506020840283018581111561421c5761421b613be1565b5b835b8181101561424557806142318882613a1a565b84526020840193505060208101905061421e565b5050509392505050565b600082601f83011261426457614263613bd7565b5b81356142748482602086016141e6565b91505092915050565b60006020828403121561429357614292613882565b5b600082013567ffffffffffffffff8111156142b1576142b0613887565b5b6142bd8482850161424f565b91505092915050565b60008083601f8401126142dc576142db613bd7565b5b8235905067ffffffffffffffff8111156142f9576142f8613bdc565b5b60208301915083600182028301111561431557614314613be1565b5b9250929050565b6000806020838503121561433357614332613882565b5b600083013567ffffffffffffffff81111561435157614350613887565b5b61435d858286016142c6565b92509250509250929050565b61437281613911565b811461437d57600080fd5b50565b60008135905061438f81614369565b92915050565b600080604083850312156143ac576143ab613882565b5b60006143ba85828601613acf565b92505060206143cb85828601614380565b9150509250929050565b6000806000604084860312156143ee576143ed613882565b5b60006143fc86828701613bc2565b935050602084013567ffffffffffffffff81111561441d5761441c613887565b5b61442986828701613be6565b92509250509250925092565b6000806000806080858703121561444f5761444e613882565b5b600061445d87828801613acf565b945050602061446e87828801613acf565b935050604061447f87828801613a1a565b925050606085013567ffffffffffffffff8111156144a05761449f613887565b5b6144ac87828801613ff9565b91505092959194509250565b600067ffffffffffffffff8211156144d3576144d2613de3565b5b602082029050602081019050919050565b60006144f76144f2846144b8565b613e43565b9050808382526020820190506020840283018581111561451a57614519613be1565b5b835b8181101561456157803567ffffffffffffffff81111561453f5761453e613bd7565b5b80860161454c8982613ee0565b8552602085019450505060208101905061451c565b5050509392505050565b600082601f8301126145805761457f613bd7565b5b81356145908482602086016144e4565b91505092915050565b6000602082840312156145af576145ae613882565b5b600082013567ffffffffffffffff8111156145cd576145cc613887565b5b6145d98482850161456b565b91505092915050565b600080604083850312156145f9576145f8613882565b5b600061460785828601613acf565b925050602061461885828601613acf565b9150509250929050565b60006020828403121561463857614637613882565b5b600061464684828501613bc2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061469657607f821691505b6020821081036146a9576146a861464f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146e9826139f9565b91506146f4836139f9565b925082820390508181111561470c5761470b6146af565b5b92915050565b60006060820190506147276000830186613a8e565b6147346020830185613b24565b6147416040830184613a8e565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f44657269766174697665207472656520746f6f20646565700000000000000000600082015250565b60006147ae601883613952565b91506147b982614778565b602082019050919050565b600060208201905081810360008301526147dd816147a1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061481e826139f9565b9150614829836139f9565b925082614839576148386147e4565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061487e826139f9565b9150614889836139f9565b92508282019050808211156148a1576148a06146af565b5b92915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026149097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826148cc565b61491386836148cc565b95508019841693508086168417925050509392505050565b6000819050919050565b600061495061494b614946846139f9565b61492b565b6139f9565b9050919050565b6000819050919050565b61496a83614935565b61497e61497682614957565b8484546148d9565b825550505050565b600090565b614993614986565b61499e818484614961565b505050565b5b818110156149c2576149b760008261498b565b6001810190506149a4565b5050565b601f821115614a07576149d8816148a7565b6149e1846148bc565b810160208510156149f0578190505b614a046149fc856148bc565b8301826149a3565b50505b505050565b600082821c905092915050565b6000614a2a60001984600802614a0c565b1980831691505092915050565b6000614a438383614a19565b9150826002028217905092915050565b614a5c82613947565b67ffffffffffffffff811115614a7557614a74613de3565b5b614a7f825461467e565b614a8a8282856149c6565b600060209050601f831160018114614abd5760008415614aab578287015190505b614ab58582614a37565b865550614b1d565b601f198416614acb866148a7565b60005b82811015614af357848901518255600182019150602085019450602081019050614ace565b86831015614b105784890151614b0c601f891682614a19565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b600067ffffffffffffffff82169050919050565b6000614b5e614b59614b5484614b25565b61492b565b614b2f565b9050919050565b614b6e81614b43565b82525050565b6000602082019050614b896000830184614b65565b92915050565b6000614b9a826139f9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614bcc57614bcb6146af565b5b600182019050919050565b600082905092915050565b614bec8383614bd7565b67ffffffffffffffff811115614c0557614c04613de3565b5b614c0f825461467e565b614c1a8282856149c6565b6000601f831160018114614c495760008415614c37578287013590505b614c418582614a37565b865550614ca9565b601f198416614c57866148a7565b60005b82811015614c7f57848901358255600182019150602085019450602081019050614c5a565b86831015614c9c5784890135614c98601f891682614a19565b8355505b6001600288020188555050505b50505050505050565b7f546f6b656e206e6f74206d696e74656400000000000000000000000000000000600082015250565b6000614ce8601083613952565b9150614cf382614cb2565b602082019050919050565b60006020820190508181036000830152614d1781614cdb565b9050919050565b600081905092915050565b60008154614d368161467e565b614d408186614d1e565b94506001821660008114614d5b5760018114614d7057614da3565b60ff1983168652811515820286019350614da3565b614d79856148a7565b60005b83811015614d9b57815481890152600182019150602081019050614d7c565b838801955050505b50505092915050565b6000614db782613947565b614dc18185614d1e565b9350614dd1818560208601613963565b80840191505092915050565b6000614de98285614d29565b9150614df58284614dac565b91508190509392505050565b7f5265717569726573206d696e74206665652c20757365206765744d696e74466560008201527f6528290000000000000000000000000000000000000000000000000000000000602082015250565b6000614e5d602383613952565b9150614e6882614e01565b604082019050919050565b60006020820190508181036000830152614e8c81614e50565b9050919050565b7f546f6b656e20616c7265616479206d696e746564000000000000000000000000600082015250565b6000614ec9601483613952565b9150614ed482614e93565b602082019050919050565b60006020820190508181036000830152614ef881614ebc565b9050919050565b600060ff82169050919050565b614f1581614eff565b82525050565b6000608082019050614f306000830187614083565b614f3d6020830186614f0c565b614f4a6040830185614083565b614f576060830184614083565b95945050505050565b6000604082019050614f756000830185613b24565b614f826020830184613b24565b9392505050565b600081905092915050565b50565b6000614fa4600083614f89565b9150614faf82614f94565b600082019050919050565b6000614fc582614f97565b9150819050919050565b600081519050614fde81613bab565b92915050565b600060208284031215614ffa57614ff9613882565b5b600061500884828501614fcf565b91505092915050565b600081519050919050565b600082825260208201905092915050565b600061503882615011565b615042818561501c565b9350615052818560208601613963565b61505b8161398d565b840191505092915050565b600060808201905061507b6000830187613a8e565b6150886020830186613a8e565b6150956040830185613b24565b81810360608301526150a7818461502d565b905095945050505050565b6000815190506150c1816138b8565b92915050565b6000602082840312156150dd576150dc613882565b5b60006150eb848285016150b2565b91505092915050565b60006150ff826139f9565b915061510a836139f9565b9250828202615118816139f9565b9150828204841483151761512f5761512e6146af565b5b5092915050565b6000615141826139f9565b915060008203615154576151536146af565b5b600182039050919050565b600061516a82615011565b6151748185614f89565b9350615184818560208601613963565b80840191505092915050565b600061519c828461515f565b915081905092915050565b60006040820190506151bc6000830185613a8e565b6151c96020830184613b24565b939250505056fe68747470733a2f2f35342d3137332d3131382d34312e73736c69702e696f3a383434332f6d657461646174612fa264697066735822122026fcb4db94d0b3160518040956bfeba6f2dcc130c58e0a7faf7322afc35f741664736f6c63430008180033