0x6080604052600436106101445760003560e01c80638129fc1c116100b6578063aa4bde281161006f578063aa4bde2814610442578063c9567bf91461046d578063dd62ed3e14610484578063f1f5cd91146104c1578063f318bbfe146104ec578063f8d982b2146105155761014b565b80638129fc1c146103465780638da5cb5b1461035d57806395d89b41146103885780639686d322146103b35780639c0db5f3146103dc578063a9059cbb146104055761014b565b806323b872dd1161010857806323b872dd146102355780633049b58014610272578063313ce5671461029b57806370a08231146102c6578063715018a614610303578063743781321461031a5761014b565b806306fdde0314610150578063095ea7b31461017b57806309fb5639146101b85780630b78f9c0146101e157806318160ddd1461020a5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053e565b6040516101729190612331565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906123f1565b61057b565b6040516101af919061244c565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612493565b610592565b005b3480156101ed57600080fd5b50610208600480360381019061020391906124c0565b610607565b005b34801561021657600080fd5b5061021f610707565b60405161022c919061250f565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061252a565b61072b565b604051610269919061244c565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061257d565b610894565b005b3480156102a757600080fd5b506102b0610945565b6040516102bd91906125c6565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906125e1565b61094e565b6040516102fa919061250f565b60405180910390f35b34801561030f57600080fd5b50610318610997565b005b34801561032657600080fd5b5061032f610ae3565b60405161033d92919061260e565b60405180910390f35b34801561035257600080fd5b5061035b610af5565b005b34801561036957600080fd5b50610372610ba8565b60405161037f9190612646565b60405180910390f35b34801561039457600080fd5b5061039d610bd1565b6040516103aa9190612331565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612661565b610c0e565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190612706565b610d2f565b005b34801561041157600080fd5b5061042c600480360381019061042791906123f1565b610fb4565b604051610439919061244c565b60405180910390f35b34801561044e57600080fd5b50610457610fcb565b604051610464919061250f565b60405180910390f35b34801561047957600080fd5b50610482610feb565b005b34801561049057600080fd5b506104ab60048036038101906104a69190612766565b61110d565b6040516104b8919061250f565b60405180910390f35b3480156104cd57600080fd5b506104d6611194565b6040516104e3919061250f565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906127fc565b611199565b005b34801561052157600080fd5b5061053c6004803603810190610537919061257d565b61128b565b005b60606040518060400160405280600781526020017f5269636861726400000000000000000000000000000000000000000000000000815250905090565b6000610588338484611364565b6001905092915050565b7f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ea57600080fd5b80600960026101000a81548160ff02191690831515021790555050565b7f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065f57600080fd5b6007600001548211156106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e906128ce565b60405180910390fd5b6007600101548111156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906128ce565b60405180910390fd5b81600760000181905550806007600101819055505050565b60006009600a6107179190612a50565b633b9aca006107269190612a9b565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390612b4f565b60405180910390fd5b61087e843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108799190612b6f565b611364565b61088984848461152d565b600190509392505050565b7f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ec57600080fd5b6000811180156108fc5750600481105b61093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c15565b60405180910390fd5b8060068190555050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612c81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90612c81565b60405180910390fd5b6002600b6000815480929190610b9890612ca1565b9190505510610ba657600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f5269636861726400000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612c81565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd457600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c81565b60405180910390fd5b60005b83839050811015610fae577f0000000000000000000000003e20d19301fa860734a766c7d942b07cb81d3b0b73ffffffffffffffffffffffffffffffffffffffff16848483818110610e1557610e14612ce9565b5b9050602002016020810190610e2a91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eb55750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610e8757610e86612ce9565b5b9050602002016020810190610e9c91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f1457503073ffffffffffffffffffffffffffffffffffffffff16848483818110610ee657610ee5612ce9565b5b9050602002016020810190610efb91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614155b610f1d57600080fd5b8160036000868685818110610f3557610f34612ce9565b5b9050602002016020810190610f4a91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fa690612ca1565b915050610dc0565b50505050565b6000610fc133848461152d565b6001905092915050565b6009600a610fd99190612a50565b6301312d01610fe89190612a9b565b81565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090612c81565b60405180910390fd5b6002600b541480156110985750600960009054906101000a900460ff16155b6110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90612d64565b60405180910390fd5b43600a60008282546110e99190612d84565b925050819055506001600960006101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600181565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612c81565b60405180910390fd5b6002600b54108015611248575060026001600b546112459190612d84565b10155b61125557611254612db8565b5b600b600081548092919061126890612ca1565b919050555080600a600082825461127f9190612d84565b92505081905550505050565b7f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e357600080fd5b8060001080156112f4575060648111155b611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90612e59565b60405180910390fd5b600060646113403061094e565b8361134b9190612a9b565b6113559190612ea8565b905061136081611c7f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca90612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612fdd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611520919061250f565b60405180910390a3505050565b82600960009054906101000a900460ff168061159457507f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806115de5750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6115e757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d9061306f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613101565b60405180910390fd5b60008211611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90613193565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117579190612b6f565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117da5750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118265750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187e57507f0000000000000000000000003ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bbe57600960029054906101000a900460ff1680156118e95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a15760006119508585611f24565b905061195b81611f6a565b43600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b7f0000000000000000000000003e20d19301fa860734a766c7d942b07cb81d3b0b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a3c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ab4576009600a611a4f9190612a50565b6301312d01611a5e9190612a9b565b82611a688561094e565b611a729190612d84565b1115611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613225565b60405180910390fd5b5b6000611abf3061094e565b9050611acb8582612056565b15611ada57611ad981611c7f565b5b6000611ae6868561210a565b90506000811115611bbb578084611afd9190612b6f565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4e9190612d84565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb2919061250f565b60405180910390a35b50505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0d9190612d84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c71919061250f565b60405180910390a350505050565b6001600960016101000a81548160ff021916908315150217905550611ca381612222565b905080611cc430737a250d5630b4cf539739df2c5dacb4c659f2488d61110d565b1015611d0657611d0530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a611cf19190612a50565b633b9aca00611d009190612a9b565b611364565b5b6000600267ffffffffffffffff811115611d2357611d22613245565b5b604051908082528060200260200182016040528015611d515781602001602082028036833780820191505090505b5090503081600081518110611d6957611d68612ce9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611dd857611dd7612ce9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e68959493929190613377565b600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b5050505060004790506000811115611f0457733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f02573d6000803e3d6000fd5b505b50506000600960016101000a81548160ff02191690831515021790555050565b6000611f2f8361228e565b1580611f415750611f3f8261228e565b155b611f4a57600080fd5b611f538361228e565b15611f6057819050611f64565b8290505b92915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806120105750600143611fc19190612d84565b600654600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200e9190612d84565b105b905080612052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120499061341d565b60405180910390fd5b5050565b6000600960019054906101000a900460ff161580156120c157507f0000000000000000000000003e20d19301fa860734a766c7d942b07cb81d3b0b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e857506009600a6120d69190612a50565b6301312d016120e59190612a9b565b82115b8015612102575043600a5460016120ff9190612d84565b11155b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121665750600a544311155b1561218b57606460018361217a9190612a9b565b6121849190612ea8565b905061221c565b60646000600a5414612201577f0000000000000000000000003e20d19301fa860734a766c7d942b07cb81d3b0b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121f5576007600101546121fc565b6007600001545b612204565b60195b8361220f9190612a9b565b6122199190612ea8565b90505b92915050565b60006009600a6122329190612a50565b6301312d016122419190612a9b565b8211612269576009600a6122559190612a50565b6301312d016122649190612a9b565b612287565b6009600a6122779190612a50565b6301312d016122869190612a9b565b5b9050919050565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122db5780820151818401526020810190506122c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612303826122a1565b61230d81856122ac565b935061231d8185602086016122bd565b612326816122e7565b840191505092915050565b6000602082019050818103600083015261234b81846122f8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123888261235d565b9050919050565b6123988161237d565b81146123a357600080fd5b50565b6000813590506123b58161238f565b92915050565b6000819050919050565b6123ce816123bb565b81146123d957600080fd5b50565b6000813590506123eb816123c5565b92915050565b6000806040838503121561240857612407612353565b5b6000612416858286016123a6565b9250506020612427858286016123dc565b9150509250929050565b60008115159050919050565b61244681612431565b82525050565b6000602082019050612461600083018461243d565b92915050565b61247081612431565b811461247b57600080fd5b50565b60008135905061248d81612467565b92915050565b6000602082840312156124a9576124a8612353565b5b60006124b78482850161247e565b91505092915050565b600080604083850312156124d7576124d6612353565b5b60006124e5858286016123dc565b92505060206124f6858286016123dc565b9150509250929050565b612509816123bb565b82525050565b60006020820190506125246000830184612500565b92915050565b60008060006060848603121561254357612542612353565b5b6000612551868287016123a6565b9350506020612562868287016123a6565b9250506040612573868287016123dc565b9150509250925092565b60006020828403121561259357612592612353565b5b60006125a1848285016123dc565b91505092915050565b600060ff82169050919050565b6125c0816125aa565b82525050565b60006020820190506125db60008301846125b7565b92915050565b6000602082840312156125f7576125f6612353565b5b6000612605848285016123a6565b91505092915050565b60006040820190506126236000830185612500565b6126306020830184612500565b9392505050565b6126408161237d565b82525050565b600060208201905061265b6000830184612637565b92915050565b6000806040838503121561267857612677612353565b5b6000612686858286016123a6565b92505060206126978582860161247e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126c6576126c56126a1565b5b8235905067ffffffffffffffff8111156126e3576126e26126a6565b5b6020830191508360208202830111156126ff576126fe6126ab565b5b9250929050565b60008060006040848603121561271f5761271e612353565b5b600084013567ffffffffffffffff81111561273d5761273c612358565b5b612749868287016126b0565b9350935050602061275c8682870161247e565b9150509250925092565b6000806040838503121561277d5761277c612353565b5b600061278b858286016123a6565b925050602061279c858286016123a6565b9150509250929050565b60008083601f8401126127bc576127bb6126a1565b5b8235905067ffffffffffffffff8111156127d9576127d86126a6565b5b6020830191508360208202830111156127f5576127f46126ab565b5b9250929050565b60008060006040848603121561281557612814612353565b5b600084013567ffffffffffffffff81111561283357612832612358565b5b61283f868287016127a6565b93509350506020612852868287016123dc565b9150509250925092565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b60006128b86023836122ac565b91506128c38261285c565b604082019050919050565b600060208201905081810360008301526128e7816128ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612974578086048111156129505761294f6128ee565b5b600185161561295f5780820291505b808102905061296d8561291d565b9450612934565b94509492505050565b60008261298d5760019050612a49565b8161299b5760009050612a49565b81600181146129b157600281146129bb576129ea565b6001915050612a49565b60ff8411156129cd576129cc6128ee565b5b8360020a9150848211156129e4576129e36128ee565b5b50612a49565b5060208310610133831016604e8410600b8410161715612a1f5782820a905083811115612a1a57612a196128ee565b5b612a49565b612a2c848484600161292a565b92509050818404811115612a4357612a426128ee565b5b81810290505b9392505050565b6000612a5b826123bb565b9150612a66836125aa565b9250612a937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461297d565b905092915050565b6000612aa6826123bb565b9150612ab1836123bb565b9250828202612abf816123bb565b91508282048414831517612ad657612ad56128ee565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612b396028836122ac565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b6000612b7a826123bb565b9150612b85836123bb565b9250828203905081811115612b9d57612b9c6128ee565b5b92915050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000612bff603c836122ac565b9150612c0a82612ba3565b604082019050919050565b60006020820190508181036000830152612c2e81612bf2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c6b6020836122ac565b9150612c7682612c35565b602082019050919050565b60006020820190508181036000830152612c9a81612c5e565b9050919050565b6000612cac826123bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cde57612cdd6128ee565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612d4e601b836122ac565b9150612d5982612d18565b602082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b6000612d8f826123bb565b9150612d9a836123bb565b9250828201905080821115612db257612db16128ee565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160008201527f6e67652028302c3130305d207065726d69737369626c65000000000000000000602082015250565b6000612e436037836122ac565b9150612e4e82612de7565b604082019050919050565b60006020820190508181036000830152612e7281612e36565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eb3826123bb565b9150612ebe836123bb565b925082612ece57612ecd612e79565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f356024836122ac565b9150612f4082612ed9565b604082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc76022836122ac565b9150612fd282612f6b565b604082019050919050565b60006020820190508181036000830152612ff681612fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130596025836122ac565b915061306482612ffd565b604082019050919050565b600060208201905081810360008301526130888161304c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130eb6023836122ac565b91506130f68261308f565b604082019050919050565b6000602082019050818103600083015261311a816130de565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b600061317d6030836122ac565b915061318882613121565b604082019050919050565b600060208201905081810360008301526131ac81613170565b9050919050565b7f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60008201527f6e206f66206d61782077616c6c65740000000000000000000000000000000000602082015250565b600061320f602f836122ac565b915061321a826131b3565b604082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b60006132a361329e61329984613274565b61327e565b6123bb565b9050919050565b6132b381613288565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132ee8161237d565b82525050565b600061330083836132e5565b60208301905092915050565b6000602082019050919050565b6000613324826132b9565b61332e81856132c4565b9350613339836132d5565b8060005b8381101561336a57815161335188826132f4565b975061335c8361330c565b92505060018101905061333d565b5085935050505092915050565b600060a08201905061338c6000830188612500565b61339960208301876132aa565b81810360408301526133ab8186613319565b90506133ba6060830185612637565b6133c76080830184612500565b9695505050505050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613407601a836122ac565b9150613412826133d1565b602082019050919050565b60006020820190508181036000830152613436816133fa565b905091905056fea2646970667358221220350a5cd7e3579e40c6a4df308e1db746aa192e1d1325c79e29a4fc7c7457f60564736f6c63430008110033
0x60e060405260016006556040518060400160405280600581526020016023815250600760008201518160000155602082015181600101555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000098573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000be919062000514565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152506000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506001600960026101000a81548160ff0219169083151502179055503480156200018157600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000514565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620002e792919062000557565b6020604051808303816000875af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000514565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620003c891906200071e565b633b9aca00620003d991906200076f565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200047c91906200071e565b633b9aca006200048d91906200076f565b6040516200049c9190620007cb565b60405180910390a3620007e8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004dc82620004af565b9050919050565b620004ee81620004cf565b8114620004fa57600080fd5b50565b6000815190506200050e81620004e3565b92915050565b6000602082840312156200052d576200052c620004aa565b5b60006200053d84828501620004fd565b91505092915050565b6200055181620004cf565b82525050565b60006040820190506200056e600083018562000546565b6200057d602083018462000546565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200061257808604811115620005ea57620005e962000584565b5b6001851615620005fa5780820291505b80810290506200060a85620005b3565b9450620005ca565b94509492505050565b6000826200062d576001905062000700565b816200063d576000905062000700565b8160018114620006565760028114620006615762000697565b600191505062000700565b60ff84111562000676576200067562000584565b5b8360020a91508482111562000690576200068f62000584565b5b5062000700565b5060208310610133831016604e8410600b8410161715620006d15782820a905083811115620006cb57620006ca62000584565b5b62000700565b620006e08484846001620005c0565b92509050818404811115620006fa57620006f962000584565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072b8262000707565b9150620007388362000711565b9250620007677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200061b565b905092915050565b60006200077c8262000707565b9150620007898362000707565b9250828202620007998162000707565b91508282048414831517620007b357620007b262000584565b5b5092915050565b620007c58162000707565b82525050565b6000602082019050620007e26000830184620007ba565b92915050565b60805160a05160c051613473620008506000396000818161059401528181610609015281816108960152818161128d01528181611546015261182f015260008181610dcd015281816119a301528181612072015261219901526000611da501526134736000f3fe6080604052600436106101445760003560e01c80638129fc1c116100b6578063aa4bde281161006f578063aa4bde2814610442578063c9567bf91461046d578063dd62ed3e14610484578063f1f5cd91146104c1578063f318bbfe146104ec578063f8d982b2146105155761014b565b80638129fc1c146103465780638da5cb5b1461035d57806395d89b41146103885780639686d322146103b35780639c0db5f3146103dc578063a9059cbb146104055761014b565b806323b872dd1161010857806323b872dd146102355780633049b58014610272578063313ce5671461029b57806370a08231146102c6578063715018a614610303578063743781321461031a5761014b565b806306fdde0314610150578063095ea7b31461017b57806309fb5639146101b85780630b78f9c0146101e157806318160ddd1461020a5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053e565b6040516101729190612331565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906123f1565b61057b565b6040516101af919061244c565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da9190612493565b610592565b005b3480156101ed57600080fd5b50610208600480360381019061020391906124c0565b610607565b005b34801561021657600080fd5b5061021f610707565b60405161022c919061250f565b60405180910390f35b34801561024157600080fd5b5061025c6004803603810190610257919061252a565b61072b565b604051610269919061244c565b60405180910390f35b34801561027e57600080fd5b506102996004803603810190610294919061257d565b610894565b005b3480156102a757600080fd5b506102b0610945565b6040516102bd91906125c6565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906125e1565b61094e565b6040516102fa919061250f565b60405180910390f35b34801561030f57600080fd5b50610318610997565b005b34801561032657600080fd5b5061032f610ae3565b60405161033d92919061260e565b60405180910390f35b34801561035257600080fd5b5061035b610af5565b005b34801561036957600080fd5b50610372610ba8565b60405161037f9190612646565b60405180910390f35b34801561039457600080fd5b5061039d610bd1565b6040516103aa9190612331565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d59190612661565b610c0e565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190612706565b610d2f565b005b34801561041157600080fd5b5061042c600480360381019061042791906123f1565b610fb4565b604051610439919061244c565b60405180910390f35b34801561044e57600080fd5b50610457610fcb565b604051610464919061250f565b60405180910390f35b34801561047957600080fd5b50610482610feb565b005b34801561049057600080fd5b506104ab60048036038101906104a69190612766565b61110d565b6040516104b8919061250f565b60405180910390f35b3480156104cd57600080fd5b506104d6611194565b6040516104e3919061250f565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906127fc565b611199565b005b34801561052157600080fd5b5061053c6004803603810190610537919061257d565b61128b565b005b60606040518060400160405280600781526020017f5269636861726400000000000000000000000000000000000000000000000000815250905090565b6000610588338484611364565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ea57600080fd5b80600960026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065f57600080fd5b6007600001548211156106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e906128ce565b60405180910390fd5b6007600101548111156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906128ce565b60405180910390fd5b81600760000181905550806007600101819055505050565b60006009600a6107179190612a50565b633b9aca006107269190612a9b565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390612b4f565b60405180910390fd5b61087e843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108799190612b6f565b611364565b61088984848461152d565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ec57600080fd5b6000811180156108fc5750600481105b61093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c15565b60405180910390fd5b8060068190555050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612c81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90612c81565b60405180910390fd5b6002600b6000815480929190610b9890612ca1565b9190505510610ba657600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f5269636861726400000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612c81565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd457600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c81565b60405180910390fd5b60005b83839050811015610fae577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848483818110610e1557610e14612ce9565b5b9050602002016020810190610e2a91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eb55750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610e8757610e86612ce9565b5b9050602002016020810190610e9c91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f1457503073ffffffffffffffffffffffffffffffffffffffff16848483818110610ee657610ee5612ce9565b5b9050602002016020810190610efb91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1614155b610f1d57600080fd5b8160036000868685818110610f3557610f34612ce9565b5b9050602002016020810190610f4a91906125e1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fa690612ca1565b915050610dc0565b50505050565b6000610fc133848461152d565b6001905092915050565b6009600a610fd99190612a50565b6301312d01610fe89190612a9b565b81565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090612c81565b60405180910390fd5b6002600b541480156110985750600960009054906101000a900460ff16155b6110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90612d64565b60405180910390fd5b43600a60008282546110e99190612d84565b925050819055506001600960006101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600181565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612c81565b60405180910390fd5b6002600b54108015611248575060026001600b546112459190612d84565b10155b61125557611254612db8565b5b600b600081548092919061126890612ca1565b919050555080600a600082825461127f9190612d84565b92505081905550505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e357600080fd5b8060001080156112f4575060648111155b611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90612e59565b60405180910390fd5b600060646113403061094e565b8361134b9190612a9b565b6113559190612ea8565b905061136081611c7f565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca90612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612fdd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611520919061250f565b60405180910390a3505050565b82600960009054906101000a900460ff168061159457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806115de5750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6115e757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d9061306f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bc90613101565b60405180910390fd5b60008211611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90613193565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117579190612b6f565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117da5750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118265750733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bbe57600960029054906101000a900460ff1680156118e95750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a15760006119508585611f24565b905061195b81611f6a565b43600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a3c5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ab4576009600a611a4f9190612a50565b6301312d01611a5e9190612a9b565b82611a688561094e565b611a729190612d84565b1115611ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aaa90613225565b60405180910390fd5b5b6000611abf3061094e565b9050611acb8582612056565b15611ada57611ad981611c7f565b5b6000611ae6868561210a565b90506000811115611bbb578084611afd9190612b6f565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4e9190612d84565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb2919061250f565b60405180910390a35b50505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0d9190612d84565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c71919061250f565b60405180910390a350505050565b6001600960016101000a81548160ff021916908315150217905550611ca381612222565b905080611cc430737a250d5630b4cf539739df2c5dacb4c659f2488d61110d565b1015611d0657611d0530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a611cf19190612a50565b633b9aca00611d009190612a9b565b611364565b5b6000600267ffffffffffffffff811115611d2357611d22613245565b5b604051908082528060200260200182016040528015611d515781602001602082028036833780820191505090505b5090503081600081518110611d6957611d68612ce9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611dd857611dd7612ce9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e68959493929190613377565b600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b5050505060004790506000811115611f0457733ed50a39f68f3d1de6214e729570b0435801b54873ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f02573d6000803e3d6000fd5b505b50506000600960016101000a81548160ff02191690831515021790555050565b6000611f2f8361228e565b1580611f415750611f3f8261228e565b155b611f4a57600080fd5b611f538361228e565b15611f6057819050611f64565b8290505b92915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806120105750600143611fc19190612d84565b600654600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200e9190612d84565b105b905080612052576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120499061341d565b60405180910390fd5b5050565b6000600960019054906101000a900460ff161580156120c157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e857506009600a6120d69190612a50565b6301312d016120e59190612a9b565b82115b8015612102575043600a5460016120ff9190612d84565b11155b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121665750600a544311155b1561218b57606460018361217a9190612a9b565b6121849190612ea8565b905061221c565b60646000600a5414612201577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121f5576007600101546121fc565b6007600001545b612204565b60195b8361220f9190612a9b565b6122199190612ea8565b90505b92915050565b60006009600a6122329190612a50565b6301312d016122419190612a9b565b8211612269576009600a6122559190612a50565b6301312d016122649190612a9b565b612287565b6009600a6122779190612a50565b6301312d016122869190612a9b565b5b9050919050565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122db5780820151818401526020810190506122c0565b60008484015250505050565b6000601f19601f8301169050919050565b6000612303826122a1565b61230d81856122ac565b935061231d8185602086016122bd565b612326816122e7565b840191505092915050565b6000602082019050818103600083015261234b81846122f8565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123888261235d565b9050919050565b6123988161237d565b81146123a357600080fd5b50565b6000813590506123b58161238f565b92915050565b6000819050919050565b6123ce816123bb565b81146123d957600080fd5b50565b6000813590506123eb816123c5565b92915050565b6000806040838503121561240857612407612353565b5b6000612416858286016123a6565b9250506020612427858286016123dc565b9150509250929050565b60008115159050919050565b61244681612431565b82525050565b6000602082019050612461600083018461243d565b92915050565b61247081612431565b811461247b57600080fd5b50565b60008135905061248d81612467565b92915050565b6000602082840312156124a9576124a8612353565b5b60006124b78482850161247e565b91505092915050565b600080604083850312156124d7576124d6612353565b5b60006124e5858286016123dc565b92505060206124f6858286016123dc565b9150509250929050565b612509816123bb565b82525050565b60006020820190506125246000830184612500565b92915050565b60008060006060848603121561254357612542612353565b5b6000612551868287016123a6565b9350506020612562868287016123a6565b9250506040612573868287016123dc565b9150509250925092565b60006020828403121561259357612592612353565b5b60006125a1848285016123dc565b91505092915050565b600060ff82169050919050565b6125c0816125aa565b82525050565b60006020820190506125db60008301846125b7565b92915050565b6000602082840312156125f7576125f6612353565b5b6000612605848285016123a6565b91505092915050565b60006040820190506126236000830185612500565b6126306020830184612500565b9392505050565b6126408161237d565b82525050565b600060208201905061265b6000830184612637565b92915050565b6000806040838503121561267857612677612353565b5b6000612686858286016123a6565b92505060206126978582860161247e565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126c6576126c56126a1565b5b8235905067ffffffffffffffff8111156126e3576126e26126a6565b5b6020830191508360208202830111156126ff576126fe6126ab565b5b9250929050565b60008060006040848603121561271f5761271e612353565b5b600084013567ffffffffffffffff81111561273d5761273c612358565b5b612749868287016126b0565b9350935050602061275c8682870161247e565b9150509250925092565b6000806040838503121561277d5761277c612353565b5b600061278b858286016123a6565b925050602061279c858286016123a6565b9150509250929050565b60008083601f8401126127bc576127bb6126a1565b5b8235905067ffffffffffffffff8111156127d9576127d86126a6565b5b6020830191508360208202830111156127f5576127f46126ab565b5b9250929050565b60008060006040848603121561281557612814612353565b5b600084013567ffffffffffffffff81111561283357612832612358565b5b61283f868287016127a6565b93509350506020612852868287016123dc565b9150509250925092565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b60006128b86023836122ac565b91506128c38261285c565b604082019050919050565b600060208201905081810360008301526128e7816128ab565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612974578086048111156129505761294f6128ee565b5b600185161561295f5780820291505b808102905061296d8561291d565b9450612934565b94509492505050565b60008261298d5760019050612a49565b8161299b5760009050612a49565b81600181146129b157600281146129bb576129ea565b6001915050612a49565b60ff8411156129cd576129cc6128ee565b5b8360020a9150848211156129e4576129e36128ee565b5b50612a49565b5060208310610133831016604e8410600b8410161715612a1f5782820a905083811115612a1a57612a196128ee565b5b612a49565b612a2c848484600161292a565b92509050818404811115612a4357612a426128ee565b5b81810290505b9392505050565b6000612a5b826123bb565b9150612a66836125aa565b9250612a937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461297d565b905092915050565b6000612aa6826123bb565b9150612ab1836123bb565b9250828202612abf816123bb565b91508282048414831517612ad657612ad56128ee565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612b396028836122ac565b9150612b4482612add565b604082019050919050565b60006020820190508181036000830152612b6881612b2c565b9050919050565b6000612b7a826123bb565b9150612b85836123bb565b9250828203905081811115612b9d57612b9c6128ee565b5b92915050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000612bff603c836122ac565b9150612c0a82612ba3565b604082019050919050565b60006020820190508181036000830152612c2e81612bf2565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c6b6020836122ac565b9150612c7682612c35565b602082019050919050565b60006020820190508181036000830152612c9a81612c5e565b9050919050565b6000612cac826123bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cde57612cdd6128ee565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612d4e601b836122ac565b9150612d5982612d18565b602082019050919050565b60006020820190508181036000830152612d7d81612d41565b9050919050565b6000612d8f826123bb565b9150612d9a836123bb565b9250828201905080821115612db257612db16128ee565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160008201527f6e67652028302c3130305d207065726d69737369626c65000000000000000000602082015250565b6000612e436037836122ac565b9150612e4e82612de7565b604082019050919050565b60006020820190508181036000830152612e7281612e36565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eb3826123bb565b9150612ebe836123bb565b925082612ece57612ecd612e79565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f356024836122ac565b9150612f4082612ed9565b604082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc76022836122ac565b9150612fd282612f6b565b604082019050919050565b60006020820190508181036000830152612ff681612fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130596025836122ac565b915061306482612ffd565b604082019050919050565b600060208201905081810360008301526130888161304c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130eb6023836122ac565b91506130f68261308f565b604082019050919050565b6000602082019050818103600083015261311a816130de565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b600061317d6030836122ac565b915061318882613121565b604082019050919050565b600060208201905081810360008301526131ac81613170565b9050919050565b7f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60008201527f6e206f66206d61782077616c6c65740000000000000000000000000000000000602082015250565b600061320f602f836122ac565b915061321a826131b3565b604082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b60006132a361329e61329984613274565b61327e565b6123bb565b9050919050565b6132b381613288565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132ee8161237d565b82525050565b600061330083836132e5565b60208301905092915050565b6000602082019050919050565b6000613324826132b9565b61332e81856132c4565b9350613339836132d5565b8060005b8381101561336a57815161335188826132f4565b975061335c8361330c565b92505060018101905061333d565b5085935050505092915050565b600060a08201905061338c6000830188612500565b61339960208301876132aa565b81810360408301526133ab8186613319565b90506133ba6060830185612637565b6133c76080830184612500565b9695505050505050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613407601a836122ac565b9150613412826133d1565b602082019050919050565b60006020820190508181036000830152613436816133fa565b905091905056fea2646970667358221220350a5cd7e3579e40c6a4df308e1db746aa192e1d1325c79e29a4fc7c7457f60564736f6c63430008110033