60a060405234801561000f575f80fd5b506040518060400160405280600681526020017f52656261736500000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f5245424153450000000000000000000000000000000000000000000000000000815250816003908161008b91906104c3565b50806004908161009b91906104c3565b5050506040516100aa9061027c565b604051809103905ff0801580156100c3573d5f803e3d5ffd5b5073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050610113336b033b2e3c9fd0803ce800000061011860201b60201c565b610692565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017d906105ec565b60405180910390fd5b6101975f838361027260201b60201c565b8060025f8282546101a89190610637565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102559190610679565b60405180910390a361026e5f838361027760201b60201c565b5050565b505050565b505050565b612796806149e983390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061030457607f821691505b602082108103610317576103166102c0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261033e565b610383868361033e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6103c76103c26103bd8461039b565b6103a4565b61039b565b9050919050565b5f819050919050565b6103e0836103ad565b6103f46103ec826103ce565b84845461034a565b825550505050565b5f90565b6104086103fc565b6104138184846103d7565b505050565b5b818110156104365761042b5f82610400565b600181019050610419565b5050565b601f82111561047b5761044c8161031d565b6104558461032f565b81016020851015610464578190505b6104786104708561032f565b830182610418565b50505b505050565b5f82821c905092915050565b5f61049b5f1984600802610480565b1980831691505092915050565b5f6104b3838361048c565b9150826002028217905092915050565b6104cc82610289565b67ffffffffffffffff8111156104e5576104e4610293565b5b6104ef82546102ed565b6104fa82828561043a565b5f60209050601f83116001811461052b575f8415610519578287015190505b61052385826104a8565b86555061058a565b601f1984166105398661031d565b5f5b828110156105605784890151825560018201915060208501945060208101905061053b565b8683101561057d5784890151610579601f89168261048c565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6105d6601f83610592565b91506105e1826105a2565b602082019050919050565b5f6020820190508181035f830152610603816105ca565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6106418261039b565b915061064c8361039b565b92508282019050808211156106645761066361060a565b5b92915050565b6106738161039b565b82525050565b5f60208201905061068c5f83018461066a565b92915050565b60805161433f6106aa5f395f612639015261433f5ff3fe608060405260043610610184575f3560e01c80635a4c2ded116100d0578063a457c2d711610089578063c2a672e011610063578063c2a672e0146105d9578063dd62ed3e14610601578063f9d0cabb1461063d578063fe68a2de146106795761018b565b8063a457c2d714610525578063a9059cbb14610561578063ae1a01a21461059d5761018b565b80635a4c2ded1461040b57806370a082311461043357806379cc67901461046f5780637b7399ff1461049757806386a7640c146104bf57806395d89b41146104fb5761018b565b806318160ddd1161013d578063332199a911610117578063332199a91461034f578063395093511461038b5780633a9564bb146103c757806342966c68146103e35761018b565b806318160ddd146102bf57806323b872dd146102e9578063313ce567146103255761018b565b8063058d5ccf1461018f578063067ea235146101b757806306fdde03146101f3578063070c6e681461021d578063095ea7b3146102475780630ed70ed1146102835761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101b560048036038101906101b091906132db565b6106a3565b005b3480156101c2575f80fd5b506101dd60048036038101906101d89190613351565b610960565b6040516101ea91906133a7565b60405180910390f35b3480156101fe575f80fd5b506102076109e5565b6040516102149190613420565b60405180910390f35b348015610228575f80fd5b50610231610a75565b60405161023e91906133a7565b60405180910390f35b348015610252575f80fd5b5061026d6004803603810190610268919061346a565b610a85565b60405161027a91906134c2565b60405180910390f35b34801561028e575f80fd5b506102a960048036038101906102a491906134db565b610aa7565b6040516102b691906133a7565b60405180910390f35b3480156102ca575f80fd5b506102d3610aed565b6040516102e091906133a7565b60405180910390f35b3480156102f4575f80fd5b5061030f600480360381019061030a9190613506565b610af6565b60405161031c91906134c2565b60405180910390f35b348015610330575f80fd5b50610339610b24565b6040516103469190613571565b60405180910390f35b34801561035a575f80fd5b506103756004803603810190610370919061358a565b610b2c565b60405161038291906135c4565b60405180910390f35b348015610396575f80fd5b506103b160048036038101906103ac919061346a565b610b48565b6040516103be91906134c2565b60405180910390f35b6103e160048036038101906103dc91906135dd565b610b7e565b005b3480156103ee575f80fd5b506104096004803603810190610404919061358a565b610f4a565b005b348015610416575f80fd5b50610431600480360381019061042c9190613624565b610f5e565b005b34801561043e575f80fd5b50610459600480360381019061045491906134db565b61136f565b60405161046691906133a7565b60405180910390f35b34801561047a575f80fd5b506104956004803603810190610490919061346a565b6113b4565b005b3480156104a2575f80fd5b506104bd60048036038101906104b891906132db565b6113d4565b005b3480156104ca575f80fd5b506104e560048036038101906104e09190613351565b611691565b6040516104f29190613747565b60405180910390f35b348015610506575f80fd5b5061050f61171e565b60405161051c9190613420565b60405180910390f35b348015610530575f80fd5b5061054b6004803603810190610546919061346a565b6117ae565b60405161055891906134c2565b60405180910390f35b34801561056c575f80fd5b506105876004803603810190610582919061346a565b611823565b60405161059491906134c2565b60405180910390f35b3480156105a8575f80fd5b506105c360048036038101906105be91906134db565b611845565b6040516105d09190613747565b60405180910390f35b3480156105e4575f80fd5b506105ff60048036038101906105fa919061346a565b611896565b005b34801561060c575f80fd5b5061062760048036038101906106229190613351565b611ed5565b60405161063491906133a7565b60405180910390f35b348015610648575f80fd5b50610663600480360381019061065e91906134db565b611f57565b60405161067091906135c4565b60405180910390f35b348015610684575f80fd5b5061068d611f7b565b60405161069a9190613747565b60405180910390f35b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff1615610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a906137b1565b60405180910390fd5b8251825114610777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076e90613819565b60405180910390fd5b6001815f015f6101000a81548160ff0219169083151502179055505f5b8351811015610940575f8482815181106107b1576107b0613837565b5b602002602001015190505f8483815181106107cf576107ce613837565b5b6020026020010151905061082a82856004015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611f8c90919063ffffffff16565b156109315761088082856004015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611fb990919063ffffffff16565b505f6108c9856004015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611fe6565b036108e6576108e48185600101611fb990919063ffffffff16565b505b6109308282866003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ff9565b5b50508080600101915050610794565b505f815f015f6101000a81548160ff021916908315150217905550505050565b5f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6060600380546109f490613891565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2090613891565b8015610a6b5780601f10610a4257610100808354040283529160200191610a6b565b820191905f5260205f20905b815481529060010190602001808311610a4e57829003601f168201915b5050505050905090565b5f610a806008611fe6565b905090565b5f80610a8f612130565b9050610a9c818585612137565b600191505092915050565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f600254905090565b5f80610b00612130565b9050610b0d8582856122fa565b610b18858585612385565b60019150509392505050565b5f6012905090565b5f610b418260086125f190919063ffffffff16565b9050919050565b5f80610b52612130565b9050610b73818585610b648589611ed5565b610b6e91906138ee565b612137565b600191505092915050565b5f73420000000000000000000000000000000000000690505f3490505f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff1615610c2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c21906137b1565b60405180910390fd5b5f8211610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c639061396b565b60405180910390fd5b6001815f015f6101000a81548160ff02191690831515021790555073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ce1575f80fd5b505af1158015610cf3573d5f803e3d5ffd5b5050505050610d0183612608565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1933846040518363ffffffff1660e01b8152600401610d3b929190613989565b6020604051808303815f875af1158015610d57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7b91906139c4565b50610dcc82600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610e5f82826003015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b816003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610eb8838260010161271590919063ffffffff16565b508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f99039fcf0a98f484616c5196ee8b2ecfa971babf0b519848289ea4db381f85f784604051610f1691906133a7565b60405180910390a3610f2a81848487612742565b5f815f015f6101000a81548160ff02191690831515021790555050505050565b610f5b610f55612130565b82612948565b50565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff1615610fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe5906137b1565b60405180910390fd5b611002846008611f8c90919063ffffffff16565b15611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990613a39565b60405180910390fd5b5f8311611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b9061396b565b60405180910390fd5b6001815f015f6101000a81548160ff0219169083151502179055508373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b81526004016110dc93929190613a57565b6020604051808303815f875af11580156110f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111c9190613ab6565b5061112684612608565b73ffffffffffffffffffffffffffffffffffffffff166340c10f1933856040518363ffffffff1660e01b8152600401611160929190613989565b6020604051808303815f875af115801561117c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a091906139c4565b506111f183600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061128483826003015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270090919063ffffffff16565b816003015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506112dd848260010161271590919063ffffffff16565b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f99039fcf0a98f484616c5196ee8b2ecfa971babf0b519848289ea4db381f85f78560405161133b91906133a7565b60405180910390a361134f81858585612742565b5f815f015f6101000a81548160ff02191690831515021790555050505050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6113c6826113c0612130565b836122fa565b6113d08282612948565b5050565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff1615611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b906137b1565b60405180910390fd5b82518251146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f90613819565b60405180910390fd5b6001815f015f6101000a81548160ff0219169083151502179055505f5b8351811015611671575f8482815181106114e2576114e1613837565b5b602002602001015190505f848381518110611500576114ff613837565b5b602002602001015190505f846003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061159e83866004015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20611f8c90919063ffffffff16565b611661576115f383866004015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061271590919063ffffffff16565b5061160a828660010161271590919063ffffffff16565b505f811180156116215750611620838383612b0b565b5b611660576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165790613b51565b60405180910390fd5b5b50505080806001019150506114c5565b505f815f015f6101000a81548160ff021916908315150217905550505050565b6060611716600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206004015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612c48565b905092915050565b60606004805461172d90613891565b80601f016020809104026020016040519081016040528092919081815260200182805461175990613891565b80156117a45780601f1061177b576101008083540402835291602001916117a4565b820191905f5260205f20905b81548152906001019060200180831161178757829003601f168201915b5050505050905090565b5f806117b8612130565b90505f6117c58286611ed5565b90508381101561180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190613bdf565b60405180910390fd5b6118178286868403612137565b60019250505092915050565b5f8061182d612130565b905061183a818585612385565b600191505092915050565b606061188f600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101612c48565b9050919050565b5f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f816003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f83821490505f836004015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f61196b82612c48565b9050845f015f9054906101000a900460ff16156119bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b4906137b1565b60405180910390fd5b5f861180156119cc5750838611155b611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a029061396b565b60405180910390fd5b6001855f015f6101000a81548160ff0219169083151502179055505f5b8151811015611a98578315611a6657611a64828281518110611a4d57611a4c613837565b5b602002602001015184611fb990919063ffffffff16565b505b611a8b828281518110611a7c57611a7b613837565b5b60200260200101518989611ff9565b8080600101915050611a28565b508215611ab757611ab58786600101611fb990919063ffffffff16565b505b611ac087612608565b73ffffffffffffffffffffffffffffffffffffffff16639dc29fac33886040518363ffffffff1660e01b8152600401611afa929190613989565b6020604051808303815f875af1158015611b16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3a91906139c4565b50611b8b86600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b600a5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c1e86866003015f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c6790919063ffffffff16565b856003015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603611dd05773420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d876040518263ffffffff1660e01b8152600401611cf591906133a7565b5f604051808303815f87803b158015611d0c575f80fd5b505af1158015611d1e573d5f803e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff1687604051611d4790613c2a565b5f6040518083038185875af1925050503d805f8114611d81576040519150601f19603f3d011682016040523d82523d5f602084013e611d86565b606091505b5050905080611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190613c88565b60405180910390fd5b50611e4d565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33886040518363ffffffff1660e01b8152600401611e0b929190613989565b6020604051808303815f875af1158015611e27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e4b9190613ab6565b505b8673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f390b1276974b9463e5d66ab10df69b6f3d7b930eb066a0e66df327edd2cc811c88604051611eaa91906133a7565b60405180910390a35f855f015f6101000a81548160ff02191690831515021790555050505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f611f74611f6483612c7c565b6005612c9b90919063ffffffff16565b9050919050565b6060611f876008612c48565b905090565b5f611fb1835f018373ffffffffffffffffffffffffffffffffffffffff165f1b612cb4565b905092915050565b5f611fde835f018373ffffffffffffffffffffffffffffffffffffffff165f1b612cd4565b905092915050565b5f611ff2825f01612dd0565b9050919050565b5f8373ffffffffffffffffffffffffffffffffffffffff16639d06e53660e01b33858560405160200161202e93929190613a57565b60405160208183030381529060405260405160200161204e929190613d2b565b60405160208183030381529060405260405161206a9190613d52565b5f604051808303815f865af19150503d805f81146120a3576040519150601f19603f3d011682016040523d82523d5f602084013e6120a8565b606091505b505090508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f0fab16c41593290f4078dc50eb94a64f9316607cca63881293895399ea2ea7f38585604051612122929190613d68565b60405180910390a450505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c90613dff565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a90613e8d565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122ed91906133a7565b60405180910390a3505050565b5f6123058484611ed5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461237f5781811015612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890613ef5565b60405180910390fd5b61237e8484848403612137565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea90613f83565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612461576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245890614011565b60405180910390fd5b61246c838383612ddf565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e69061409f565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125d891906133a7565b60405180910390a36125eb848484612de4565b50505050565b5f6125fe835f0183612de9565b5f1c905092915050565b5f8061261383612c7c565b90505f8061262b836005612e1090919063ffffffff16565b91509150816126f5576126607f0000000000000000000000000000000000000000000000000000000000000000845f1b612e37565b90508073ffffffffffffffffffffffffffffffffffffffff1663c4d66de8866040518263ffffffff1660e01b815260040161269b91906135c4565b5f604051808303815f87803b1580156126b2575f80fd5b505af11580156126c4573d5f803e3d5ffd5b505050506126de83826005612eef9092919063ffffffff16565b506126f381600861271590919063ffffffff16565b505b809350505050919050565b5f818361270d91906138ee565b905092915050565b5f61273a835f018373ffffffffffffffffffffffffffffffffffffffff165f1b612f20565b905092915050565b5f846003015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f6127998483612c6790919063ffffffff16565b90505f8660010190505f876004015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090505f6127ee82612c48565b90505f5b815181101561287a575f82828151811061280f5761280e613837565b5b60200260200101519050612824818b8b612b0b565b61286c5761283b8185611fb990919063ffffffff16565b505f61284685611fe6565b036128605761285e8a86611fb990919063ffffffff16565b505b61286b818b88611ff9565b5b5080806001019150506127f2565b505f5b865181101561293c575f87828151811061289a57612899613837565b5b602002602001015190506128b78185611f8c90919063ffffffff16565b61292e576128ce818561271590919063ffffffff16565b506128e28a8661271590919063ffffffff16565b506128ee818b89612b0b565b61292d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292490613b51565b60405180910390fd5b5b50808060010191505061287d565b50505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ad9061412d565b60405180910390fd5b6129c1825f83612ddf565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3b906141bb565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612af391906133a7565b60405180910390a3612b06835f84612de4565b505050565b5f808473ffffffffffffffffffffffffffffffffffffffff1663441d258960e01b338686604051602001612b4193929190613a57565b604051602081830303815290604052604051602001612b61929190613d2b565b604051602081830303815290604052604051612b7d9190613d52565b5f604051808303815f865af19150503d805f8114612bb6576040519150601f19603f3d011682016040523d82523d5f602084013e612bbb565b606091505b505090508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f79ce901445b6f28b114475bf7396f10ee202eea47185094987be9a3cd99e28868685604051612c35929190613d68565b60405180910390a4809150509392505050565b60605f612c56835f01612f87565b905060608190508092505050919050565b5f8183612c7491906141d9565b905092915050565b5f8173ffffffffffffffffffffffffffffffffffffffff169050919050565b5f612caa835f01835f1b612fe0565b5f1c905092915050565b5f80836001015f8481526020019081526020015f20541415905092915050565b5f80836001015f8481526020019081526020015f205490505f8114612dc5575f600182612d0191906141d9565b90505f6001865f0180549050612d1791906141d9565b9050818114612d7d575f865f018281548110612d3657612d35613837565b5b905f5260205f200154905080875f018481548110612d5757612d56613837565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480612d9057612d8f61420c565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050612dca565b5f9150505b92915050565b5f815f01805490509050919050565b505050565b505050565b5f825f018281548110612dff57612dfe613837565b5b905f5260205f200154905092915050565b5f805f80612e22865f01865f1b613058565b9150915081815f1c9350935050509250929050565b5f763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c175f526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760095ff590505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ee9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee090614283565b60405180910390fd5b92915050565b5f612f17845f01845f1b8473ffffffffffffffffffffffffffffffffffffffff165f1b6130a1565b90509392505050565b5f612f2b8383612cb4565b612f7d57825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050612f81565b5f90505b92915050565b6060815f01805480602002602001604051908101604052809291908181526020018280548015612fd457602002820191905f5260205f20905b815481526020019060010190808311612fc0575b50505050509050919050565b5f80836002015f8481526020019081526020015f205490505f801b8114158061300f575061300e84846130d8565b5b61304e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613045906142eb565b60405180910390fd5b8091505092915050565b5f805f846002015f8581526020019081526020015f205490505f801b81036130915761308485856130d8565b5f801b925092505061309a565b60018192509250505b9250929050565b5f81846002015f8581526020019081526020015f20819055506130cf83855f016130f690919063ffffffff16565b90509392505050565b5f6130ee82845f0161310b90919063ffffffff16565b905092915050565b5f613103835f0183612f20565b905092915050565b5f613118835f0183612cb4565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61317b82613135565b810181811067ffffffffffffffff8211171561319a57613199613145565b5b80604052505050565b5f6131ac613120565b90506131b88282613172565b919050565b5f67ffffffffffffffff8211156131d7576131d6613145565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613215826131ec565b9050919050565b6132258161320b565b811461322f575f80fd5b50565b5f813590506132408161321c565b92915050565b5f613258613253846131bd565b6131a3565b9050808382526020820190506020840283018581111561327b5761327a6131e8565b5b835b818110156132a457806132908882613232565b84526020840193505060208101905061327d565b5050509392505050565b5f82601f8301126132c2576132c1613131565b5b81356132d2848260208601613246565b91505092915050565b5f80604083850312156132f1576132f0613129565b5b5f83013567ffffffffffffffff81111561330e5761330d61312d565b5b61331a858286016132ae565b925050602083013567ffffffffffffffff81111561333b5761333a61312d565b5b613347858286016132ae565b9150509250929050565b5f806040838503121561336757613366613129565b5b5f61337485828601613232565b925050602061338585828601613232565b9150509250929050565b5f819050919050565b6133a18161338f565b82525050565b5f6020820190506133ba5f830184613398565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f6133f2826133c0565b6133fc81856133ca565b935061340c8185602086016133da565b61341581613135565b840191505092915050565b5f6020820190508181035f83015261343881846133e8565b905092915050565b6134498161338f565b8114613453575f80fd5b50565b5f8135905061346481613440565b92915050565b5f80604083850312156134805761347f613129565b5b5f61348d85828601613232565b925050602061349e85828601613456565b9150509250929050565b5f8115159050919050565b6134bc816134a8565b82525050565b5f6020820190506134d55f8301846134b3565b92915050565b5f602082840312156134f0576134ef613129565b5b5f6134fd84828501613232565b91505092915050565b5f805f6060848603121561351d5761351c613129565b5b5f61352a86828701613232565b935050602061353b86828701613232565b925050604061354c86828701613456565b9150509250925092565b5f60ff82169050919050565b61356b81613556565b82525050565b5f6020820190506135845f830184613562565b92915050565b5f6020828403121561359f5761359e613129565b5b5f6135ac84828501613456565b91505092915050565b6135be8161320b565b82525050565b5f6020820190506135d75f8301846135b5565b92915050565b5f602082840312156135f2576135f1613129565b5b5f82013567ffffffffffffffff81111561360f5761360e61312d565b5b61361b848285016132ae565b91505092915050565b5f805f6060848603121561363b5761363a613129565b5b5f61364886828701613232565b935050602061365986828701613456565b925050604084013567ffffffffffffffff81111561367a5761367961312d565b5b613686868287016132ae565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136c28161320b565b82525050565b5f6136d383836136b9565b60208301905092915050565b5f602082019050919050565b5f6136f582613690565b6136ff818561369a565b935061370a836136aa565b805f5b8381101561373a57815161372188826136c8565b975061372c836136df565b92505060018101905061370d565b5085935050505092915050565b5f6020820190508181035f83015261375f81846136eb565b905092915050565b7f4e6f207265656e7472616e6379000000000000000000000000000000000000005f82015250565b5f61379b600d836133ca565b91506137a682613767565b602082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f417267756d656e74206d69736d617463680000000000000000000000000000005f82015250565b5f6138036011836133ca565b915061380e826137cf565b602082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806138a857607f821691505b6020821081036138bb576138ba613864565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6138f88261338f565b91506139038361338f565b925082820190508082111561391b5761391a6138c1565b5b92915050565b7f496e76616c696420746f6b656e207175616e74697479000000000000000000005f82015250565b5f6139556016836133ca565b915061396082613921565b602082019050919050565b5f6020820190508181035f83015261398281613949565b9050919050565b5f60408201905061399c5f8301856135b5565b6139a96020830184613398565b9392505050565b5f815190506139be81613440565b92915050565b5f602082840312156139d9576139d8613129565b5b5f6139e6848285016139b0565b91505092915050565b7f496e76616c696420746f6b656e000000000000000000000000000000000000005f82015250565b5f613a23600d836133ca565b9150613a2e826139ef565b602082019050919050565b5f6020820190508181035f830152613a5081613a17565b9050919050565b5f606082019050613a6a5f8301866135b5565b613a7760208301856135b5565b613a846040830184613398565b949350505050565b613a95816134a8565b8114613a9f575f80fd5b50565b5f81519050613ab081613a8c565b92915050565b5f60208284031215613acb57613aca613129565b5b5f613ad884828501613aa2565b91505092915050565b7f556e61626c6520746f2072657374616b6520746f2070726f76696465642061705f8201527f7000000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b3b6021836133ca565b9150613b4682613ae1565b604082019050919050565b5f6020820190508181035f830152613b6881613b2f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613bc96025836133ca565b9150613bd482613b6f565b604082019050919050565b5f6020820190508181035f830152613bf681613bbd565b9050919050565b5f81905092915050565b50565b5f613c155f83613bfd565b9150613c2082613c07565b5f82019050919050565b5f613c3482613c0a565b9150819050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f613c72600f836133ca565b9150613c7d82613c3e565b602082019050919050565b5f6020820190508181035f830152613c9f81613c66565b9050919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b613ceb613ce682613ca6565b613cd1565b82525050565b5f81519050919050565b5f613d0582613cf1565b613d0f8185613bfd565b9350613d1f8185602086016133da565b80840191505092915050565b5f613d368285613cda565b600482019150613d468284613cfb565b91508190509392505050565b5f613d5d8284613cfb565b915081905092915050565b5f604082019050613d7b5f830185613398565b613d8860208301846134b3565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613de96024836133ca565b9150613df482613d8f565b604082019050919050565b5f6020820190508181035f830152613e1681613ddd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613e776022836133ca565b9150613e8282613e1d565b604082019050919050565b5f6020820190508181035f830152613ea481613e6b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f613edf601d836133ca565b9150613eea82613eab565b602082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d6025836133ca565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613ffb6023836133ca565b915061400682613fa1565b604082019050919050565b5f6020820190508181035f83015261402881613fef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6140896026836133ca565b91506140948261402f565b604082019050919050565b5f6020820190508181035f8301526140b68161407d565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141176021836133ca565b9150614122826140bd565b604082019050919050565b5f6020820190508181035f8301526141448161410b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141a56022836133ca565b91506141b08261414b565b604082019050919050565b5f6020820190508181035f8301526141d281614199565b9050919050565b5f6141e38261338f565b91506141ee8361338f565b9250828203905081811115614206576142056138c1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f455243313136373a2063726561746532206661696c65640000000000000000005f82015250565b5f61426d6017836133ca565b915061427882614239565b602082019050919050565b5f6020820190508181035f83015261429a81614261565b9050919050565b7f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900005f82015250565b5f6142d5601e836133ca565b91506142e0826142a1565b602082019050919050565b5f6020820190508181035f830152614302816142c9565b905091905056fea2646970667358221220eda651f6d7bcfc1d31af6b36ea54d258bf844caf445040aaaf1651774ff1f03864736f6c63430008190033608060405234801561000f575f80fd5b5060405180602001604052805f81525060405180602001604052805f815250816003908161003d91906102cf565b50806004908161004d91906102cf565b5050503360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061039e565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061011057607f821691505b602082108103610123576101226100cc565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261014a565b61018f868361014a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6101d36101ce6101c9846101a7565b6101b0565b6101a7565b9050919050565b5f819050919050565b6101ec836101b9565b6102006101f8826101da565b848454610156565b825550505050565b5f90565b610214610208565b61021f8184846101e3565b505050565b5b81811015610242576102375f8261020c565b600181019050610225565b5050565b601f8211156102875761025881610129565b6102618461013b565b81016020851015610270578190505b61028461027c8561013b565b830182610224565b50505b505050565b5f82821c905092915050565b5f6102a75f198460080261028c565b1980831691505092915050565b5f6102bf8383610298565b9150826002028217905092915050565b6102d882610095565b67ffffffffffffffff8111156102f1576102f061009f565b5b6102fb82546100f9565b610306828285610246565b5f60209050601f831160018114610337575f8415610325578287015190505b61032f85826102b4565b865550610396565b601f19841661034586610129565b5f5b8281101561036c57848901518255600182019150602085019450602081019050610347565b868310156103895784890151610385601f891682610298565b8355505b6001600288020188555050505b505050505050565b6123eb806103ab5f395ff3fe608060405234801561000f575f80fd5b50600436106100fe575f3560e01c806370a0823111610095578063a457c2d711610064578063a457c2d7146102fa578063a9059cbb1461032a578063c4d66de81461035a578063dd62ed3e14610376576100fe565b806370a082311461024c57806395d89b411461027c578063981b24d01461029a5780639dc29fac146102ca576100fe565b8063313ce567116100d1578063313ce5671461019e57806339509351146101bc57806340c10f19146101ec5780634ee2cd7e1461021c576100fe565b806306fdde0314610102578063095ea7b31461012057806318160ddd1461015057806323b872dd1461016e575b5f80fd5b61010a6103a6565b60405161011791906116bf565b60405180910390f35b61013a6004803603810190610135919061177d565b61045d565b60405161014791906117d5565b60405180910390f35b61015861047f565b60405161016591906117fd565b60405180910390f35b61018860048036038101906101839190611816565b610488565b60405161019591906117d5565b60405180910390f35b6101a66104b6565b6040516101b39190611881565b60405180910390f35b6101d660048036038101906101d1919061177d565b61054a565b6040516101e391906117d5565b60405180910390f35b6102066004803603810190610201919061177d565b610580565b60405161021391906117fd565b60405180910390f35b6102366004803603810190610231919061177d565b61062a565b60405161024391906117fd565b60405180910390f35b6102666004803603810190610261919061189a565b610696565b60405161027391906117fd565b60405180910390f35b6102846106db565b60405161029191906116bf565b60405180910390f35b6102b460048036038101906102af91906118c5565b610792565b6040516102c191906117fd565b60405180910390f35b6102e460048036038101906102df919061177d565b6107c1565b6040516102f191906117fd565b60405180910390f35b610314600480360381019061030f919061177d565b61086b565b60405161032191906117d5565b60405180910390f35b610344600480360381019061033f919061177d565b6108e0565b60405161035191906117d5565b60405180910390f35b610374600480360381019061036f919061189a565b610902565b005b610390600480360381019061038b91906118f0565b610a14565b60405161039d91906117fd565b60405180910390f35b6060600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610411573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906104399190611a4c565b6040516020016104499190611af3565b604051602081830303815290604052905090565b5f80610467610a96565b9050610474818585610a9d565b600191505092915050565b5f600254905090565b5f80610492610a96565b905061049f858285610c60565b6104aa858585610ceb565b60019150509392505050565b5f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610521573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105459190611b42565b905090565b5f80610554610a96565b90506105758185856105668589610a14565b6105709190611b9a565b610a9d565b600191505092915050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060790611c17565b60405180910390fd5b61061a8383610f57565b61062261047f565b905092915050565b5f805f6106738460055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206110a5565b915091508161068a5761068585610696565b61068c565b805b9250505092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6060600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa158015610746573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061076e9190611a4c565b60405160200161077e9190611c5b565b604051602081830303815290604052905090565b5f805f6107a08460066110a5565b91509150816107b6576107b161047f565b6107b8565b805b92505050919050565b5f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890611c17565b60405180910390fd5b61085b8383611192565b61086361047f565b905092915050565b5f80610875610a96565b90505f6108828286610a14565b9050838110156108c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108be90611cf0565b60405180910390fd5b6108d48286868403610a9d565b60019250505092915050565b5f806108ea610a96565b90506108f7818585610ceb565b600191505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098890611d58565b60405180910390fd5b3360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290611de6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7090611e74565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c5391906117fd565b60405180910390a3505050565b5f610c6b8484610a14565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ce55781811015610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce90611edc565b60405180910390fd5b610ce48484848403610a9d565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5090611f6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90611ff8565b60405180910390fd5b610dd2838383611355565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4c90612086565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f3e91906117fd565b60405180910390a3610f5184848461140b565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc906120ee565b60405180910390fd5b610fd05f8383611355565b8060025f828254610fe19190611b9a565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161108e91906117fd565b60405180910390a36110a15f838361140b565b5050565b5f805f84116110e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e090612156565b60405180910390fd5b6110f1611410565b841115611133576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112a906121be565b60405180910390fd5b5f61114985855f0161142090919063ffffffff16565b9050835f01805490508103611164575f80925092505061118b565b600184600101828154811061117c5761117b6121dc565b5b905f5260205f20015492509250505b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612279565b60405180910390fd5b61120b825f83611355565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561128e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128590612307565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161133d91906117fd565b60405180910390a3611350835f8461140b565b505050565b6113608383836114d2565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a95761139c826114d7565b6113a4611528565b611406565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113f2576113e5836114d7565b6113ed611528565b611405565b6113fb836114d7565b611404826114d7565b5b5b505050565b505050565b5f61141b600861153c565b905090565b5f80838054905003611434575f90506114cc565b5f80848054905090505b80821015611485575f6114518383611548565b90508461145e878361156d565b5f0154111561146f5780915061147f565b60018161147c9190611b9a565b92505b5061143e565b5f821180156114ab5750836114a6866001856114a19190612325565b61156d565b5f0154145b156114c6576001826114bd9190612325565b925050506114cc565b81925050505b92915050565b505050565b61152560055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2061152083610696565b61158c565b50565b61153a600661153561047f565b61158c565b565b5f815f01549050919050565b5f60028284186115589190612385565b8284166115659190611b9a565b905092915050565b5f80835f528260205f20019050611583816115fe565b91505092915050565b5f611595611410565b9050806115a3845f01611607565b10156115f957825f0181908060018154018082558091505060019003905f5260205f20015f90919091909150558260010182908060018154018082558091505060019003905f5260205f20015f90919091909150555b505050565b5f819050919050565b5f8082805490500361161b575f905061164a565b816001838054905061162d9190612325565b8154811061163e5761163d6121dc565b5b905f5260205f20015490505b919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6116918261164f565b61169b8185611659565b93506116ab818560208601611669565b6116b481611677565b840191505092915050565b5f6020820190508181035f8301526116d78184611687565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611719826116f0565b9050919050565b6117298161170f565b8114611733575f80fd5b50565b5f8135905061174481611720565b92915050565b5f819050919050565b61175c8161174a565b8114611766575f80fd5b50565b5f8135905061177781611753565b92915050565b5f8060408385031215611793576117926116e8565b5b5f6117a085828601611736565b92505060206117b185828601611769565b9150509250929050565b5f8115159050919050565b6117cf816117bb565b82525050565b5f6020820190506117e85f8301846117c6565b92915050565b6117f78161174a565b82525050565b5f6020820190506118105f8301846117ee565b92915050565b5f805f6060848603121561182d5761182c6116e8565b5b5f61183a86828701611736565b935050602061184b86828701611736565b925050604061185c86828701611769565b9150509250925092565b5f60ff82169050919050565b61187b81611866565b82525050565b5f6020820190506118945f830184611872565b92915050565b5f602082840312156118af576118ae6116e8565b5b5f6118bc84828501611736565b91505092915050565b5f602082840312156118da576118d96116e8565b5b5f6118e784828501611769565b91505092915050565b5f8060408385031215611906576119056116e8565b5b5f61191385828601611736565b925050602061192485828601611736565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61196c82611677565b810181811067ffffffffffffffff8211171561198b5761198a611936565b5b80604052505050565b5f61199d6116df565b90506119a98282611963565b919050565b5f67ffffffffffffffff8211156119c8576119c7611936565b5b6119d182611677565b9050602081019050919050565b5f6119f06119eb846119ae565b611994565b905082815260208101848484011115611a0c57611a0b611932565b5b611a17848285611669565b509392505050565b5f82601f830112611a3357611a3261192e565b5b8151611a438482602086016119de565b91505092915050565b5f60208284031215611a6157611a606116e8565b5b5f82015167ffffffffffffffff811115611a7e57611a7d6116ec565b5b611a8a84828501611a1f565b91505092915050565b7f5265626173652000000000000000000000000000000000000000000000000000815250565b5f81905092915050565b5f611acd8261164f565b611ad78185611ab9565b9350611ae7818560208601611669565b80840191505092915050565b5f611afd82611a93565b600782019150611b0d8284611ac3565b915081905092915050565b611b2181611866565b8114611b2b575f80fd5b50565b5f81519050611b3c81611b18565b92915050565b5f60208284031215611b5757611b566116e8565b5b5f611b6484828501611b2e565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ba48261174a565b9150611baf8361174a565b9250828201905080821115611bc757611bc6611b6d565b5b92915050565b7f4f6e6c792063616c6c61626c65206279206465706c6f796572000000000000005f82015250565b5f611c01601983611659565b9150611c0c82611bcd565b602082019050919050565b5f6020820190508181035f830152611c2e81611bf5565b9050919050565b7f7265000000000000000000000000000000000000000000000000000000000000815250565b5f611c6582611c35565b600282019150611c758284611ac3565b915081905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611cda602583611659565b9150611ce582611c80565b604082019050919050565b5f6020820190508181035f830152611d0781611cce565b9050919050565b7f496e697469616c697a65640000000000000000000000000000000000000000005f82015250565b5f611d42600b83611659565b9150611d4d82611d0e565b602082019050919050565b5f6020820190508181035f830152611d6f81611d36565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611dd0602483611659565b9150611ddb82611d76565b604082019050919050565b5f6020820190508181035f830152611dfd81611dc4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611e5e602283611659565b9150611e6982611e04565b604082019050919050565b5f6020820190508181035f830152611e8b81611e52565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611ec6601d83611659565b9150611ed182611e92565b602082019050919050565b5f6020820190508181035f830152611ef381611eba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f54602583611659565b9150611f5f82611efa565b604082019050919050565b5f6020820190508181035f830152611f8181611f48565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f611fe2602383611659565b9150611fed82611f88565b604082019050919050565b5f6020820190508181035f83015261200f81611fd6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612070602683611659565b915061207b82612016565b604082019050919050565b5f6020820190508181035f83015261209d81612064565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6120d8601f83611659565b91506120e3826120a4565b602082019050919050565b5f6020820190508181035f830152612105816120cc565b9050919050565b7f4552433230536e617073686f743a2069642069732030000000000000000000005f82015250565b5f612140601683611659565b915061214b8261210c565b602082019050919050565b5f6020820190508181035f83015261216d81612134565b9050919050565b7f4552433230536e617073686f743a206e6f6e6578697374656e742069640000005f82015250565b5f6121a8601d83611659565b91506121b382612174565b602082019050919050565b5f6020820190508181035f8301526121d58161219c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612263602183611659565b915061226e82612209565b604082019050919050565b5f6020820190508181035f83015261229081612257565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6122f1602283611659565b91506122fc82612297565b604082019050919050565b5f6020820190508181035f83015261231e816122e5565b9050919050565b5f61232f8261174a565b915061233a8361174a565b925082820390508181111561235257612351611b6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61238f8261174a565b915061239a8361174a565b9250826123aa576123a9612358565b5b82820490509291505056fea2646970667358221220fa5eb64bb20ec063090a55e04ad7d18ed44f5cb2aa111dd2e473827b02d4527064736f6c63430008190033
Loading