60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90816200004a91906200047e565b506001600d556005600e556000600f60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280601981526020017f416c69656e20446f6773204e465420436f6c6c656374696f6e000000000000008152506040518060400160405280600581526020017f41444e46540000000000000000000000000000000000000000000000000000008152508160009081620000fb91906200047e565b5080600190816200010d91906200047e565b50505062000130620001246200013660201b60201c565b6200013e60201b60201c565b62000565565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200028657607f821691505b6020821081036200029c576200029b6200023e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002c7565b620003128683620002c7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200035f6200035962000353846200032a565b62000334565b6200032a565b9050919050565b6000819050919050565b6200037b836200033e565b620003936200038a8262000366565b848454620002d4565b825550505050565b600090565b620003aa6200039b565b620003b781848462000370565b505050565b5b81811015620003df57620003d3600082620003a0565b600181019050620003bd565b5050565b601f8211156200042e57620003f881620002a2565b6200040384620002b7565b8101602085101562000413578190505b6200042b6200042285620002b7565b830182620003bc565b50505b505050565b600082821c905092915050565b6000620004536000198460080262000433565b1980831691505092915050565b60006200046e838362000440565b9150826002028217905092915050565b620004898262000204565b67ffffffffffffffff811115620004a557620004a46200020f565b5b620004b182546200026d565b620004be828285620003e3565b600060209050601f831160018114620004f65760008415620004e1578287015190505b620004ed858262000460565b8655506200055d565b601f1984166200050686620002a2565b60005b82811015620005305784890151825560018201915060208501945060208101905062000509565b868310156200055057848901516200054c601f89168262000440565b8355505b6001600288020188555050505b505050505050565b613e7380620005756000396000f3fe6080604052600436106101d85760003560e01c80635c975abb11610102578063a22cb46511610095578063d5abeb0111610064578063d5abeb01146106a2578063da3ef23f146106cd578063e985e9c5146106f6578063f2fde38b14610733576101d8565b8063a22cb465146105e8578063b88d4fde14610611578063c66828621461063a578063c87b56dd14610665576101d8565b8063715018a6116100d1578063715018a6146105525780637f00c7a6146105695780638da5cb5b1461059257806395d89b41146105bd576101d8565b80635c975abb146104825780636352211e146104ad5780636c0360eb146104ea57806370a0823114610515576101d8565b806323b872dd1161017a57806342842e0e1161014957806342842e0e146103b6578063438b6300146103df5780634f6ccce71461041c57806355f804b314610459576101d8565b806323b872dd1461032a5780632f745c59146103535780633ccfd60b1461039057806340c10f191461039a576101d8565b8063081812fc116101b6578063081812fc1461026e578063095ea7b3146102ab57806318160ddd146102d4578063239c70ae146102ff576101d8565b806301ffc9a7146101dd57806302329a291461021a57806306fdde0314610243575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff91906127b1565b61075c565b60405161021191906127f9565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612840565b6107d6565b005b34801561024f57600080fd5b506102586107fb565b60405161026591906128fd565b60405180910390f35b34801561027a57600080fd5b5061029560048036038101906102909190612955565b61088d565b6040516102a291906129c3565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd9190612a0a565b6108d3565b005b3480156102e057600080fd5b506102e96109ea565b6040516102f69190612a59565b60405180910390f35b34801561030b57600080fd5b506103146109f7565b6040516103219190612a59565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190612a74565b6109fd565b005b34801561035f57600080fd5b5061037a60048036038101906103759190612a0a565b610a5d565b6040516103879190612a59565b60405180910390f35b610398610b02565b005b6103b460048036038101906103af9190612a0a565b610b4a565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612a74565b610be2565b005b3480156103eb57600080fd5b5061040660048036038101906104019190612ac7565b610c02565b6040516104139190612bb2565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190612955565b610cb0565b6040516104509190612a59565b60405180910390f35b34801561046557600080fd5b50610480600480360381019061047b9190612d09565b610d21565b005b34801561048e57600080fd5b50610497610d3c565b6040516104a491906127f9565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190612955565b610d4f565b6040516104e191906129c3565b60405180910390f35b3480156104f657600080fd5b506104ff610dd5565b60405161050c91906128fd565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612ac7565b610e63565b6040516105499190612a59565b60405180910390f35b34801561055e57600080fd5b50610567610f1a565b005b34801561057557600080fd5b50610590600480360381019061058b9190612955565b610f2e565b005b34801561059e57600080fd5b506105a7610f40565b6040516105b491906129c3565b60405180910390f35b3480156105c957600080fd5b506105d2610f6a565b6040516105df91906128fd565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a9190612d52565b610ffc565b005b34801561061d57600080fd5b5061063860048036038101906106339190612e33565b611012565b005b34801561064657600080fd5b5061064f611074565b60405161065c91906128fd565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190612955565b611102565b60405161069991906128fd565b60405180910390f35b3480156106ae57600080fd5b506106b76111ac565b6040516106c49190612a59565b60405180910390f35b3480156106d957600080fd5b506106f460048036038101906106ef9190612d09565b6111b2565b005b34801561070257600080fd5b5061071d60048036038101906107189190612eb6565b6111cd565b60405161072a91906127f9565b60405180910390f35b34801561073f57600080fd5b5061075a60048036038101906107559190612ac7565b611261565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107cf57506107ce826112e4565b5b9050919050565b6107de6113c6565b80600f60006101000a81548160ff02191690831515021790555050565b60606000805461080a90612f25565b80601f016020809104026020016040519081016040528092919081815260200182805461083690612f25565b80156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050905090565b600061089882611444565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108de82610d4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361094e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094590612fc8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661096d61148f565b73ffffffffffffffffffffffffffffffffffffffff16148061099c575061099b8161099661148f565b6111cd565b5b6109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d29061305a565b60405180910390fd5b6109e58383611497565b505050565b6000600880549050905090565b600e5481565b610a0e610a0861148f565b82611550565b610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a44906130ec565b60405180910390fd5b610a588383836115e5565b505050565b6000610a6883610e63565b8210610aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa09061317e565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610b0a6113c6565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050610b4857600080fd5b565b6000610b546109ea565b9050600f60009054906101000a900460ff1615610b7057600080fd5b60008211610b7d57600080fd5b600e54821115610b8c57600080fd5b600d548282610b9b91906131cd565b1115610ba657600080fd5b6000600190505b828111610bdc57610bc9848284610bc491906131cd565b6118de565b8080610bd490613201565b915050610bad565b50505050565b610bfd83838360405180602001604052806000815250611012565b505050565b60606000610c0f83610e63565b905060008167ffffffffffffffff811115610c2d57610c2c612bde565b5b604051908082528060200260200182016040528015610c5b5781602001602082028036833780820191505090505b50905060005b82811015610ca557610c738582610a5d565b828281518110610c8657610c85613249565b5b6020026020010181815250508080610c9d90613201565b915050610c61565b508092505050919050565b6000610cba6109ea565b8210610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf2906132ea565b60405180910390fd5b60088281548110610d0f57610d0e613249565b5b90600052602060002001549050919050565b610d296113c6565b80600b9081610d3891906134b6565b5050565b600f60009054906101000a900460ff1681565b600080610d5b836118fc565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc3906135d4565b60405180910390fd5b80915050919050565b600b8054610de290612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0e90612f25565b8015610e5b5780601f10610e3057610100808354040283529160200191610e5b565b820191906000526020600020905b815481529060010190602001808311610e3e57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90613666565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f226113c6565b610f2c6000611939565b565b610f366113c6565b80600e8190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610f7990612f25565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa590612f25565b8015610ff25780601f10610fc757610100808354040283529160200191610ff2565b820191906000526020600020905b815481529060010190602001808311610fd557829003601f168201915b5050505050905090565b61100e61100761148f565b83836119ff565b5050565b61102361101d61148f565b83611550565b611062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611059906130ec565b60405180910390fd5b61106e84848484611b6b565b50505050565b600c805461108190612f25565b80601f01602080910402602001604051908101604052809291908181526020018280546110ad90612f25565b80156110fa5780601f106110cf576101008083540402835291602001916110fa565b820191906000526020600020905b8154815290600101906020018083116110dd57829003601f168201915b505050505081565b606061110d82611bc7565b61114c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611143906136f8565b60405180910390fd5b6000611156611c08565b9050600081511161117657604051806020016040528060008152506111a4565b8061118084611c28565b600c604051602001611194939291906137d7565b6040516020818303038152906040525b915050919050565b600d5481565b6111ba6113c6565b80600c90816111c991906134b6565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6112696113c6565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf9061387a565b60405180910390fd5b6112e181611939565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806113af57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806113bf57506113be82611cf6565b5b9050919050565b6113ce61148f565b73ffffffffffffffffffffffffffffffffffffffff166113ec610f40565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611439906138e6565b60405180910390fd5b565b61144d81611bc7565b61148c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611483906135d4565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661150a83610d4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061155c83610d4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061159e575061159d81856111cd565b5b806115dc57508373ffffffffffffffffffffffffffffffffffffffff166115c48461088d565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661160582610d4f565b73ffffffffffffffffffffffffffffffffffffffff161461165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165290613978565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c190613a0a565b60405180910390fd5b6116d78383836001611d60565b8273ffffffffffffffffffffffffffffffffffffffff166116f782610d4f565b73ffffffffffffffffffffffffffffffffffffffff161461174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174490613978565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46118d98383836001611ebe565b505050565b6118f8828260405180602001604052806000815250611ec4565b5050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6490613a76565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611b5e91906127f9565b60405180910390a3505050565b611b768484846115e5565b611b8284848484611f1f565b611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890613b08565b60405180910390fd5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611be9836118fc565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6060604051806060016040528060368152602001613e0860369139905090565b606060006001611c37846120a6565b01905060008167ffffffffffffffff811115611c5657611c55612bde565b5b6040519080825280601f01601f191660200182016040528015611c885781602001600182028036833780820191505090505b509050600082602001820190505b600115611ceb578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611cdf57611cde613b28565b5b04945060008503611c96575b819350505050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611d6c848484846121f9565b6001811115611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613bc9565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611df757611df2816121ff565b611e36565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611e3557611e348582612248565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611e7857611e73816123b5565b611eb7565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611eb657611eb58482612486565b5b5b5050505050565b50505050565b611ece8383612505565b611edb6000848484611f1f565b611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190613b08565b60405180910390fd5b505050565b6000611f408473ffffffffffffffffffffffffffffffffffffffff16612722565b15612099578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f6961148f565b8786866040518563ffffffff1660e01b8152600401611f8b9493929190613c3e565b6020604051808303816000875af1925050508015611fc757506040513d601f19601f82011682018060405250810190611fc49190613c9f565b60015b612049573d8060008114611ff7576040519150601f19603f3d011682016040523d82523d6000602084013e611ffc565b606091505b506000815103612041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203890613b08565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061209e565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612104577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816120fa576120f9613b28565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612141576d04ee2d6d415b85acef8100000000838161213757612136613b28565b5b0492506020810190505b662386f26fc10000831061217057662386f26fc10000838161216657612165613b28565b5b0492506010810190505b6305f5e1008310612199576305f5e100838161218f5761218e613b28565b5b0492506008810190505b61271083106121be5761271083816121b4576121b3613b28565b5b0492506004810190505b606483106121e157606483816121d7576121d6613b28565b5b0492506002810190505b600a83106121f0576001810190505b80915050919050565b50505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161225584610e63565b61225f9190613ccc565b9050600060076000848152602001908152602001600020549050818114612344576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016008805490506123c99190613ccc565b90506000600960008481526020019081526020016000205490506000600883815481106123f9576123f8613249565b5b90600052602060002001549050806008838154811061241b5761241a613249565b5b90600052602060002001819055508160096000838152602001908152602001600020819055506009600085815260200190815260200160002060009055600880548061246a57612469613d00565b5b6001900381819060005260206000200160009055905550505050565b600061249183610e63565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b90613d7b565b60405180910390fd5b61257d81611bc7565b156125bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b490613de7565b60405180910390fd5b6125cb600083836001611d60565b6125d481611bc7565b15612614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260b90613de7565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461271e600083836001611ebe565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61278e81612759565b811461279957600080fd5b50565b6000813590506127ab81612785565b92915050565b6000602082840312156127c7576127c661274f565b5b60006127d58482850161279c565b91505092915050565b60008115159050919050565b6127f3816127de565b82525050565b600060208201905061280e60008301846127ea565b92915050565b61281d816127de565b811461282857600080fd5b50565b60008135905061283a81612814565b92915050565b6000602082840312156128565761285561274f565b5b60006128648482850161282b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128a757808201518184015260208101905061288c565b60008484015250505050565b6000601f19601f8301169050919050565b60006128cf8261286d565b6128d98185612878565b93506128e9818560208601612889565b6128f2816128b3565b840191505092915050565b6000602082019050818103600083015261291781846128c4565b905092915050565b6000819050919050565b6129328161291f565b811461293d57600080fd5b50565b60008135905061294f81612929565b92915050565b60006020828403121561296b5761296a61274f565b5b600061297984828501612940565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129ad82612982565b9050919050565b6129bd816129a2565b82525050565b60006020820190506129d860008301846129b4565b92915050565b6129e7816129a2565b81146129f257600080fd5b50565b600081359050612a04816129de565b92915050565b60008060408385031215612a2157612a2061274f565b5b6000612a2f858286016129f5565b9250506020612a4085828601612940565b9150509250929050565b612a538161291f565b82525050565b6000602082019050612a6e6000830184612a4a565b92915050565b600080600060608486031215612a8d57612a8c61274f565b5b6000612a9b868287016129f5565b9350506020612aac868287016129f5565b9250506040612abd86828701612940565b9150509250925092565b600060208284031215612add57612adc61274f565b5b6000612aeb848285016129f5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612b298161291f565b82525050565b6000612b3b8383612b20565b60208301905092915050565b6000602082019050919050565b6000612b5f82612af4565b612b698185612aff565b9350612b7483612b10565b8060005b83811015612ba5578151612b8c8882612b2f565b9750612b9783612b47565b925050600181019050612b78565b5085935050505092915050565b60006020820190508181036000830152612bcc8184612b54565b905092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c16826128b3565b810181811067ffffffffffffffff82111715612c3557612c34612bde565b5b80604052505050565b6000612c48612745565b9050612c548282612c0d565b919050565b600067ffffffffffffffff821115612c7457612c73612bde565b5b612c7d826128b3565b9050602081019050919050565b82818337600083830152505050565b6000612cac612ca784612c59565b612c3e565b905082815260208101848484011115612cc857612cc7612bd9565b5b612cd3848285612c8a565b509392505050565b600082601f830112612cf057612cef612bd4565b5b8135612d00848260208601612c99565b91505092915050565b600060208284031215612d1f57612d1e61274f565b5b600082013567ffffffffffffffff811115612d3d57612d3c612754565b5b612d4984828501612cdb565b91505092915050565b60008060408385031215612d6957612d6861274f565b5b6000612d77858286016129f5565b9250506020612d888582860161282b565b9150509250929050565b600067ffffffffffffffff821115612dad57612dac612bde565b5b612db6826128b3565b9050602081019050919050565b6000612dd6612dd184612d92565b612c3e565b905082815260208101848484011115612df257612df1612bd9565b5b612dfd848285612c8a565b509392505050565b600082601f830112612e1a57612e19612bd4565b5b8135612e2a848260208601612dc3565b91505092915050565b60008060008060808587031215612e4d57612e4c61274f565b5b6000612e5b878288016129f5565b9450506020612e6c878288016129f5565b9350506040612e7d87828801612940565b925050606085013567ffffffffffffffff811115612e9e57612e9d612754565b5b612eaa87828801612e05565b91505092959194509250565b60008060408385031215612ecd57612ecc61274f565b5b6000612edb858286016129f5565b9250506020612eec858286016129f5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612f3d57607f821691505b602082108103612f5057612f4f612ef6565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fb2602183612878565b9150612fbd82612f56565b604082019050919050565b60006020820190508181036000830152612fe181612fa5565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613044603d83612878565b915061304f82612fe8565b604082019050919050565b6000602082019050818103600083015261307381613037565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006130d6602d83612878565b91506130e18261307a565b604082019050919050565b60006020820190508181036000830152613105816130c9565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000613168602b83612878565b91506131738261310c565b604082019050919050565b600060208201905081810360008301526131978161315b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131d88261291f565b91506131e38361291f565b92508282019050808211156131fb576131fa61319e565b5b92915050565b600061320c8261291f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361323e5761323d61319e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b60006132d4602c83612878565b91506132df82613278565b604082019050919050565b60006020820190508181036000830152613303816132c7565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261336c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261332f565b613376868361332f565b95508019841693508086168417925050509392505050565b6000819050919050565b60006133b36133ae6133a98461291f565b61338e565b61291f565b9050919050565b6000819050919050565b6133cd83613398565b6133e16133d9826133ba565b84845461333c565b825550505050565b600090565b6133f66133e9565b6134018184846133c4565b505050565b5b818110156134255761341a6000826133ee565b600181019050613407565b5050565b601f82111561346a5761343b8161330a565b6134448461331f565b81016020851015613453578190505b61346761345f8561331f565b830182613406565b50505b505050565b600082821c905092915050565b600061348d6000198460080261346f565b1980831691505092915050565b60006134a6838361347c565b9150826002028217905092915050565b6134bf8261286d565b67ffffffffffffffff8111156134d8576134d7612bde565b5b6134e28254612f25565b6134ed828285613429565b600060209050601f831160018114613520576000841561350e578287015190505b613518858261349a565b865550613580565b601f19841661352e8661330a565b60005b8281101561355657848901518255600182019150602085019450602081019050613531565b86831015613573578489015161356f601f89168261347c565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b60006135be601883612878565b91506135c982613588565b602082019050919050565b600060208201905081810360008301526135ed816135b1565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613650602983612878565b915061365b826135f4565b604082019050919050565b6000602082019050818103600083015261367f81613643565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b60006136e2602f83612878565b91506136ed82613686565b604082019050919050565b60006020820190508181036000830152613711816136d5565b9050919050565b600081905092915050565b600061372e8261286d565b6137388185613718565b9350613748818560208601612889565b80840191505092915050565b6000815461376181612f25565b61376b8186613718565b94506001821660008114613786576001811461379b576137ce565b60ff19831686528115158202860193506137ce565b6137a48561330a565b60005b838110156137c6578154818901526001820191506020810190506137a7565b838801955050505b50505092915050565b60006137e38286613723565b91506137ef8285613723565b91506137fb8284613754565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613864602683612878565b915061386f82613808565b604082019050919050565b6000602082019050818103600083015261389381613857565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138d0602083612878565b91506138db8261389a565b602082019050919050565b600060208201905081810360008301526138ff816138c3565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613962602583612878565b915061396d82613906565b604082019050919050565b6000602082019050818103600083015261399181613955565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006139f4602483612878565b91506139ff82613998565b604082019050919050565b60006020820190508181036000830152613a23816139e7565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613a60601983612878565b9150613a6b82613a2a565b602082019050919050565b60006020820190508181036000830152613a8f81613a53565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613af2603283612878565b9150613afd82613a96565b604082019050919050565b60006020820190508181036000830152613b2181613ae5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000613bb3603583612878565b9150613bbe82613b57565b604082019050919050565b60006020820190508181036000830152613be281613ba6565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613c1082613be9565b613c1a8185613bf4565b9350613c2a818560208601612889565b613c33816128b3565b840191505092915050565b6000608082019050613c5360008301876129b4565b613c6060208301866129b4565b613c6d6040830185612a4a565b8181036060830152613c7f8184613c05565b905095945050505050565b600081519050613c9981612785565b92915050565b600060208284031215613cb557613cb461274f565b5b6000613cc384828501613c8a565b91505092915050565b6000613cd78261291f565b9150613ce28361291f565b9250828203905081811115613cfa57613cf961319e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000613d65602083612878565b9150613d7082613d2f565b602082019050919050565b60006020820190508181036000830152613d9481613d58565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000613dd1601c83612878565b9150613ddc82613d9b565b602082019050919050565b60006020820190508181036000830152613e0081613dc4565b905091905056fe697066733a2f2f516d59423575575a7166756e42713779576e616d54716f585742414869516f69724e4c6d75784d7a4454684868692fa26469706673582212207e5b714ea97d1cfbd43212d21cde218fb0937940f6c08fd5242b2ea5c554fed764736f6c63430008130033