60806040526003805534801562000014575f80fd5b50604051620025fd380380620025fd83398181016040528101906200003a9190620002c2565b835f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508360028190555082600790816200009391906200059d565b508060099081620000a591906200059d565b508160085f6101000a81548160ff021916908360ff1602179055505050505062000681565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b620000ef81620000db565b8114620000fa575f80fd5b50565b5f815190506200010d81620000e4565b92915050565b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b62000163826200011b565b810181811067ffffffffffffffff821117156200018557620001846200012b565b5b80604052505050565b5f62000199620000ca565b9050620001a7828262000158565b919050565b5f67ffffffffffffffff821115620001c957620001c86200012b565b5b620001d4826200011b565b9050602081019050919050565b5f5b8381101562000200578082015181840152602081019050620001e3565b5f8484015250505050565b5f620002216200021b84620001ac565b6200018e565b90508281526020810184848401111562000240576200023f62000117565b5b6200024d848285620001e1565b509392505050565b5f82601f8301126200026c576200026b62000113565b5b81516200027e8482602086016200020b565b91505092915050565b5f60ff82169050919050565b6200029e8162000287565b8114620002a9575f80fd5b50565b5f81519050620002bc8162000293565b92915050565b5f805f8060808587031215620002dd57620002dc620000d3565b5b5f620002ec87828801620000fd565b945050602085015167ffffffffffffffff81111562000310576200030f620000d7565b5b6200031e8782880162000255565b93505060406200033187828801620002ac565b925050606085015167ffffffffffffffff811115620003555762000354620000d7565b5b620003638782880162000255565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620003be57607f821691505b602082108103620003d457620003d362000379565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003fb565b620004448683620003fb565b95508019841693508086168417925050509392505050565b5f819050919050565b5f620004856200047f6200047984620000db565b6200045c565b620000db565b9050919050565b5f819050919050565b620004a08362000465565b620004b8620004af826200048c565b84845462000407565b825550505050565b5f90565b620004ce620004c0565b620004db81848462000495565b505050565b5b818110156200050257620004f65f82620004c4565b600181019050620004e1565b5050565b601f82111562000551576200051b81620003da565b6200052684620003ec565b8101602085101562000536578190505b6200054e6200054585620003ec565b830182620004e0565b50505b505050565b5f82821c905092915050565b5f620005735f198460080262000556565b1980831691505092915050565b5f6200058d838362000562565b9150826002028217905092915050565b620005a8826200036f565b67ffffffffffffffff811115620005c457620005c36200012b565b5b620005d08254620003a6565b620005dd82828562000506565b5f60209050601f83116001811462000613575f8415620005fe578287015190505b6200060a858262000580565b86555062000679565b601f1984166200062386620003da565b5f5b828110156200064c5784890151825560018201915060208501945060208101905062000625565b868310156200066c578489015162000668601f89168262000562565b8355505b6001600288020188555050505b505050505050565b611f6e806200068f5f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c806357880e3c116100a057806395d89b411161006f57806395d89b411461031c578063a079a8241461033a578063a9059cbb14610359578063dd62ed3e14610389578063e4fc6b6d146103b957610114565b806357880e3c1461026e5780635c6581651461028c57806364c7c370146102bc57806370a08231146102ec57610114565b806323b872dd116100e757806323b872dd146101b4578063262330b4146101e457806327e235e314610202578063313ce567146102325780633240f3c71461025057610114565b806306fdde0314610118578063095ea7b31461013657806316ad42ad1461016657806318160ddd14610196575b5f80fd5b6101206103c3565b60405161012d91906116f0565b60405180910390f35b610150600480360381019061014b91906117a1565b61044f565b60405161015d91906117f9565b60405180910390f35b610180600480360381019061017b9190611812565b61053c565b60405161018d919061184c565b60405180910390f35b61019e610577565b6040516101ab9190611874565b60405180910390f35b6101ce60048036038101906101c9919061188d565b61057d565b6040516101db91906117f9565b60405180910390f35b6101ec610a99565b6040516101f991906117f9565b60405180910390f35b61021c600480360381019061021791906118dd565b610ac8565b6040516102299190611874565b60405180910390f35b61023a610adc565b6040516102479190611923565b60405180910390f35b610258610aee565b604051610265919061184c565b60405180910390f35b610276610af5565b6040516102839190611874565b60405180910390f35b6102a660048036038101906102a1919061193c565b610afb565b6040516102b39190611874565b60405180910390f35b6102d660048036038101906102d191906118dd565b610b1b565b6040516102e39190611874565b60405180910390f35b610306600480360381019061030191906118dd565b610b61565b6040516103139190611874565b60405180910390f35b610324610ba6565b60405161033191906116f0565b60405180910390f35b610342610c32565b604051610350929190611ae8565b60405180910390f35b610373600480360381019061036e91906117a1565b610dd2565b60405161038091906117f9565b60405180910390f35b6103a3600480360381019061039e919061193c565b6111ad565b6040516103b09190611874565b60405180910390f35b6103c161122f565b005b600780546103d090611b4a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fc90611b4a565b80156104475780601f1061041e57610100808354040283529160200191610447565b820191905f5260205f20905b81548152906001019060200180831161042a57829003601f168201915b505050505081565b5f8160015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161052a9190611874565b60405180910390a36001905092915050565b6004818154811061054b575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050825f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101580156106465750828110155b610685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067c90611bea565b60405180910390fd5b61068d610a99565b505f805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f805f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490506001151561071a610a99565b15151461083e575f6064600354876107329190611c35565b61073c9190611ca3565b90505f818761074b9190611cd3565b905086846107599190611cd3565b5f808b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080836107a59190611d06565b5f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108309190611d06565b9250508190555050506108e3565b845f808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108899190611cd3565b92505081905550845f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108db9190611d06565b925050819055505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83101561099a578460015f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109929190611cd3565b925050819055505b6109e0875f808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d4565b610a26865f808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d4565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610a839190611874565b60405180910390a3600193505050509392505050565b5f803373ffffffffffffffffffffffffffffffffffffffff163b14610ac15760019050610ac5565b5f90505b90565b5f602052805f5260405f205f915090505481565b60085f9054906101000a900460ff1681565b5f30905090565b60035481565b6001602052815f5260405f20602052805f5260405f205f91509150505481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60098054610bb390611b4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdf90611b4a565b8015610c2a5780601f10610c0157610100808354040283529160200191610c2a565b820191905f5260205f20905b815481529060010190602001808311610c0d57829003601f168201915b505050505081565b6060805f60048054905067ffffffffffffffff811115610c5557610c54611d39565b5b604051908082528060200260200182016040528015610c835781602001602082028036833780820191505090505b5090505f5b600480549050811015610d405760055f60048381548110610cac57610cab611d66565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054828281518110610d2157610d20611d66565b5b6020026020010181815250508080610d3890611d93565b915050610c88565b5060048181805480602002602001604051908101604052809291908181526020018280548015610dc257602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610d79575b5050505050915092509250509091565b5f815f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4990611e4a565b60405180910390fd5b610e5a610a99565b505f805f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f805f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905060011515610ee7610a99565b15151461100b575f606460035486610eff9190611c35565b610f099190611ca3565b90505f8186610f189190611cd3565b90508584610f269190611cd3565b5f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508083610f729190611d06565b5f808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ffd9190611d06565b9250508190555050506110b0565b835f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110569190611cd3565b92505081905550835f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110a89190611d06565b925050819055505b6110f6335f803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d4565b61113c855f808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114d4565b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111999190611874565b60405180910390a360019250505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f81116112b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a890611eb2565b60405180910390fd5b5f816002546112c09190611cd3565b90505f8111611304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fb90611f1a565b60405180910390fd5b5f8061130e610c32565b915091505f5b82518110156114cd575f83828151811061133157611330611d66565b5b602002602001015190505f83838151811061134f5761134e611d66565b5b602002602001015190503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113935750506114ba565b5f8688836113a19190611c35565b6113ab9190611ca3565b9050805f803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546113f89190611cd3565b92505081905550805f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461144a9190611d06565b925050819055508273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114ae9190611874565b60405180910390a35050505b80806114c590611d93565b915050611314565b5050505050565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561156a578060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611662565b600482908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561169d578082015181840152602081019050611682565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6116c282611666565b6116cc8185611670565b93506116dc818560208601611680565b6116e5816116a8565b840191505092915050565b5f6020820190508181035f83015261170881846116b8565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61173d82611714565b9050919050565b61174d81611733565b8114611757575f80fd5b50565b5f8135905061176881611744565b92915050565b5f819050919050565b6117808161176e565b811461178a575f80fd5b50565b5f8135905061179b81611777565b92915050565b5f80604083850312156117b7576117b6611710565b5b5f6117c48582860161175a565b92505060206117d58582860161178d565b9150509250929050565b5f8115159050919050565b6117f3816117df565b82525050565b5f60208201905061180c5f8301846117ea565b92915050565b5f6020828403121561182757611826611710565b5b5f6118348482850161178d565b91505092915050565b61184681611733565b82525050565b5f60208201905061185f5f83018461183d565b92915050565b61186e8161176e565b82525050565b5f6020820190506118875f830184611865565b92915050565b5f805f606084860312156118a4576118a3611710565b5b5f6118b18682870161175a565b93505060206118c28682870161175a565b92505060406118d38682870161178d565b9150509250925092565b5f602082840312156118f2576118f1611710565b5b5f6118ff8482850161175a565b91505092915050565b5f60ff82169050919050565b61191d81611908565b82525050565b5f6020820190506119365f830184611914565b92915050565b5f806040838503121561195257611951611710565b5b5f61195f8582860161175a565b92505060206119708582860161175a565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6119ac81611733565b82525050565b5f6119bd83836119a3565b60208301905092915050565b5f602082019050919050565b5f6119df8261197a565b6119e98185611984565b93506119f483611994565b805f5b83811015611a24578151611a0b88826119b2565b9750611a16836119c9565b9250506001810190506119f7565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611a638161176e565b82525050565b5f611a748383611a5a565b60208301905092915050565b5f602082019050919050565b5f611a9682611a31565b611aa08185611a3b565b9350611aab83611a4b565b805f5b83811015611adb578151611ac28882611a69565b9750611acd83611a80565b925050600181019050611aae565b5085935050505092915050565b5f6040820190508181035f830152611b0081856119d5565b90508181036020830152611b148184611a8c565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b6157607f821691505b602082108103611b7457611b73611b1d565b5b50919050565b7f746f6b656e2062616c616e6365206f7220616c6c6f77616e6365206973206c6f5f8201527f776572207468616e20616d6f756e742072657175657374656400000000000000602082015250565b5f611bd4603983611670565b9150611bdf82611b7a565b604082019050919050565b5f6020820190508181035f830152611c0181611bc8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c3f8261176e565b9150611c4a8361176e565b9250828202611c588161176e565b91508282048414831517611c6f57611c6e611c08565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f611cad8261176e565b9150611cb88361176e565b925082611cc857611cc7611c76565b5b828204905092915050565b5f611cdd8261176e565b9150611ce88361176e565b9250828203905081811115611d0057611cff611c08565b5b92915050565b5f611d108261176e565b9150611d1b8361176e565b9250828201905080821115611d3357611d32611c08565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f611d9d8261176e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611dcf57611dce611c08565b5b600182019050919050565b7f45524332303a204e6f7420656e6f7567682062616c616e636520666f722074725f8201527f616e736665720000000000000000000000000000000000000000000000000000602082015250565b5f611e34602683611670565b9150611e3f82611dda565b604082019050919050565b5f6020820190508181035f830152611e6181611e28565b9050919050565b7f4e6f20746f6b656e7320746f20646973747269627574650000000000000000005f82015250565b5f611e9c601783611670565b9150611ea782611e68565b602082019050919050565b5f6020820190508181035f830152611ec981611e90565b9050919050565b7f4e6f20686f6c6465727320746f206469737472696275746520746f00000000005f82015250565b5f611f04601b83611670565b9150611f0f82611ed0565b602082019050919050565b5f6020820190508181035f830152611f3181611ef8565b905091905056fea2646970667358221220690fe66f1db963470384171352cbfa2dc6a430c03fed6118f6c628a0189c592b64736f6c6343000814003300000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003617373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036173730000000000000000000000000000000000000000000000000000000000