You're Invited: Meet the Socket team at BSidesSF and RSAC - April 27 - May 1.RSVP

@fairdatasociety/fdp-contracts

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fairdatasociety/fdp-contracts - npm Package Compare versions

Comparing version

to
1.0.1

@@ -1,2 +0,2 @@

export declare const ENS_DOMAIN = "fds.eth";
export declare const ENS_DOMAIN = "fds";
export declare const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";

@@ -6,3 +6,3 @@ import { EthAddress } from './hex.types';

ensRegistry: EthAddress;
subdomainRegistrar: EthAddress;
fdsRegistrar: EthAddress;
publicResolver: EthAddress;

@@ -9,0 +9,0 @@ };

@@ -12,9 +12,2 @@ import { Signer, providers } from 'ethers';

abi: ({
inputs: never[];
stateMutability: string;
type: string;
anonymous?: undefined;
name?: undefined;
outputs?: undefined;
} | {
anonymous: boolean;

@@ -29,4 +22,4 @@ inputs: {

type: string;
outputs?: undefined;
stateMutability?: undefined;
outputs?: undefined;
} | {

@@ -81,7 +74,2 @@ inputs: {

} | {
/**
* Checks whether username is available on ENS
* @param username ENS username
* @returns True if the username is available
*/
inputs: {

@@ -107,3 +95,3 @@ internalType: string;

};
export declare const SubdomainRegistrarContract: {
export declare const FDSRegistrarContract: {
_format: string;

@@ -165,3 +153,3 @@ contractName: string;

private _ensRegistryContract;
private _subdomainRegistrarContract;
private _fdsRegistrarContract;
private _publicResolverContract;

@@ -196,3 +184,3 @@ constructor(config?: Environment, signerOrProvider?: SignerOrProvider | null, domain?: string);

*/
registerUsername(username: Username, address: EthAddress, publicKey: PublicKey): Promise<void>;
registerUsername(username: Username, address: EthAddress, publicKey: PublicKey, expires?: number): Promise<void>;
/**

@@ -199,0 +187,0 @@ * Returns public key of registered username

# Changelog
## [1.1.0](https://github.com/fairDataSociety/fdp-contracts/compare/v1.0.0...v1.1.0) (2022-07-04)
### Features
* **contracts:** BMT Chunk ([#19](https://github.com/fairDataSociety/fdp-contracts/issues/19)) ([b2a18a6](https://github.com/fairDataSociety/fdp-contracts/commit/b2a18a6a298fc07294f785187dacf3ff8ba590df))
* **contracts:** fds registrar contracts ([#26](https://github.com/fairDataSociety/fdp-contracts/issues/26)) ([74b9266](https://github.com/fairDataSociety/fdp-contracts/commit/74b9266ddede0c37f05719115f037aab33f33827))
* **contracts:** FDS Registrar specs passing with fdp-play dev environment ([#35](https://github.com/fairDataSociety/fdp-contracts/issues/35)) ([ae1c3a3](https://github.com/fairDataSociety/fdp-contracts/commit/ae1c3a3efa52377ee1fb5dbae21ce6ff69108ce5))
* **contracts:** File BMT inclusion proof ([#20](https://github.com/fairDataSociety/fdp-contracts/issues/20)) ([a52b2f4](https://github.com/fairDataSociety/fdp-contracts/commit/a52b2f4819371b17d4bf6f3818076917b1ae0782))
## 1.0.0 (2022-05-09)

@@ -4,0 +14,0 @@

{
"name": "@fairdatasociety/fdp-contracts",
"version": "1.0.0",
"version": "1.0.1",
"description": "Library for interaction with FDS contracts",

@@ -9,2 +9,6 @@ "main": "build/index.js",

"build": "webpack --config webpack.build.config.ts --env mode=production",
"deploy": "ts-node ./scripts/deploy.ts",
"env:start": "fdp-play start --detach --blockchain-image fairdatasociety/fdp-contracts-blockchain 1.6.1",
"env:stop": "fdp-play stop",
"ci:test": "npm run env:start && npm run build && npm run test && npm run env:stop",
"test": "jest",

@@ -24,2 +28,4 @@ "test:unit": "jest ./test/unit",

"@babel/preset-typescript": "^7.16.7",
"@ensdomains/ens-contracts": "^0.0.11",
"@fairdatasociety/fdp-play": "^1.0.2",
"@types/dotenv-webpack": "^7.0.3",

@@ -26,0 +32,0 @@ "@types/jest": "^27.4.1",

@@ -21,7 +21,6 @@ # FDS Contracts JS Library

```bash
docker run -p 9545:9545 fairdatasociety/swarm-test-blockchain:1.2.0
fdp-play start --detach --blockchain-image fairdatasociety/fdp-contracts-blockchain $BEE_VERSION
```
**NOTE**: it will spin up the whole fdp environment for you with running Bee clients
> **_NOTE_:** You can add the `--rm` flag to automatically remove the container after execution.
### ENS

@@ -28,0 +27,0 @@

@@ -1,2 +0,2 @@

export const ENS_DOMAIN = 'fds.eth'
export const ENS_DOMAIN = 'fds'
export const NULL_ADDRESS = '0x0000000000000000000000000000000000000000'

@@ -12,3 +12,3 @@ import { Environments } from '../model/environments.enum'

ensRegistry: process.env.ENS_REGISTRY_ADDRESS as EthAddress,
subdomainRegistrar: process.env.SUBDOMAIN_REGISTRAR_ADDRESS as EthAddress,
fdsRegistrar: process.env.FDS_REGISTRAR_ADDRESS as EthAddress,
publicResolver: process.env.PUBLIC_RESOLVER_ADDRESS as EthAddress,

@@ -15,0 +15,0 @@ },

{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/5ca7e98eacf13e6d7f83fe047a20914a.json"
"buildInfo": "../../../../../build-info/a8e9436cf29031d1138bc44e4b2122a9.json"
}
{
"_format": "hh-sol-artifact-1",
"contractName": "ENS",
"sourceName": "contracts/ENS.sol",
"sourceName": "@ensdomains/ens-contracts/contracts/registry/ENS.sol",
"abi": [

@@ -11,2 +11,27 @@ {

"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",

@@ -92,4 +117,28 @@ "name": "node",

{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -113,6 +162,25 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"
}
],
"name": "recordExists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
}
],
"name": "resolver",

@@ -132,4 +200,22 @@ "outputs": [

{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -139,3 +225,3 @@ },

"internalType": "address",
"name": "_owner",
"name": "owner",
"type": "address"

@@ -153,3 +239,3 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -159,6 +245,34 @@ },

"internalType": "address",
"name": "_resolver",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
},
{
"internalType": "uint64",
"name": "ttl",
"type": "uint64"
}
],
"name": "setRecord",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
}
],
"name": "setResolver",

@@ -173,3 +287,3 @@ "outputs": [],

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -179,3 +293,3 @@ },

"internalType": "bytes32",
"name": "_label",
"name": "label",
"type": "bytes32"

@@ -185,3 +299,3 @@ },

"internalType": "address",
"name": "_owner",
"name": "owner",
"type": "address"

@@ -191,2 +305,41 @@ }

"name": "setSubnodeOwner",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "label",
"type": "bytes32"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
},
{
"internalType": "uint64",
"name": "ttl",
"type": "uint64"
}
],
"name": "setSubnodeRecord",
"outputs": [],

@@ -200,3 +353,3 @@ "stateMutability": "nonpayable",

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -206,3 +359,3 @@ },

"internalType": "uint64",
"name": "_ttl",
"name": "ttl",
"type": "uint64"

@@ -220,3 +373,3 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -223,0 +376,0 @@ }

{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/5ca7e98eacf13e6d7f83fe047a20914a.json"
"buildInfo": "../../../../../build-info/a8e9436cf29031d1138bc44e4b2122a9.json"
}
{
"_format": "hh-sol-artifact-1",
"contractName": "ENSRegistry",
"sourceName": "contracts/ENSRegistry.sol",
"sourceName": "@ensdomains/ens-contracts/contracts/registry/ENSRegistry.sol",
"abi": [

@@ -16,2 +16,27 @@ {

"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",

@@ -97,4 +122,28 @@ "name": "node",

{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -118,6 +167,25 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"
}
],
"name": "recordExists",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
}
],
"name": "resolver",

@@ -137,4 +205,22 @@ "outputs": [

{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -144,3 +230,3 @@ },

"internalType": "address",
"name": "_owner",
"name": "owner",
"type": "address"

@@ -158,3 +244,3 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -164,6 +250,34 @@ },

"internalType": "address",
"name": "_resolver",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
},
{
"internalType": "uint64",
"name": "ttl",
"type": "uint64"
}
],
"name": "setRecord",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
}
],
"name": "setResolver",

@@ -178,3 +292,3 @@ "outputs": [],

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -184,3 +298,3 @@ },

"internalType": "bytes32",
"name": "_label",
"name": "label",
"type": "bytes32"

@@ -190,3 +304,3 @@ },

"internalType": "address",
"name": "_owner",
"name": "owner",
"type": "address"

@@ -196,2 +310,41 @@ }

"name": "setSubnodeOwner",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "node",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "label",
"type": "bytes32"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "resolver",
"type": "address"
},
{
"internalType": "uint64",
"name": "ttl",
"type": "uint64"
}
],
"name": "setSubnodeRecord",
"outputs": [],

@@ -205,3 +358,3 @@ "stateMutability": "nonpayable",

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -211,3 +364,3 @@ },

"internalType": "uint64",
"name": "_ttl",
"name": "ttl",
"type": "uint64"

@@ -225,3 +378,3 @@ }

"internalType": "bytes32",
"name": "_node",
"name": "node",
"type": "bytes32"

@@ -242,6 +395,6 @@ }

],
"bytecode": "0x608060405234801561001057600080fd5b50336000808060001b815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a37806100776000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806314ab90381161005b57806314ab9038146100fe57806316a25cbd1461011a5780631896f70a1461014a5780635b0fc9c3146101665761007d565b80630178b8bf1461008257806302571be3146100b257806306ab5923146100e2575b600080fd5b61009c6004803603810190610097919061075e565b610182565b6040516100a991906108d2565b60405180910390f35b6100cc60048036038101906100c7919061075e565b6101c1565b6040516100d991906108d2565b60405180910390f35b6100fc60048036038101906100f791906107c3565b610200565b005b61011860048036038101906101139190610812565b610365565b005b610134600480360381019061012f919061075e565b610482565b604051610141919061090d565b60405180910390f35b610164600480360381019061015f9190610787565b6104b5565b005b610180600480360381019061017b9190610787565b6105ea565b005b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b823373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029b906108ed565b60405180910390fd5b600084846040516020016102b99291906108a6565b60405160208183030381529060405280519060200120905083857fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e828560405161030291906108d2565b60405180910390a38260008083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610409576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610400906108ed565b60405180910390fd5b827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6883604051610439919061090d565b60405180910390a28160008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610550906108ed565b60405180910390fd5b827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a08360405161058991906108d2565b60405180910390a28160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610685906108ed565b60405180910390fd5b827fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266836040516106be91906108d2565b60405180910390a28160008085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008135905061072e816109bc565b92915050565b600081359050610743816109d3565b92915050565b600081359050610758816109ea565b92915050565b60006020828403121561077057600080fd5b600061077e84828501610734565b91505092915050565b6000806040838503121561079a57600080fd5b60006107a885828601610734565b92505060206107b98582860161071f565b9150509250929050565b6000806000606084860312156107d857600080fd5b60006107e686828701610734565b93505060206107f786828701610734565b92505060406108088682870161071f565b9150509250925092565b6000806040838503121561082557600080fd5b600061083385828601610734565b925050602061084485828601610749565b9150509250929050565b61085781610939565b82525050565b61086e6108698261094b565b610989565b82525050565b6000610881601383610928565b915061088c82610993565b602082019050919050565b6108a081610975565b82525050565b60006108b2828561085d565b6020820191506108c2828461085d565b6020820191508190509392505050565b60006020820190506108e7600083018461084e565b92915050565b6000602082019050818103600083015261090681610874565b9050919050565b60006020820190506109226000830184610897565b92915050565b600082825260208201905092915050565b600061094482610955565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b6109c581610939565b81146109d057600080fd5b50565b6109dc8161094b565b81146109e757600080fd5b50565b6109f381610975565b81146109fe57600080fd5b5056fea26469706673582212208044713ff42c9d6d7b67083bba1e579eec2a5a2f10eafdadeb19855dbb47cfa064736f6c63430008040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c806314ab90381161005b57806314ab9038146100fe57806316a25cbd1461011a5780631896f70a1461014a5780635b0fc9c3146101665761007d565b80630178b8bf1461008257806302571be3146100b257806306ab5923146100e2575b600080fd5b61009c6004803603810190610097919061075e565b610182565b6040516100a991906108d2565b60405180910390f35b6100cc60048036038101906100c7919061075e565b6101c1565b6040516100d991906108d2565b60405180910390f35b6100fc60048036038101906100f791906107c3565b610200565b005b61011860048036038101906101139190610812565b610365565b005b610134600480360381019061012f919061075e565b610482565b604051610141919061090d565b60405180910390f35b610164600480360381019061015f9190610787565b6104b5565b005b610180600480360381019061017b9190610787565b6105ea565b005b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b823373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029b906108ed565b60405180910390fd5b600084846040516020016102b99291906108a6565b60405160208183030381529060405280519060200120905083857fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e828560405161030291906108d2565b60405180910390a38260008083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610409576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610400906108ed565b60405180910390fd5b827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6883604051610439919061090d565b60405180910390a28160008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610550906108ed565b60405180910390fd5b827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a08360405161058991906108d2565b60405180910390a28160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610685906108ed565b60405180910390fd5b827fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266836040516106be91906108d2565b60405180910390a28160008085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008135905061072e816109bc565b92915050565b600081359050610743816109d3565b92915050565b600081359050610758816109ea565b92915050565b60006020828403121561077057600080fd5b600061077e84828501610734565b91505092915050565b6000806040838503121561079a57600080fd5b60006107a885828601610734565b92505060206107b98582860161071f565b9150509250929050565b6000806000606084860312156107d857600080fd5b60006107e686828701610734565b93505060206107f786828701610734565b92505060406108088682870161071f565b9150509250925092565b6000806040838503121561082557600080fd5b600061083385828601610734565b925050602061084485828601610749565b9150509250929050565b61085781610939565b82525050565b61086e6108698261094b565b610989565b82525050565b6000610881601383610928565b915061088c82610993565b602082019050919050565b6108a081610975565b82525050565b60006108b2828561085d565b6020820191506108c2828461085d565b6020820191508190509392505050565b60006020820190506108e7600083018461084e565b92915050565b6000602082019050818103600083015261090681610874565b9050919050565b60006020820190506109226000830184610897565b92915050565b600082825260208201905092915050565b600061094482610955565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b6109c581610939565b81146109d057600080fd5b50565b6109dc8161094b565b81146109e757600080fd5b50565b6109f381610975565b81146109fe57600080fd5b5056fea26469706673582212208044713ff42c9d6d7b67083bba1e579eec2a5a2f10eafdadeb19855dbb47cfa064736f6c63430008040033",
"bytecode": "0x608060405234801561001057600080fd5b50336000808060001b815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611219806100776000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80635b0fc9c3116100715780635b0fc9c3146101b15780635ef2c7f0146101cd578063a22cb465146101e9578063cf40882314610205578063e985e9c514610221578063f79fe53814610251576100b4565b80630178b8bf146100b957806302571be3146100e957806306ab59231461011957806314ab90381461014957806316a25cbd146101655780631896f70a14610195575b600080fd5b6100d360048036038101906100ce9190610e6c565b610281565b6040516100e091906110b5565b60405180910390f35b61010360048036038101906100fe9190610e6c565b6102c0565b60405161011091906110b5565b60405180910390f35b610133600480360381019061012e9190610f34565b610343565b60405161014091906110eb565b60405180910390f35b610163600480360381019061015e9190610ffa565b6104c6565b005b61017f600480360381019061017a9190610e6c565b610644565b60405161018c9190611106565b60405180910390f35b6101af60048036038101906101aa9190610e95565b610677565b005b6101cb60048036038101906101c69190610e95565b61080d565b005b6101e760048036038101906101e29190610f83565b610959565b005b61020360048036038101906101fe9190610e30565b61097b565b005b61021f600480360381019061021a9190610ed1565b610a78565b005b61023b60048036038101906102369190610df4565b610a93565b60405161024891906110d0565b60405180910390f35b61026b60048036038101906102669190610e6c565b610b27565b60405161027891906110d0565b60405180910390f35b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561033957600091505061033e565b809150505b919050565b600083600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806104405750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61044957600080fd5b6000868660405160200161045e929190611089565b6040516020818303038152906040528051906020012090506104808186610b95565b85877fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82876040516104b191906110b5565b60405180910390a38093505050509392505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806105c15750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6105ca57600080fd5b837f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68846040516105fa9190611106565b60405180910390a28260008086815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107725750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61077b57600080fd5b837f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0846040516107ab91906110b5565b60405180910390a28260008086815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806109085750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61091157600080fd5b61091b8484610b95565b837fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2668460405161094b91906110b5565b60405180910390a250505050565b6000610966868686610343565b9050610973818484610bed565b505050505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a6c91906110d0565b60405180910390a35050565b610a82848461080d565b610a8d848383610bed565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8060008084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610ce2578160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051610cd991906110b5565b60405180910390a25b60008084815260200190815260200160002060010160149054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1614610d9b578060008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6882604051610d929190611106565b60405180910390a25b505050565b600081359050610daf81611187565b92915050565b600081359050610dc48161119e565b92915050565b600081359050610dd9816111b5565b92915050565b600081359050610dee816111cc565b92915050565b60008060408385031215610e0757600080fd5b6000610e1585828601610da0565b9250506020610e2685828601610da0565b9150509250929050565b60008060408385031215610e4357600080fd5b6000610e5185828601610da0565b9250506020610e6285828601610db5565b9150509250929050565b600060208284031215610e7e57600080fd5b6000610e8c84828501610dca565b91505092915050565b60008060408385031215610ea857600080fd5b6000610eb685828601610dca565b9250506020610ec785828601610da0565b9150509250929050565b60008060008060808587031215610ee757600080fd5b6000610ef587828801610dca565b9450506020610f0687828801610da0565b9350506040610f1787828801610da0565b9250506060610f2887828801610ddf565b91505092959194509250565b600080600060608486031215610f4957600080fd5b6000610f5786828701610dca565b9350506020610f6886828701610dca565b9250506040610f7986828701610da0565b9150509250925092565b600080600080600060a08688031215610f9b57600080fd5b6000610fa988828901610dca565b9550506020610fba88828901610dca565b9450506040610fcb88828901610da0565b9350506060610fdc88828901610da0565b9250506080610fed88828901610ddf565b9150509295509295909350565b6000806040838503121561100d57600080fd5b600061101b85828601610dca565b925050602061102c85828601610ddf565b9150509250929050565b61103f81611121565b82525050565b61104e81611133565b82525050565b61105d8161113f565b82525050565b61107461106f8261113f565b61117d565b82525050565b61108381611169565b82525050565b60006110958285611063565b6020820191506110a58284611063565b6020820191508190509392505050565b60006020820190506110ca6000830184611036565b92915050565b60006020820190506110e56000830184611045565b92915050565b60006020820190506111006000830184611054565b92915050565b600060208201905061111b600083018461107a565b92915050565b600061112c82611149565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b61119081611121565b811461119b57600080fd5b50565b6111a781611133565b81146111b257600080fd5b50565b6111be8161113f565b81146111c957600080fd5b50565b6111d581611169565b81146111e057600080fd5b5056fea264697066735822122070a17114b480cc62065957bb31b2a341f52a0c35afbb14d932d76a8d45b0d99664736f6c63430008040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80635b0fc9c3116100715780635b0fc9c3146101b15780635ef2c7f0146101cd578063a22cb465146101e9578063cf40882314610205578063e985e9c514610221578063f79fe53814610251576100b4565b80630178b8bf146100b957806302571be3146100e957806306ab59231461011957806314ab90381461014957806316a25cbd146101655780631896f70a14610195575b600080fd5b6100d360048036038101906100ce9190610e6c565b610281565b6040516100e091906110b5565b60405180910390f35b61010360048036038101906100fe9190610e6c565b6102c0565b60405161011091906110b5565b60405180910390f35b610133600480360381019061012e9190610f34565b610343565b60405161014091906110eb565b60405180910390f35b610163600480360381019061015e9190610ffa565b6104c6565b005b61017f600480360381019061017a9190610e6c565b610644565b60405161018c9190611106565b60405180910390f35b6101af60048036038101906101aa9190610e95565b610677565b005b6101cb60048036038101906101c69190610e95565b61080d565b005b6101e760048036038101906101e29190610f83565b610959565b005b61020360048036038101906101fe9190610e30565b61097b565b005b61021f600480360381019061021a9190610ed1565b610a78565b005b61023b60048036038101906102369190610df4565b610a93565b60405161024891906110d0565b60405180910390f35b61026b60048036038101906102669190610e6c565b610b27565b60405161027891906110d0565b60405180910390f35b600080600083815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561033957600091505061033e565b809150505b919050565b600083600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806104405750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61044957600080fd5b6000868660405160200161045e929190611089565b6040516020818303038152906040528051906020012090506104808186610b95565b85877fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82876040516104b191906110b5565b60405180910390a38093505050509392505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806105c15750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6105ca57600080fd5b837f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68846040516105fa9190611106565b60405180910390a28260008086815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b600080600083815260200190815260200160002060010160149054906101000a900467ffffffffffffffff169050919050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806107725750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61077b57600080fd5b837f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0846040516107ab91906110b5565b60405180910390a28260008086815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b81600080600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806109085750600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61091157600080fd5b61091b8484610b95565b837fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2668460405161094b91906110b5565b60405180910390a250505050565b6000610966868686610343565b9050610973818484610bed565b505050505050565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610a6c91906110d0565b60405180910390a35050565b610a82848461080d565b610a8d848383610bed565b50505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff1660008084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b8060008084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008084815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610ce2578160008085815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a083604051610cd991906110b5565b60405180910390a25b60008084815260200190815260200160002060010160149054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1614610d9b578060008085815260200190815260200160002060010160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550827f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa6882604051610d929190611106565b60405180910390a25b505050565b600081359050610daf81611187565b92915050565b600081359050610dc48161119e565b92915050565b600081359050610dd9816111b5565b92915050565b600081359050610dee816111cc565b92915050565b60008060408385031215610e0757600080fd5b6000610e1585828601610da0565b9250506020610e2685828601610da0565b9150509250929050565b60008060408385031215610e4357600080fd5b6000610e5185828601610da0565b9250506020610e6285828601610db5565b9150509250929050565b600060208284031215610e7e57600080fd5b6000610e8c84828501610dca565b91505092915050565b60008060408385031215610ea857600080fd5b6000610eb685828601610dca565b9250506020610ec785828601610da0565b9150509250929050565b60008060008060808587031215610ee757600080fd5b6000610ef587828801610dca565b9450506020610f0687828801610da0565b9350506040610f1787828801610da0565b9250506060610f2887828801610ddf565b91505092959194509250565b600080600060608486031215610f4957600080fd5b6000610f5786828701610dca565b9350506020610f6886828701610dca565b9250506040610f7986828701610da0565b9150509250925092565b600080600080600060a08688031215610f9b57600080fd5b6000610fa988828901610dca565b9550506020610fba88828901610dca565b9450506040610fcb88828901610da0565b9350506060610fdc88828901610da0565b9250506080610fed88828901610ddf565b9150509295509295909350565b6000806040838503121561100d57600080fd5b600061101b85828601610dca565b925050602061102c85828601610ddf565b9150509250929050565b61103f81611121565b82525050565b61104e81611133565b82525050565b61105d8161113f565b82525050565b61107461106f8261113f565b61117d565b82525050565b61108381611169565b82525050565b60006110958285611063565b6020820191506110a58284611063565b6020820191508190509392505050565b60006020820190506110ca6000830184611036565b92915050565b60006020820190506110e56000830184611045565b92915050565b60006020820190506111006000830184611054565b92915050565b600060208201905061111b600083018461107a565b92915050565b600061112c82611149565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600067ffffffffffffffff82169050919050565b6000819050919050565b61119081611121565b811461119b57600080fd5b50565b6111a781611133565b81146111b257600080fd5b50565b6111be8161113f565b81146111c957600080fd5b50565b6111d581611169565b81146111e057600080fd5b5056fea264697066735822122070a17114b480cc62065957bb31b2a341f52a0c35afbb14d932d76a8d45b0d99664736f6c63430008040033",
"linkReferences": {},
"deployedLinkReferences": {}
}
{
"_format": "hh-sol-dbg-1",
"buildInfo": "../../build-info/5ca7e98eacf13e6d7f83fe047a20914a.json"
"buildInfo": "../../build-info/a8e9436cf29031d1138bc44e4b2122a9.json"
}

@@ -515,6 +515,6 @@ {

],
"bytecode": "0x60806040523480156200001157600080fd5b506040516200210738038062002107833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b611fd480620001336000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063c869023311610066578063c86902331461027e578063d5fa2b00146102af578063e89401a1146102cb578063ed80e1f7146102fb576100f5565b8063773722131461020e5780639f3a206d1461022a578063aa4cb54714610246578063c3d014d614610262576100f5565b80633b3b57de116100d35780633b3b57de1461016257806359d1d43c14610192578063623195b0146101c2578063691f3431146101de576100f5565b806310f13a8c146100fa57806329cd62ea146101165780632dff694114610132575b600080fd5b610114600480360381019061010f9190611919565b610330565b005b610130600480360381019061012b9190611822565b6104ce565b005b61014c600480360381019061014791906116b3565b610667565b6040516101599190611ba7565b60405180910390f35b61017c600480360381019061017791906116b3565b610687565b6040516101899190611b1d565b60405180910390f35b6101ac60048036038101906101a791906118c5565b6106c7565b6040516101b99190611c0d565b60405180910390f35b6101dc60048036038101906101d79190611998565b61078c565b005b6101f860048036038101906101f391906116b3565b610964565b6040516102059190611c0d565b60405180910390f35b610228600480360381019061022391906118c5565b610a0c565b005b610244600480360381019061023f9190611718565b610b8b565b005b610260600480360381019061025b9190611871565b610cdf565b005b61027c600480360381019061027791906117e6565b610e5e565b005b610298600480360381019061029391906116b3565b610fcd565b6040516102a6929190611bc2565b60405180910390f35b6102c960048036038101906102c491906116dc565b61100d565b005b6102e560048036038101906102e091906116b3565b6111b6565b6040516102f29190611beb565b60405180910390f35b610315600480360381019061031091906116b3565b61125e565b60405161032796959493929190611b38565b60405180910390f35b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016103a19190611ba7565b60206040518083038186803b1580156103b957600080fd5b505afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f1919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90611c66565b60405180910390fd5b81600160008681526020019081526020016000206005018460405161046c9190611b06565b9081526020016040518091039020908051906020019061048d92919061143d565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755084856040516104c0929190611c2f565b60405180910390a250505050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161053f9190611ba7565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611c66565b60405180910390fd5b604051806040016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610659929190611bc2565b60405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040516106ed9190611b06565b9081526020016040518091039020805461070690611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611e2c565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016107fd9190611ba7565b60206040518083038186803b15801561081557600080fd5b505afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611c66565b60405180910390fd5b6000836001856108b39190611d70565b16146108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90611c86565b60405180910390fd5b81600160008681526020019081526020016000206006016000858152602001908152602001600020908051906020019061092f9291906114c3565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b606060016000838152602001908152602001600020600201805461098790611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546109b390611e2c565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610a7d9190611ba7565b60206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611c66565b60405180910390fd5b81600160008581526020019081526020016000206002019080519060200190610b4d92919061143d565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f783604051610b7e9190611c0d565b60405180910390a2505050565b863373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610bfc9190611ba7565b60206040518083038186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990611c66565b60405180910390fd5b610cac888861100d565b610cb68887610e5e565b610cc08886610cdf565b610ccb8885856104ce565b610cd58883610a0c565b5050505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610d509190611ba7565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da0919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90611c66565b60405180910390fd5b81600160008581526020019081526020016000206007019080519060200190610e209291906114c3565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a502183604051610e519190611beb565b60405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610ecf9190611ba7565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90611c66565b60405180910390fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc83604051610fc09190611ba7565b60405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161107e9190611ba7565b60206040518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90611c66565b60405180910390fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2836040516111a99190611b1d565b60405180910390a2505050565b60606001600083815260200190815260200160002060070180546111d990611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461120590611e2c565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b50505050509050919050565b600080606060008060606001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600160008881526020019081526020016000206001015494506001600088815260200190815260200160002060070180546112db90611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461130790611e2c565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050935060016000888152602001908152602001600020600301600001549250600160008881526020019081526020016000206003016001015491506001600088815260200190815260200160002060020180546113b490611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e090611e2c565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905091939550919395565b82805461144990611e2c565b90600052602060002090601f01602090048101928261146b57600085556114b2565b82601f1061148457805160ff19168380011785556114b2565b828001600101855582156114b2579182015b828111156114b1578251825591602001919060010190611496565b5b5090506114bf9190611549565b5090565b8280546114cf90611e2c565b90600052602060002090601f0160209004810192826114f15760008555611538565b82601f1061150a57805160ff1916838001178555611538565b82800160010185558215611538579182015b8281111561153757825182559160200191906001019061151c565b5b5090506115459190611549565b5090565b5b8082111561156257600081600090555060010161154a565b5090565b600061157961157484611ccb565b611ca6565b90508281526020810184848401111561159157600080fd5b61159c848285611dea565b509392505050565b60006115b76115b284611cfc565b611ca6565b9050828152602081018484840111156115cf57600080fd5b6115da848285611dea565b509392505050565b6000813590506115f181611f59565b92915050565b60008151905061160681611f59565b92915050565b60008135905061161b81611f70565b92915050565b600082601f83011261163257600080fd5b8135611642848260208601611566565b91505092915050565b600082601f83011261165c57600080fd5b813561166c8482602086016115a4565b91505092915050565b60008135905061168481611f87565b92915050565b60006020828403121561169c57600080fd5b60006116aa848285016115f7565b91505092915050565b6000602082840312156116c557600080fd5b60006116d38482850161160c565b91505092915050565b600080604083850312156116ef57600080fd5b60006116fd8582860161160c565b925050602061170e858286016115e2565b9150509250929050565b600080600080600080600060e0888a03121561173357600080fd5b60006117418a828b0161160c565b97505060206117528a828b016115e2565b96505060406117638a828b0161160c565b955050606088013567ffffffffffffffff81111561178057600080fd5b61178c8a828b01611621565b945050608061179d8a828b0161160c565b93505060a06117ae8a828b0161160c565b92505060c088013567ffffffffffffffff8111156117cb57600080fd5b6117d78a828b0161164b565b91505092959891949750929550565b600080604083850312156117f957600080fd5b60006118078582860161160c565b92505060206118188582860161160c565b9150509250929050565b60008060006060848603121561183757600080fd5b60006118458682870161160c565b93505060206118568682870161160c565b92505060406118678682870161160c565b9150509250925092565b6000806040838503121561188457600080fd5b60006118928582860161160c565b925050602083013567ffffffffffffffff8111156118af57600080fd5b6118bb85828601611621565b9150509250929050565b600080604083850312156118d857600080fd5b60006118e68582860161160c565b925050602083013567ffffffffffffffff81111561190357600080fd5b61190f8582860161164b565b9150509250929050565b60008060006060848603121561192e57600080fd5b600061193c8682870161160c565b935050602084013567ffffffffffffffff81111561195957600080fd5b6119658682870161164b565b925050604084013567ffffffffffffffff81111561198257600080fd5b61198e8682870161164b565b9150509250925092565b6000806000606084860312156119ad57600080fd5b60006119bb8682870161160c565b93505060206119cc86828701611675565b925050604084013567ffffffffffffffff8111156119e957600080fd5b6119f586828701611621565b9150509250925092565b611a0881611da4565b82525050565b611a1781611db6565b82525050565b6000611a2882611d2d565b611a328185611d43565b9350611a42818560208601611df9565b611a4b81611f1c565b840191505092915050565b6000611a6182611d38565b611a6b8185611d54565b9350611a7b818560208601611df9565b611a8481611f1c565b840191505092915050565b6000611a9a82611d38565b611aa48185611d65565b9350611ab4818560208601611df9565b80840191505092915050565b6000611acd601383611d54565b9150611ad882611f2d565b602082019050919050565b6000611af0600083611d54565b9150611afb82611f56565b600082019050919050565b6000611b128284611a8f565b915081905092915050565b6000602082019050611b3260008301846119ff565b92915050565b600060c082019050611b4d60008301896119ff565b611b5a6020830188611a0e565b8181036040830152611b6c8187611a1d565b9050611b7b6060830186611a0e565b611b886080830185611a0e565b81810360a0830152611b9a8184611a56565b9050979650505050505050565b6000602082019050611bbc6000830184611a0e565b92915050565b6000604082019050611bd76000830185611a0e565b611be46020830184611a0e565b9392505050565b60006020820190508181036000830152611c058184611a1d565b905092915050565b60006020820190508181036000830152611c278184611a56565b905092915050565b60006040820190508181036000830152611c498185611a56565b90508181036020830152611c5d8184611a56565b90509392505050565b60006020820190508181036000830152611c7f81611ac0565b9050919050565b60006020820190508181036000830152611c9f81611ae3565b9050919050565b6000611cb0611cc1565b9050611cbc8282611e5e565b919050565b6000604051905090565b600067ffffffffffffffff821115611ce657611ce5611eed565b5b611cef82611f1c565b9050602081019050919050565b600067ffffffffffffffff821115611d1757611d16611eed565b5b611d2082611f1c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611d7b82611de0565b9150611d8683611de0565b925082821015611d9957611d98611e8f565b5b828203905092915050565b6000611daf82611dc0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e17578082015181840152602081019050611dfc565b83811115611e26576000848401525b50505050565b60006002820490506001821680611e4457607f821691505b60208210811415611e5857611e57611ebe565b5b50919050565b611e6782611f1c565b810181811067ffffffffffffffff82111715611e8657611e85611eed565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b50565b611f6281611da4565b8114611f6d57600080fd5b50565b611f7981611db6565b8114611f8457600080fd5b50565b611f9081611de0565b8114611f9b57600080fd5b5056fea26469706673582212200020c7a6d1d78d280d271f63be6b6db5bb2e41c7c3913ad1cdcb3f2d7787b42c64736f6c63430008040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063c869023311610066578063c86902331461027e578063d5fa2b00146102af578063e89401a1146102cb578063ed80e1f7146102fb576100f5565b8063773722131461020e5780639f3a206d1461022a578063aa4cb54714610246578063c3d014d614610262576100f5565b80633b3b57de116100d35780633b3b57de1461016257806359d1d43c14610192578063623195b0146101c2578063691f3431146101de576100f5565b806310f13a8c146100fa57806329cd62ea146101165780632dff694114610132575b600080fd5b610114600480360381019061010f9190611919565b610330565b005b610130600480360381019061012b9190611822565b6104ce565b005b61014c600480360381019061014791906116b3565b610667565b6040516101599190611ba7565b60405180910390f35b61017c600480360381019061017791906116b3565b610687565b6040516101899190611b1d565b60405180910390f35b6101ac60048036038101906101a791906118c5565b6106c7565b6040516101b99190611c0d565b60405180910390f35b6101dc60048036038101906101d79190611998565b61078c565b005b6101f860048036038101906101f391906116b3565b610964565b6040516102059190611c0d565b60405180910390f35b610228600480360381019061022391906118c5565b610a0c565b005b610244600480360381019061023f9190611718565b610b8b565b005b610260600480360381019061025b9190611871565b610cdf565b005b61027c600480360381019061027791906117e6565b610e5e565b005b610298600480360381019061029391906116b3565b610fcd565b6040516102a6929190611bc2565b60405180910390f35b6102c960048036038101906102c491906116dc565b61100d565b005b6102e560048036038101906102e091906116b3565b6111b6565b6040516102f29190611beb565b60405180910390f35b610315600480360381019061031091906116b3565b61125e565b60405161032796959493929190611b38565b60405180910390f35b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016103a19190611ba7565b60206040518083038186803b1580156103b957600080fd5b505afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f1919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90611c66565b60405180910390fd5b81600160008681526020019081526020016000206005018460405161046c9190611b06565b9081526020016040518091039020908051906020019061048d92919061143d565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755084856040516104c0929190611c2f565b60405180910390a250505050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161053f9190611ba7565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611c66565b60405180910390fd5b604051806040016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610659929190611bc2565b60405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040516106ed9190611b06565b9081526020016040518091039020805461070690611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611e2c565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016107fd9190611ba7565b60206040518083038186803b15801561081557600080fd5b505afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611c66565b60405180910390fd5b6000836001856108b39190611d70565b16146108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90611c86565b60405180910390fd5b81600160008681526020019081526020016000206006016000858152602001908152602001600020908051906020019061092f9291906114c3565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b606060016000838152602001908152602001600020600201805461098790611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546109b390611e2c565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610a7d9190611ba7565b60206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611c66565b60405180910390fd5b81600160008581526020019081526020016000206002019080519060200190610b4d92919061143d565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f783604051610b7e9190611c0d565b60405180910390a2505050565b863373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610bfc9190611ba7565b60206040518083038186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990611c66565b60405180910390fd5b610cac888861100d565b610cb68887610e5e565b610cc08886610cdf565b610ccb8885856104ce565b610cd58883610a0c565b5050505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610d509190611ba7565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da0919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90611c66565b60405180910390fd5b81600160008581526020019081526020016000206007019080519060200190610e209291906114c3565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a502183604051610e519190611beb565b60405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610ecf9190611ba7565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90611c66565b60405180910390fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc83604051610fc09190611ba7565b60405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161107e9190611ba7565b60206040518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90611c66565b60405180910390fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2836040516111a99190611b1d565b60405180910390a2505050565b60606001600083815260200190815260200160002060070180546111d990611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461120590611e2c565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b50505050509050919050565b600080606060008060606001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600160008881526020019081526020016000206001015494506001600088815260200190815260200160002060070180546112db90611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461130790611e2c565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050935060016000888152602001908152602001600020600301600001549250600160008881526020019081526020016000206003016001015491506001600088815260200190815260200160002060020180546113b490611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e090611e2c565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905091939550919395565b82805461144990611e2c565b90600052602060002090601f01602090048101928261146b57600085556114b2565b82601f1061148457805160ff19168380011785556114b2565b828001600101855582156114b2579182015b828111156114b1578251825591602001919060010190611496565b5b5090506114bf9190611549565b5090565b8280546114cf90611e2c565b90600052602060002090601f0160209004810192826114f15760008555611538565b82601f1061150a57805160ff1916838001178555611538565b82800160010185558215611538579182015b8281111561153757825182559160200191906001019061151c565b5b5090506115459190611549565b5090565b5b8082111561156257600081600090555060010161154a565b5090565b600061157961157484611ccb565b611ca6565b90508281526020810184848401111561159157600080fd5b61159c848285611dea565b509392505050565b60006115b76115b284611cfc565b611ca6565b9050828152602081018484840111156115cf57600080fd5b6115da848285611dea565b509392505050565b6000813590506115f181611f59565b92915050565b60008151905061160681611f59565b92915050565b60008135905061161b81611f70565b92915050565b600082601f83011261163257600080fd5b8135611642848260208601611566565b91505092915050565b600082601f83011261165c57600080fd5b813561166c8482602086016115a4565b91505092915050565b60008135905061168481611f87565b92915050565b60006020828403121561169c57600080fd5b60006116aa848285016115f7565b91505092915050565b6000602082840312156116c557600080fd5b60006116d38482850161160c565b91505092915050565b600080604083850312156116ef57600080fd5b60006116fd8582860161160c565b925050602061170e858286016115e2565b9150509250929050565b600080600080600080600060e0888a03121561173357600080fd5b60006117418a828b0161160c565b97505060206117528a828b016115e2565b96505060406117638a828b0161160c565b955050606088013567ffffffffffffffff81111561178057600080fd5b61178c8a828b01611621565b945050608061179d8a828b0161160c565b93505060a06117ae8a828b0161160c565b92505060c088013567ffffffffffffffff8111156117cb57600080fd5b6117d78a828b0161164b565b91505092959891949750929550565b600080604083850312156117f957600080fd5b60006118078582860161160c565b92505060206118188582860161160c565b9150509250929050565b60008060006060848603121561183757600080fd5b60006118458682870161160c565b93505060206118568682870161160c565b92505060406118678682870161160c565b9150509250925092565b6000806040838503121561188457600080fd5b60006118928582860161160c565b925050602083013567ffffffffffffffff8111156118af57600080fd5b6118bb85828601611621565b9150509250929050565b600080604083850312156118d857600080fd5b60006118e68582860161160c565b925050602083013567ffffffffffffffff81111561190357600080fd5b61190f8582860161164b565b9150509250929050565b60008060006060848603121561192e57600080fd5b600061193c8682870161160c565b935050602084013567ffffffffffffffff81111561195957600080fd5b6119658682870161164b565b925050604084013567ffffffffffffffff81111561198257600080fd5b61198e8682870161164b565b9150509250925092565b6000806000606084860312156119ad57600080fd5b60006119bb8682870161160c565b93505060206119cc86828701611675565b925050604084013567ffffffffffffffff8111156119e957600080fd5b6119f586828701611621565b9150509250925092565b611a0881611da4565b82525050565b611a1781611db6565b82525050565b6000611a2882611d2d565b611a328185611d43565b9350611a42818560208601611df9565b611a4b81611f1c565b840191505092915050565b6000611a6182611d38565b611a6b8185611d54565b9350611a7b818560208601611df9565b611a8481611f1c565b840191505092915050565b6000611a9a82611d38565b611aa48185611d65565b9350611ab4818560208601611df9565b80840191505092915050565b6000611acd601383611d54565b9150611ad882611f2d565b602082019050919050565b6000611af0600083611d54565b9150611afb82611f56565b600082019050919050565b6000611b128284611a8f565b915081905092915050565b6000602082019050611b3260008301846119ff565b92915050565b600060c082019050611b4d60008301896119ff565b611b5a6020830188611a0e565b8181036040830152611b6c8187611a1d565b9050611b7b6060830186611a0e565b611b886080830185611a0e565b81810360a0830152611b9a8184611a56565b9050979650505050505050565b6000602082019050611bbc6000830184611a0e565b92915050565b6000604082019050611bd76000830185611a0e565b611be46020830184611a0e565b9392505050565b60006020820190508181036000830152611c058184611a1d565b905092915050565b60006020820190508181036000830152611c278184611a56565b905092915050565b60006040820190508181036000830152611c498185611a56565b90508181036020830152611c5d8184611a56565b90509392505050565b60006020820190508181036000830152611c7f81611ac0565b9050919050565b60006020820190508181036000830152611c9f81611ae3565b9050919050565b6000611cb0611cc1565b9050611cbc8282611e5e565b919050565b6000604051905090565b600067ffffffffffffffff821115611ce657611ce5611eed565b5b611cef82611f1c565b9050602081019050919050565b600067ffffffffffffffff821115611d1757611d16611eed565b5b611d2082611f1c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611d7b82611de0565b9150611d8683611de0565b925082821015611d9957611d98611e8f565b5b828203905092915050565b6000611daf82611dc0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e17578082015181840152602081019050611dfc565b83811115611e26576000848401525b50505050565b60006002820490506001821680611e4457607f821691505b60208210811415611e5857611e57611ebe565b5b50919050565b611e6782611f1c565b810181811067ffffffffffffffff82111715611e8657611e85611eed565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b50565b611f6281611da4565b8114611f6d57600080fd5b50565b611f7981611db6565b8114611f8457600080fd5b50565b611f9081611de0565b8114611f9b57600080fd5b5056fea26469706673582212200020c7a6d1d78d280d271f63be6b6db5bb2e41c7c3913ad1cdcb3f2d7787b42c64736f6c63430008040033",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200210738038062002107833981810160405281019062000037919062000095565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000123565b6000815190506200008f8162000109565b92915050565b600060208284031215620000a857600080fd5b6000620000b8848285016200007e565b91505092915050565b6000620000ce82620000e9565b9050919050565b6000620000e282620000c1565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200011481620000d5565b81146200012057600080fd5b50565b611fd480620001336000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063c869023311610066578063c86902331461027e578063d5fa2b00146102af578063e89401a1146102cb578063ed80e1f7146102fb576100f5565b8063773722131461020e5780639f3a206d1461022a578063aa4cb54714610246578063c3d014d614610262576100f5565b80633b3b57de116100d35780633b3b57de1461016257806359d1d43c14610192578063623195b0146101c2578063691f3431146101de576100f5565b806310f13a8c146100fa57806329cd62ea146101165780632dff694114610132575b600080fd5b610114600480360381019061010f9190611919565b610330565b005b610130600480360381019061012b9190611822565b6104ce565b005b61014c600480360381019061014791906116b3565b610667565b6040516101599190611ba7565b60405180910390f35b61017c600480360381019061017791906116b3565b610687565b6040516101899190611b1d565b60405180910390f35b6101ac60048036038101906101a791906118c5565b6106c7565b6040516101b99190611c0d565b60405180910390f35b6101dc60048036038101906101d79190611998565b61078c565b005b6101f860048036038101906101f391906116b3565b610964565b6040516102059190611c0d565b60405180910390f35b610228600480360381019061022391906118c5565b610a0c565b005b610244600480360381019061023f9190611718565b610b8b565b005b610260600480360381019061025b9190611871565b610cdf565b005b61027c600480360381019061027791906117e6565b610e5e565b005b610298600480360381019061029391906116b3565b610fcd565b6040516102a6929190611bc2565b60405180910390f35b6102c960048036038101906102c491906116dc565b61100d565b005b6102e560048036038101906102e091906116b3565b6111b6565b6040516102f29190611beb565b60405180910390f35b610315600480360381019061031091906116b3565b61125e565b60405161032796959493929190611b38565b60405180910390f35b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016103a19190611ba7565b60206040518083038186803b1580156103b957600080fd5b505afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f1919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90611c66565b60405180910390fd5b81600160008681526020019081526020016000206005018460405161046c9190611b06565b9081526020016040518091039020908051906020019061048d92919061143d565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755084856040516104c0929190611c2f565b60405180910390a250505050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161053f9190611ba7565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611c66565b60405180910390fd5b604051806040016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610659929190611bc2565b60405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040516106ed9190611b06565b9081526020016040518091039020805461070690611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611e2c565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016107fd9190611ba7565b60206040518083038186803b15801561081557600080fd5b505afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611c66565b60405180910390fd5b6000836001856108b39190611d70565b16146108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90611c86565b60405180910390fd5b81600160008681526020019081526020016000206006016000858152602001908152602001600020908051906020019061092f9291906114c3565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b606060016000838152602001908152602001600020600201805461098790611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546109b390611e2c565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610a7d9190611ba7565b60206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611c66565b60405180910390fd5b81600160008581526020019081526020016000206002019080519060200190610b4d92919061143d565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f783604051610b7e9190611c0d565b60405180910390a2505050565b863373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610bfc9190611ba7565b60206040518083038186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990611c66565b60405180910390fd5b610cac888861100d565b610cb68887610e5e565b610cc08886610cdf565b610ccb8885856104ce565b610cd58883610a0c565b5050505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610d509190611ba7565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da0919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90611c66565b60405180910390fd5b81600160008581526020019081526020016000206007019080519060200190610e209291906114c3565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a502183604051610e519190611beb565b60405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610ecf9190611ba7565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90611c66565b60405180910390fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc83604051610fc09190611ba7565b60405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161107e9190611ba7565b60206040518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90611c66565b60405180910390fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2836040516111a99190611b1d565b60405180910390a2505050565b60606001600083815260200190815260200160002060070180546111d990611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461120590611e2c565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b50505050509050919050565b600080606060008060606001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600160008881526020019081526020016000206001015494506001600088815260200190815260200160002060070180546112db90611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461130790611e2c565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050935060016000888152602001908152602001600020600301600001549250600160008881526020019081526020016000206003016001015491506001600088815260200190815260200160002060020180546113b490611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e090611e2c565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905091939550919395565b82805461144990611e2c565b90600052602060002090601f01602090048101928261146b57600085556114b2565b82601f1061148457805160ff19168380011785556114b2565b828001600101855582156114b2579182015b828111156114b1578251825591602001919060010190611496565b5b5090506114bf9190611549565b5090565b8280546114cf90611e2c565b90600052602060002090601f0160209004810192826114f15760008555611538565b82601f1061150a57805160ff1916838001178555611538565b82800160010185558215611538579182015b8281111561153757825182559160200191906001019061151c565b5b5090506115459190611549565b5090565b5b8082111561156257600081600090555060010161154a565b5090565b600061157961157484611ccb565b611ca6565b90508281526020810184848401111561159157600080fd5b61159c848285611dea565b509392505050565b60006115b76115b284611cfc565b611ca6565b9050828152602081018484840111156115cf57600080fd5b6115da848285611dea565b509392505050565b6000813590506115f181611f59565b92915050565b60008151905061160681611f59565b92915050565b60008135905061161b81611f70565b92915050565b600082601f83011261163257600080fd5b8135611642848260208601611566565b91505092915050565b600082601f83011261165c57600080fd5b813561166c8482602086016115a4565b91505092915050565b60008135905061168481611f87565b92915050565b60006020828403121561169c57600080fd5b60006116aa848285016115f7565b91505092915050565b6000602082840312156116c557600080fd5b60006116d38482850161160c565b91505092915050565b600080604083850312156116ef57600080fd5b60006116fd8582860161160c565b925050602061170e858286016115e2565b9150509250929050565b600080600080600080600060e0888a03121561173357600080fd5b60006117418a828b0161160c565b97505060206117528a828b016115e2565b96505060406117638a828b0161160c565b955050606088013567ffffffffffffffff81111561178057600080fd5b61178c8a828b01611621565b945050608061179d8a828b0161160c565b93505060a06117ae8a828b0161160c565b92505060c088013567ffffffffffffffff8111156117cb57600080fd5b6117d78a828b0161164b565b91505092959891949750929550565b600080604083850312156117f957600080fd5b60006118078582860161160c565b92505060206118188582860161160c565b9150509250929050565b60008060006060848603121561183757600080fd5b60006118458682870161160c565b93505060206118568682870161160c565b92505060406118678682870161160c565b9150509250925092565b6000806040838503121561188457600080fd5b60006118928582860161160c565b925050602083013567ffffffffffffffff8111156118af57600080fd5b6118bb85828601611621565b9150509250929050565b600080604083850312156118d857600080fd5b60006118e68582860161160c565b925050602083013567ffffffffffffffff81111561190357600080fd5b61190f8582860161164b565b9150509250929050565b60008060006060848603121561192e57600080fd5b600061193c8682870161160c565b935050602084013567ffffffffffffffff81111561195957600080fd5b6119658682870161164b565b925050604084013567ffffffffffffffff81111561198257600080fd5b61198e8682870161164b565b9150509250925092565b6000806000606084860312156119ad57600080fd5b60006119bb8682870161160c565b93505060206119cc86828701611675565b925050604084013567ffffffffffffffff8111156119e957600080fd5b6119f586828701611621565b9150509250925092565b611a0881611da4565b82525050565b611a1781611db6565b82525050565b6000611a2882611d2d565b611a328185611d43565b9350611a42818560208601611df9565b611a4b81611f1c565b840191505092915050565b6000611a6182611d38565b611a6b8185611d54565b9350611a7b818560208601611df9565b611a8481611f1c565b840191505092915050565b6000611a9a82611d38565b611aa48185611d65565b9350611ab4818560208601611df9565b80840191505092915050565b6000611acd601383611d54565b9150611ad882611f2d565b602082019050919050565b6000611af0600083611d54565b9150611afb82611f56565b600082019050919050565b6000611b128284611a8f565b915081905092915050565b6000602082019050611b3260008301846119ff565b92915050565b600060c082019050611b4d60008301896119ff565b611b5a6020830188611a0e565b8181036040830152611b6c8187611a1d565b9050611b7b6060830186611a0e565b611b886080830185611a0e565b81810360a0830152611b9a8184611a56565b9050979650505050505050565b6000602082019050611bbc6000830184611a0e565b92915050565b6000604082019050611bd76000830185611a0e565b611be46020830184611a0e565b9392505050565b60006020820190508181036000830152611c058184611a1d565b905092915050565b60006020820190508181036000830152611c278184611a56565b905092915050565b60006040820190508181036000830152611c498185611a56565b90508181036020830152611c5d8184611a56565b90509392505050565b60006020820190508181036000830152611c7f81611ac0565b9050919050565b60006020820190508181036000830152611c9f81611ae3565b9050919050565b6000611cb0611cc1565b9050611cbc8282611e5e565b919050565b6000604051905090565b600067ffffffffffffffff821115611ce657611ce5611eed565b5b611cef82611f1c565b9050602081019050919050565b600067ffffffffffffffff821115611d1757611d16611eed565b5b611d2082611f1c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611d7b82611de0565b9150611d8683611de0565b925082821015611d9957611d98611e8f565b5b828203905092915050565b6000611daf82611dc0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e17578082015181840152602081019050611dfc565b83811115611e26576000848401525b50505050565b60006002820490506001821680611e4457607f821691505b60208210811415611e5857611e57611ebe565b5b50919050565b611e6782611f1c565b810181811067ffffffffffffffff82111715611e8657611e85611eed565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b50565b611f6281611da4565b8114611f6d57600080fd5b50565b611f7981611db6565b8114611f8457600080fd5b50565b611f9081611de0565b8114611f9b57600080fd5b5056fea2646970667358221220bae0c05770682aa0d6ad384962c3018d8f30a77afb8d72e7916a6299cfff797f64736f6c63430008040033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637737221311610097578063c869023311610066578063c86902331461027e578063d5fa2b00146102af578063e89401a1146102cb578063ed80e1f7146102fb576100f5565b8063773722131461020e5780639f3a206d1461022a578063aa4cb54714610246578063c3d014d614610262576100f5565b80633b3b57de116100d35780633b3b57de1461016257806359d1d43c14610192578063623195b0146101c2578063691f3431146101de576100f5565b806310f13a8c146100fa57806329cd62ea146101165780632dff694114610132575b600080fd5b610114600480360381019061010f9190611919565b610330565b005b610130600480360381019061012b9190611822565b6104ce565b005b61014c600480360381019061014791906116b3565b610667565b6040516101599190611ba7565b60405180910390f35b61017c600480360381019061017791906116b3565b610687565b6040516101899190611b1d565b60405180910390f35b6101ac60048036038101906101a791906118c5565b6106c7565b6040516101b99190611c0d565b60405180910390f35b6101dc60048036038101906101d79190611998565b61078c565b005b6101f860048036038101906101f391906116b3565b610964565b6040516102059190611c0d565b60405180910390f35b610228600480360381019061022391906118c5565b610a0c565b005b610244600480360381019061023f9190611718565b610b8b565b005b610260600480360381019061025b9190611871565b610cdf565b005b61027c600480360381019061027791906117e6565b610e5e565b005b610298600480360381019061029391906116b3565b610fcd565b6040516102a6929190611bc2565b60405180910390f35b6102c960048036038101906102c491906116dc565b61100d565b005b6102e560048036038101906102e091906116b3565b6111b6565b6040516102f29190611beb565b60405180910390f35b610315600480360381019061031091906116b3565b61125e565b60405161032796959493929190611b38565b60405180910390f35b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016103a19190611ba7565b60206040518083038186803b1580156103b957600080fd5b505afa1580156103cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f1919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90611c66565b60405180910390fd5b81600160008681526020019081526020016000206005018460405161046c9190611b06565b9081526020016040518091039020908051906020019061048d92919061143d565b50837fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755084856040516104c0929190611c2f565b60405180910390a250505050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161053f9190611ba7565b60206040518083038186803b15801561055757600080fd5b505afa15801561056b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061058f919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90611c66565b60405180910390fd5b604051806040016040528084815260200183815250600160008681526020019081526020016000206003016000820151816000015560208201518160010155905050837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e468484604051610659929190611bc2565b60405180910390a250505050565b600060016000838152602001908152602001600020600101549050919050565b60006001600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b606060016000848152602001908152602001600020600501826040516106ed9190611b06565b9081526020016040518091039020805461070690611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461073290611e2c565b801561077f5780601f106107545761010080835404028352916020019161077f565b820191906000526020600020905b81548152906001019060200180831161076257829003601f168201915b5050505050905092915050565b823373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b81526004016107fd9190611ba7565b60206040518083038186803b15801561081557600080fd5b505afa158015610829573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084d919061168a565b73ffffffffffffffffffffffffffffffffffffffff16146108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089a90611c66565b60405180910390fd5b6000836001856108b39190611d70565b16146108f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108eb90611c86565b60405180910390fd5b81600160008681526020019081526020016000206006016000858152602001908152602001600020908051906020019061092f9291906114c3565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b606060016000838152602001908152602001600020600201805461098790611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546109b390611e2c565b8015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b50505050509050919050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610a7d9190611ba7565b60206040518083038186803b158015610a9557600080fd5b505afa158015610aa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611c66565b60405180910390fd5b81600160008581526020019081526020016000206002019080519060200190610b4d92919061143d565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f783604051610b7e9190611c0d565b60405180910390a2505050565b863373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610bfc9190611ba7565b60206040518083038186803b158015610c1457600080fd5b505afa158015610c28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4c919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990611c66565b60405180910390fd5b610cac888861100d565b610cb68887610e5e565b610cc08886610cdf565b610ccb8885856104ce565b610cd58883610a0c565b5050505050505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610d509190611ba7565b60206040518083038186803b158015610d6857600080fd5b505afa158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da0919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ded90611c66565b60405180910390fd5b81600160008581526020019081526020016000206007019080519060200190610e209291906114c3565b50827fc0b0fc07269fc2749adada3221c095a1d2187b2d075b51c915857b520f3a502183604051610e519190611beb565b60405180910390a2505050565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b8152600401610ecf9190611ba7565b60206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1f919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614610f75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6c90611c66565b60405180910390fd5b816001600085815260200190815260200160002060010181905550827f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc83604051610fc09190611ba7565b60405180910390a2505050565b6000806001600084815260200190815260200160002060030160000154600160008581526020019081526020016000206003016001015491509150915091565b813373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302571be3836040518263ffffffff1660e01b815260040161107e9190611ba7565b60206040518083038186803b15801561109657600080fd5b505afa1580156110aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ce919061168a565b73ffffffffffffffffffffffffffffffffffffffff1614611124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111b90611c66565b60405180910390fd5b816001600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550827f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2836040516111a99190611b1d565b60405180910390a2505050565b60606001600083815260200190815260200160002060070180546111d990611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461120590611e2c565b80156112525780601f1061122757610100808354040283529160200191611252565b820191906000526020600020905b81548152906001019060200180831161123557829003601f168201915b50505050509050919050565b600080606060008060606001600088815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169550600160008881526020019081526020016000206001015494506001600088815260200190815260200160002060070180546112db90611e2c565b80601f016020809104026020016040519081016040528092919081815260200182805461130790611e2c565b80156113545780601f1061132957610100808354040283529160200191611354565b820191906000526020600020905b81548152906001019060200180831161133757829003601f168201915b5050505050935060016000888152602001908152602001600020600301600001549250600160008881526020019081526020016000206003016001015491506001600088815260200190815260200160002060020180546113b490611e2c565b80601f01602080910402602001604051908101604052809291908181526020018280546113e090611e2c565b801561142d5780601f106114025761010080835404028352916020019161142d565b820191906000526020600020905b81548152906001019060200180831161141057829003601f168201915b5050505050905091939550919395565b82805461144990611e2c565b90600052602060002090601f01602090048101928261146b57600085556114b2565b82601f1061148457805160ff19168380011785556114b2565b828001600101855582156114b2579182015b828111156114b1578251825591602001919060010190611496565b5b5090506114bf9190611549565b5090565b8280546114cf90611e2c565b90600052602060002090601f0160209004810192826114f15760008555611538565b82601f1061150a57805160ff1916838001178555611538565b82800160010185558215611538579182015b8281111561153757825182559160200191906001019061151c565b5b5090506115459190611549565b5090565b5b8082111561156257600081600090555060010161154a565b5090565b600061157961157484611ccb565b611ca6565b90508281526020810184848401111561159157600080fd5b61159c848285611dea565b509392505050565b60006115b76115b284611cfc565b611ca6565b9050828152602081018484840111156115cf57600080fd5b6115da848285611dea565b509392505050565b6000813590506115f181611f59565b92915050565b60008151905061160681611f59565b92915050565b60008135905061161b81611f70565b92915050565b600082601f83011261163257600080fd5b8135611642848260208601611566565b91505092915050565b600082601f83011261165c57600080fd5b813561166c8482602086016115a4565b91505092915050565b60008135905061168481611f87565b92915050565b60006020828403121561169c57600080fd5b60006116aa848285016115f7565b91505092915050565b6000602082840312156116c557600080fd5b60006116d38482850161160c565b91505092915050565b600080604083850312156116ef57600080fd5b60006116fd8582860161160c565b925050602061170e858286016115e2565b9150509250929050565b600080600080600080600060e0888a03121561173357600080fd5b60006117418a828b0161160c565b97505060206117528a828b016115e2565b96505060406117638a828b0161160c565b955050606088013567ffffffffffffffff81111561178057600080fd5b61178c8a828b01611621565b945050608061179d8a828b0161160c565b93505060a06117ae8a828b0161160c565b92505060c088013567ffffffffffffffff8111156117cb57600080fd5b6117d78a828b0161164b565b91505092959891949750929550565b600080604083850312156117f957600080fd5b60006118078582860161160c565b92505060206118188582860161160c565b9150509250929050565b60008060006060848603121561183757600080fd5b60006118458682870161160c565b93505060206118568682870161160c565b92505060406118678682870161160c565b9150509250925092565b6000806040838503121561188457600080fd5b60006118928582860161160c565b925050602083013567ffffffffffffffff8111156118af57600080fd5b6118bb85828601611621565b9150509250929050565b600080604083850312156118d857600080fd5b60006118e68582860161160c565b925050602083013567ffffffffffffffff81111561190357600080fd5b61190f8582860161164b565b9150509250929050565b60008060006060848603121561192e57600080fd5b600061193c8682870161160c565b935050602084013567ffffffffffffffff81111561195957600080fd5b6119658682870161164b565b925050604084013567ffffffffffffffff81111561198257600080fd5b61198e8682870161164b565b9150509250925092565b6000806000606084860312156119ad57600080fd5b60006119bb8682870161160c565b93505060206119cc86828701611675565b925050604084013567ffffffffffffffff8111156119e957600080fd5b6119f586828701611621565b9150509250925092565b611a0881611da4565b82525050565b611a1781611db6565b82525050565b6000611a2882611d2d565b611a328185611d43565b9350611a42818560208601611df9565b611a4b81611f1c565b840191505092915050565b6000611a6182611d38565b611a6b8185611d54565b9350611a7b818560208601611df9565b611a8481611f1c565b840191505092915050565b6000611a9a82611d38565b611aa48185611d65565b9350611ab4818560208601611df9565b80840191505092915050565b6000611acd601383611d54565b9150611ad882611f2d565b602082019050919050565b6000611af0600083611d54565b9150611afb82611f56565b600082019050919050565b6000611b128284611a8f565b915081905092915050565b6000602082019050611b3260008301846119ff565b92915050565b600060c082019050611b4d60008301896119ff565b611b5a6020830188611a0e565b8181036040830152611b6c8187611a1d565b9050611b7b6060830186611a0e565b611b886080830185611a0e565b81810360a0830152611b9a8184611a56565b9050979650505050505050565b6000602082019050611bbc6000830184611a0e565b92915050565b6000604082019050611bd76000830185611a0e565b611be46020830184611a0e565b9392505050565b60006020820190508181036000830152611c058184611a1d565b905092915050565b60006020820190508181036000830152611c278184611a56565b905092915050565b60006040820190508181036000830152611c498185611a56565b90508181036020830152611c5d8184611a56565b90509392505050565b60006020820190508181036000830152611c7f81611ac0565b9050919050565b60006020820190508181036000830152611c9f81611ae3565b9050919050565b6000611cb0611cc1565b9050611cbc8282611e5e565b919050565b6000604051905090565b600067ffffffffffffffff821115611ce657611ce5611eed565b5b611cef82611f1c565b9050602081019050919050565b600067ffffffffffffffff821115611d1757611d16611eed565b5b611d2082611f1c565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000611d7b82611de0565b9150611d8683611de0565b925082821015611d9957611d98611e8f565b5b828203905092915050565b6000611daf82611dc0565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e17578082015181840152602081019050611dfc565b83811115611e26576000848401525b50505050565b60006002820490506001821680611e4457607f821691505b60208210811415611e5857611e57611ebe565b5b50919050565b611e6782611f1c565b810181811067ffffffffffffffff82111715611e8657611e85611eed565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f4f776e6572206973206e6f742073656e64657200000000000000000000000000600082015250565b50565b611f6281611da4565b8114611f6d57600080fd5b50565b611f7981611db6565b8114611f8457600080fd5b50565b611f9081611de0565b8114611f9b57600080fd5b5056fea2646970667358221220bae0c05770682aa0d6ad384962c3018d8f30a77afb8d72e7916a6299cfff797f64736f6c63430008040033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -7,3 +7,3 @@ import { EthAddress } from './hex.types'

ensRegistry: EthAddress
subdomainRegistrar: EthAddress
fdsRegistrar: EthAddress
publicResolver: EthAddress

@@ -10,0 +10,0 @@ }

@@ -10,5 +10,5 @@ import { utils, Contract, Signer, providers, BigNumber } from 'ethers'

import { Environment } from '../model/environment.model'
import ENSRegistryContractLocal from '../contracts/ENSRegistry/ENSRegistry.json'
import ENSRegistryContractLocal from '../contracts/ENS/ENS.json'
import PublicResolverContractLocal from '../contracts/PublicResolver/PublicResolver.json'
import SubdomainRegistrarContractLocal from '../contracts/SubdomainRegistrar/SubdomainRegistrar.json'
import FDSRegistrarContractLocal from '../contracts/FDSRegistrar/FDSRegistrar.json'
import { Username } from '../model/domain.type'

@@ -24,3 +24,3 @@ import { assertUsername } from '../utils/domains'

export const PublicResolverContract = PublicResolverContractLocal
export const SubdomainRegistrarContract = SubdomainRegistrarContractLocal
export const FDSRegistrarContract = FDSRegistrarContractLocal

@@ -36,3 +36,3 @@ const MIN_BALANCE = BigNumber.from('10000000000000000')

private _ensRegistryContract: Contract
private _subdomainRegistrarContract: Contract
private _fdsRegistrarContract: Contract
private _publicResolverContract: Contract

@@ -47,11 +47,7 @@

const { ensRegistry, subdomainRegistrar, publicResolver } = config.contractAddresses
const { ensRegistry, fdsRegistrar, publicResolver } = config.contractAddresses
this._ensRegistryContract = new Contract(ensRegistry, ENSRegistryContract.abi, this._provider)
this._publicResolverContract = new Contract(publicResolver, PublicResolverContract.abi, this._provider)
this._subdomainRegistrarContract = new Contract(
subdomainRegistrar,
SubdomainRegistrarContract.abi,
this._provider,
)
this._fdsRegistrarContract = new Contract(fdsRegistrar, FDSRegistrarContract.abi, this._provider)

@@ -76,3 +72,3 @@ if (signerOrProvider) {

this._publicResolverContract = this._publicResolverContract.connect(signerOrProvider)
this._subdomainRegistrarContract = this._subdomainRegistrarContract.connect(signerOrProvider)
this._fdsRegistrarContract = this._fdsRegistrarContract.connect(signerOrProvider)
this._ensRegistryContract = this._ensRegistryContract.connect(signerOrProvider)

@@ -115,2 +111,3 @@ }

publicKey: PublicKey,
expires: number = 86400,
): Promise<void> {

@@ -134,3 +131,3 @@ try {

await waitTransaction(
this._subdomainRegistrarContract.register(keccak256(toUtf8Bytes(username)), address),
this._fdsRegistrarContract.register(keccak256(toUtf8Bytes(username)), address, expires),
)

@@ -148,2 +145,3 @@ }

} catch (error) {
console.error(error)
if (isTxError(error)) {

@@ -150,0 +148,0 @@ throw new Error(extractMessageFromFailedTx(error))

import { Wallet } from 'ethers'
import { ENS, Environments, getEnvironmentConfig } from '../..'
// @ts-ignore
import { ENS, Environments, getEnvironmentConfig } from '../../'

@@ -4,0 +5,0 @@ describe('ENS service tests', () => {

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet