{
  "contractName": "DemocracyTemplate",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "minimeFac",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        }
      ],
      "name": "newToken",
      "outputs": [
        {
          "name": "token",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "holders",
          "type": "address[]"
        },
        {
          "name": "tokens",
          "type": "uint256[]"
        },
        {
          "name": "supportNeeded",
          "type": "uint256"
        },
        {
          "name": "minAcceptanceQuorum",
          "type": "uint256"
        },
        {
          "name": "voteDuration",
          "type": "uint64"
        }
      ],
      "name": "newInstance",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "etherToken",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "apm",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "fac",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "latestVersionAppBase",
      "outputs": [
        {
          "name": "base",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "aragonID",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "appIds",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_fac",
          "type": "address"
        },
        {
          "name": "_minimeFac",
          "type": "address"
        },
        {
          "name": "_apm",
          "type": "address"
        },
        {
          "name": "_etherToken",
          "type": "address"
        },
        {
          "name": "_aragonID",
          "type": "address"
        },
        {
          "name": "_appIds",
          "type": "bytes32[4]"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "cacheOwner",
          "type": "address"
        }
      ],
      "name": "DeployToken",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "dao",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "token",
          "type": "address"
        }
      ],
      "name": "DeployInstance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "appProxy",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "appId",
          "type": "bytes32"
        }
      ],
      "name": "InstalledApp",
      "type": "event"
    }
  ],
  "bytecode": "0x606060405234156200001057600080fd5b604051610120806200372c8339810160405280805190602001909190805190602001909190805190602001909190805190602001909190805190602001909150858585858585836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806005906004620001ad929190620001c0565b5050505050505050505050505062000233565b8260048101928215620001f8579160200282015b82811115620001f7578251829060001916905591602001919060010190620001d4565b5b5090506200020791906200020b565b5090565b6200023091905b808211156200022c57600081600090555060010162000212565b5090565b90565b6134e980620002436000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063039fa7601461009e5780634629ffea146100f35780636d3a848114610175578063b8066bcb146101f0578063bc8c35f214610245578063c3b314721461029a578063c6d2c717146102ef578063d165603f14610356578063ef41afcd146103ab575b600080fd5b34156100a957600080fd5b6100b16103ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100fe57600080fd5b610133600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050610410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561018057600080fd5b6101ee600480803590602001908201803590602001919091929080359060200190820180359060200191909192908035906020019082018035906020019190919290803590602001909190803590602001909190803567ffffffffffffffff1690602001909190505061056c565b005b34156101fb57600080fd5b610203610720565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025057600080fd5b610258610746565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102a557600080fd5b6102ad61076b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fa57600080fd5b610314600480803560001916906020019091905050610791565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036157600080fd5b610369610977565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b657600080fd5b6103cc600480803590602001909190505061099d565b60405180826000191660001916815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b7b72c160008088886012898960016000604051602001526040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001888152602001806020018660ff168152602001806020018415151515815260200183810383528989828181526020019250808284378201915050838103825286868281815260200192508082843782019150509a5050505050505050505050602060405180830381600087803b151561053d57600080fd5b6102c65a03f1151561054e57600080fd5b50505060405180519050905061056481336109b7565b949350505050565b60008061057833610ab3565b91506106378b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050838b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c1e565b90508073ffffffffffffffffffffffffffffffffffffffff16633ee31e70838787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018267ffffffffffffffff1667ffffffffffffffff168152602001945050505050600060405180830381600087803b15156106ff57600080fd5b6102c65a03f1151561071057600080fd5b5050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061079c613242565b73ffffffffffffffffffffffffffffffffffffffff16630178b8bf846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561081a57600080fd5b6102c65a03f1151561082b57600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16633b3b57de846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156108b357600080fd5b6102c65a03f115156108c457600080fd5b5050506040518051905090508073ffffffffffffffffffffffffffffffffffffffff1663c36af460600060405160a001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160a060405180830381600087803b151561093c57600080fd5b6102c65a03f1151561094d57600080fd5b50505060405180606001805190602001805190602001604052909150508092505081915050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005816004811015156109ac57fe5b016000915090505481565b81600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f07ab516ad4f19b4465f15fa7c2dbc064f18e734a0846d6e0932da244aa3d8a7183604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600080600073ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b5157600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580915050919050565b600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321687444306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610cef57600080fd5b6102c65a03f11515610d0057600080fd5b5050506040518051905096508673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7857600080fd5b6102c65a03f11515610d8957600080fd5b5050506040518051905095508573ffffffffffffffffffffffffffffffffffffffff1663be03847830898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610e1f57600080fd5b6102c65a03f11515610e3057600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515610f2d57600080fd5b6102c65a03f11515610f3e57600080fd5b5050508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac36005600380811115610f6b57fe5b60ff16600481101515610f7a57fe5b0154610fa36005600380811115610f8d57fe5b60ff16600481101515610f9c57fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561103857600080fd5b6102c65a03f1151561104957600080fd5b5050506040518051905094507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e385600560038081111561108557fe5b60ff1660048110151561109457fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac360056002600381111561111157fe5b60ff1660048110151561112057fe5b015461114a60056002600381111561113457fe5b60ff1660048110151561114357fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156111df57600080fd5b6102c65a03f115156111f057600080fd5b5050506040518051905093507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e38460056002600381111561122d57fe5b60ff1660048110151561123c57fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac36005600060038111156112b957fe5b60ff166004811015156112c857fe5b01546112f26005600060038111156112dc57fe5b60ff166004811015156112eb57fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561138757600080fd5b6102c65a03f1151561139857600080fd5b5050506040518051905092507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3836005600060038111156113d557fe5b60ff166004811015156113e457fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac360056001600381111561146157fe5b60ff1660048110151561147057fe5b015461149a60056001600381111561148457fe5b60ff1660048110151561149357fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561152f57600080fd5b6102c65a03f1151561154057600080fd5b5050506040518051905091507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e38260056001600381111561157d57fe5b60ff1660048110151561158c57fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18b73ffffffffffffffffffffffffffffffffffffffff16633cebb823836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561167857600080fd5b6102c65a03f1151561168957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be0384787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878873ffffffffffffffffffffffffffffffffffffffff1663be2c64d46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561173657600080fd5b6102c65a03f1151561174757600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561184457600080fd5b6102c65a03f1151561185557600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886878873ffffffffffffffffffffffffffffffffffffffff16633c624c756000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156118e257600080fd5b6102c65a03f115156118f357600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156119f057600080fd5b6102c65a03f11515611a0157600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663206b60f96000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611a8e57600080fd5b6102c65a03f11515611a9f57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611b9c57600080fd5b6102c65a03f11515611bad57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff16630842ace46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611c3a57600080fd5b6102c65a03f11515611c4b57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611d4857600080fd5b6102c65a03f11515611d5957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff1663981cc3426000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611de657600080fd5b6102c65a03f11515611df757600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611ef457600080fd5b6102c65a03f11515611f0557600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff166329b522eb6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611f9257600080fd5b6102c65a03f11515611fa357600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156120a057600080fd5b6102c65a03f115156120b157600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886848573ffffffffffffffffffffffffffffffffffffffff1663a51d9a8e6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561213e57600080fd5b6102c65a03f1151561214f57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561224c57600080fd5b6102c65a03f1151561225d57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886848573ffffffffffffffffffffffffffffffffffffffff1663edc168f16000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156122ea57600080fd5b6102c65a03f115156122fb57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156123f857600080fd5b6102c65a03f1151561240957600080fd5b50505089518b5114151561241c57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1663be03847830848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156124a657600080fd5b6102c65a03f115156124b757600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156125b457600080fd5b6102c65a03f115156125c557600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff1663e918c62f8d60018c118c60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018415151515815260200183815260200182151515158152602001945050505050600060405180830381600087803b151561268657600080fd5b6102c65a03f1151561269757600080fd5b505050600090505b8a51811015612799578173ffffffffffffffffffffffffffffffffffffffff166340c10f198c838151811015156126d257fe5b906020019060200201518c848151811015156126ea57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561277857600080fd5b6102c65a03f1151561278957600080fd5b505050808060010191505061269f565b8273ffffffffffffffffffffffffffffffffffffffff16637879ec3185600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050600060405180830381600087803b15156128c757600080fd5b6102c65a03f115156128d857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561296557600080fd5b6102c65a03f1151561297657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612a3f57600080fd5b6102c65a03f11515612a5057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612add57600080fd5b6102c65a03f11515612aee57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612bb757600080fd5b6102c65a03f11515612bc857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86888973ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612c5557600080fd5b6102c65a03f11515612c6657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612d2f57600080fd5b6102c65a03f11515612d4057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86888973ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612dcd57600080fd5b6102c65a03f11515612dde57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612ea757600080fd5b6102c65a03f11515612eb857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612f4557600080fd5b6102c65a03f11515612f5657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561301f57600080fd5b6102c65a03f1151561303057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156130bd57600080fd5b6102c65a03f115156130ce57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561319757600080fd5b6102c65a03f115156131a857600080fd5b5050506131b58d88613377565b8b73ffffffffffffffffffffffffffffffffffffffff167f4fa65b7b4efeaaebcd718c22be4cbfe3339447deee05146fa2ef6d9578015fd388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28497505050505050505095945050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b20e3976000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156132d157600080fd5b6102c65a03f115156132e257600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16633f15457f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561335757600080fd5b6102c65a03f1151561336857600080fd5b50505060405180519050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d22057a9836040518082805190602001908083835b6020831015156133eb57805182526020820191506020810190506020830392506133c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156134a557600080fd5b6102c65a03f115156134b657600080fd5b50505050505600a165627a7a72305820f1b74a0166a1bc4e7bbbc992826a4e7860a04611ebce19cf6741c317ce2fef7c0029",
  "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063039fa7601461009e5780634629ffea146100f35780636d3a848114610175578063b8066bcb146101f0578063bc8c35f214610245578063c3b314721461029a578063c6d2c717146102ef578063d165603f14610356578063ef41afcd146103ab575b600080fd5b34156100a957600080fd5b6100b16103ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100fe57600080fd5b610133600480803590602001908201803590602001919091929080359060200190820180359060200191909192905050610410565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561018057600080fd5b6101ee600480803590602001908201803590602001919091929080359060200190820180359060200191909192908035906020019082018035906020019190919290803590602001909190803590602001909190803567ffffffffffffffff1690602001909190505061056c565b005b34156101fb57600080fd5b610203610720565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561025057600080fd5b610258610746565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102a557600080fd5b6102ad61076b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102fa57600080fd5b610314600480803560001916906020019091905050610791565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036157600080fd5b610369610977565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103b657600080fd5b6103cc600480803590602001909190505061099d565b60405180826000191660001916815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635b7b72c160008088886012898960016000604051602001526040518963ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001888152602001806020018660ff168152602001806020018415151515815260200183810383528989828181526020019250808284378201915050838103825286868281815260200192508082843782019150509a5050505050505050505050602060405180830381600087803b151561053d57600080fd5b6102c65a03f1151561054e57600080fd5b50505060405180519050905061056481336109b7565b949350505050565b60008061057833610ab3565b91506106378b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050838b8b808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050508a8a808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c1e565b90508073ffffffffffffffffffffffffffffffffffffffff16633ee31e70838787876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018267ffffffffffffffff1667ffffffffffffffff168152602001945050505050600060405180830381600087803b15156106ff57600080fd5b6102c65a03f1151561071057600080fd5b5050505050505050505050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061079c613242565b73ffffffffffffffffffffffffffffffffffffffff16630178b8bf846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561081a57600080fd5b6102c65a03f1151561082b57600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16633b3b57de846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156108b357600080fd5b6102c65a03f115156108c457600080fd5b5050506040518051905090508073ffffffffffffffffffffffffffffffffffffffff1663c36af460600060405160a001526040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160a060405180830381600087803b151561093c57600080fd5b6102c65a03f1151561094d57600080fd5b50505060405180606001805190602001805190602001604052909150508092505081915050919050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005816004811015156109ac57fe5b016000915090505481565b81600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f07ab516ad4f19b4465f15fa7c2dbc064f18e734a0846d6e0932da244aa3d8a7183604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a25050565b600080600073ffffffffffffffffffffffffffffffffffffffff16600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b5157600080fd5b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905580915050919050565b600080600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321687444306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515610cef57600080fd5b6102c65a03f11515610d0057600080fd5b5050506040518051905096508673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610d7857600080fd5b6102c65a03f11515610d8957600080fd5b5050506040518051905095508573ffffffffffffffffffffffffffffffffffffffff1663be03847830898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610e1f57600080fd5b6102c65a03f11515610e3057600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515610f2d57600080fd5b6102c65a03f11515610f3e57600080fd5b5050508673ffffffffffffffffffffffffffffffffffffffff166380cd5ac36005600380811115610f6b57fe5b60ff16600481101515610f7a57fe5b0154610fa36005600380811115610f8d57fe5b60ff16600481101515610f9c57fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561103857600080fd5b6102c65a03f1151561104957600080fd5b5050506040518051905094507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e385600560038081111561108557fe5b60ff1660048110151561109457fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac360056002600381111561111157fe5b60ff1660048110151561112057fe5b015461114a60056002600381111561113457fe5b60ff1660048110151561114357fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b15156111df57600080fd5b6102c65a03f115156111f057600080fd5b5050506040518051905093507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e38460056002600381111561122d57fe5b60ff1660048110151561123c57fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac36005600060038111156112b957fe5b60ff166004811015156112c857fe5b01546112f26005600060038111156112dc57fe5b60ff166004811015156112eb57fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561138757600080fd5b6102c65a03f1151561139857600080fd5b5050506040518051905092507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e3836005600060038111156113d557fe5b60ff166004811015156113e457fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18673ffffffffffffffffffffffffffffffffffffffff166380cd5ac360056001600381111561146157fe5b60ff1660048110151561147057fe5b015461149a60056001600381111561148457fe5b60ff1660048110151561149357fe5b0154610791565b6000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b151561152f57600080fd5b6102c65a03f1151561154057600080fd5b5050506040518051905091507f2b183a501d4b1bbd30e6611ebac40ab18a00390e6c6bed324bf92a265c9ce6e38260056001600381111561157d57fe5b60ff1660048110151561158c57fe5b0154604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a18b73ffffffffffffffffffffffffffffffffffffffff16633cebb823836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b151561167857600080fd5b6102c65a03f1151561168957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be0384787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff878873ffffffffffffffffffffffffffffffffffffffff1663be2c64d46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561173657600080fd5b6102c65a03f1151561174757600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561184457600080fd5b6102c65a03f1151561185557600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886878873ffffffffffffffffffffffffffffffffffffffff16633c624c756000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156118e257600080fd5b6102c65a03f115156118f357600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156119f057600080fd5b6102c65a03f11515611a0157600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847884868773ffffffffffffffffffffffffffffffffffffffff1663206b60f96000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611a8e57600080fd5b6102c65a03f11515611a9f57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611b9c57600080fd5b6102c65a03f11515611bad57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff16630842ace46000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611c3a57600080fd5b6102c65a03f11515611c4b57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611d4857600080fd5b6102c65a03f11515611d5957600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff1663981cc3426000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611de657600080fd5b6102c65a03f11515611df757600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b1515611ef457600080fd5b6102c65a03f11515611f0557600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886858673ffffffffffffffffffffffffffffffffffffffff166329b522eb6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515611f9257600080fd5b6102c65a03f11515611fa357600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156120a057600080fd5b6102c65a03f115156120b157600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886848573ffffffffffffffffffffffffffffffffffffffff1663a51d9a8e6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561213e57600080fd5b6102c65a03f1151561214f57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b151561224c57600080fd5b6102c65a03f1151561225d57600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663be03847886848573ffffffffffffffffffffffffffffffffffffffff1663edc168f16000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156122ea57600080fd5b6102c65a03f115156122fb57600080fd5b50505060405180519050896040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156123f857600080fd5b6102c65a03f1151561240957600080fd5b50505089518b5114151561241c57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff1663be03847830848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156124a657600080fd5b6102c65a03f115156124b757600080fd5b50505060405180519050306040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156125b457600080fd5b6102c65a03f115156125c557600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff1663e918c62f8d60018c118c60016040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018415151515815260200183815260200182151515158152602001945050505050600060405180830381600087803b151561268657600080fd5b6102c65a03f1151561269757600080fd5b505050600090505b8a51811015612799578173ffffffffffffffffffffffffffffffffffffffff166340c10f198c838151811015156126d257fe5b906020019060200201518c848151811015156126ea57fe5b906020019060200201516040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b151561277857600080fd5b6102c65a03f1151561278957600080fd5b505050808060010191505061269f565b8273ffffffffffffffffffffffffffffffffffffffff16637879ec3185600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff036040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018267ffffffffffffffff1667ffffffffffffffff1681526020019350505050600060405180830381600087803b15156128c757600080fd5b6102c65a03f115156128d857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561296557600080fd5b6102c65a03f1151561297657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612a3f57600080fd5b6102c65a03f11515612a5057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86898a73ffffffffffffffffffffffffffffffffffffffff16638ea8dc9d6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612add57600080fd5b6102c65a03f11515612aee57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612bb757600080fd5b6102c65a03f11515612bc857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86888973ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612c5557600080fd5b6102c65a03f11515612c6657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612d2f57600080fd5b6102c65a03f11515612d4057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86888973ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612dcd57600080fd5b6102c65a03f11515612dde57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515612ea757600080fd5b6102c65a03f11515612eb857600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff16630a8ed3db86848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515612f4557600080fd5b6102c65a03f11515612f5657600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561301f57600080fd5b6102c65a03f1151561303057600080fd5b5050508573ffffffffffffffffffffffffffffffffffffffff1663afd925df86848573ffffffffffffffffffffffffffffffffffffffff1663e9a9c8506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156130bd57600080fd5b6102c65a03f115156130ce57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151561319757600080fd5b6102c65a03f115156131a857600080fd5b5050506131b58d88613377565b8b73ffffffffffffffffffffffffffffffffffffffff167f4fa65b7b4efeaaebcd718c22be4cbfe3339447deee05146fa2ef6d9578015fd388604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a28497505050505050505095945050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632b20e3976000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156132d157600080fd5b6102c65a03f115156132e257600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff16633f15457f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151561335757600080fd5b6102c65a03f1151561336857600080fd5b50505060405180519050905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d22057a9836040518082805190602001908083835b6020831015156133eb57805182526020820191506020810190506020830392506133c6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15156134a557600080fd5b6102c65a03f115156134b657600080fd5b50505050505600a165627a7a72305820f1b74a0166a1bc4e7bbbc992826a4e7860a04611ebce19cf6741c317ce2fef7c0029",
  "sourceMap": "60:1297:1:-;;;113:329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:4;370:10;382:4;388:11;401:9;412:7;1478:4:0;1472:3;;:10;;;;;;;;;;;;;;;;;;1498:4;1492:3;;:10;;;;;;;;;;;;;;;;;;1524;1512:9;;:22;;;;;;;;;;;;;;;;;;1557:11;1544:10;;:24;;;;;;;;;;;;;;;;;;1589:9;1578:8;;:20;;;;;;;;;;;;;;;;;;1617:7;1608:6;:16;;;;;;;:::i;:::-;;1218:413;;;;;;113:329:1;;;;;;60:1297;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "60:1297:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;700:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;449:304:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;760:595;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;741:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;645:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;673:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5360:223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;775:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;700:35;;;;;;;;;;;;;:::o;449:304:1:-;513:17;551:9;;;;;;;;;;;:26;;;600:1;617;633:4;;652:2;669:6;;690:4;551:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;543:162;;716:29;727:5;734:10;716;:29::i;:::-;449:304;;;;;;:::o;760:595::-;999:17;1055:13;1019:25;1033:10;1019:13;:25::i;:::-;999:45;;1071:128;1095:4;;1071:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:5;1134:7;;1071:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:6;;1071:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1185:2;1071:9;:128::i;:::-;1055:144;;1210:6;:17;;;1242:5;1262:13;1290:19;1324:12;1210:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;760:595;;;;;;;;;;;:::o;741:28:0:-;;;;;;;;;;;;;:::o;645:22::-;;;;;;;;;;;;;:::o;673:21::-;;;;;;;;;;;;;:::o;5360:223::-;5426:12;5450:9;5482:5;:3;:5::i;:::-;:14;;;5497:5;5482:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5467:42;;;5510:5;5467:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5450:67;;5538:4;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5527:27;;;;;;;;5572:4;5565:11;;5360:223;;;;:::o;775:39::-;;;;;;;;;;;;;:::o;820:24::-;;;;;;;;;;;;;;;;;;;;:::o;4803:140::-;4896:5;4876:10;:17;4887:5;4876:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;4930:5;4911:25;;;4923:5;4911:25;;;;;;;;;;;;;;;;;;;;;;4803:140;;:::o;4949:243::-;5005:11;5078:17;5065:1;5036:31;;:10;:17;5047:5;5036:17;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;5028:40;;;;;;;;5110:10;:17;5121:5;5110:17;;;;;;;;;;;;;;;;;;;;;;;;;5078:50;;5145:10;:17;5156:5;5145:17;;;;;;;;;;;;;;;;5138:24;;;;;;;;;;;5180:5;5173:12;;4949:243;;;;:::o;1637:3160::-;1825:6;1847:10;1887:7;2052:13;2240:11;2421:15;2616:25;3858:9;1860:3;;;;;;;;;;;:10;;;1871:4;1860:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1847:29;;1901:3;:7;;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:24;;1922:3;:20;;;1956:4;1974:3;1991;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2027:4;1922:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2075:3;:18;;;2094:6;2107:11;2101:18;;;;;;;;2094:26;;;;;;;;;;;;;2122:48;2143:6;2156:11;2150:18;;;;;;;;2143:26;;;;;;;;;;;;;2122:20;:48::i;:::-;2075:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2052:120;;2182:48;2195:6;2203;2216:11;2210:18;;;;;;;;2203:26;;;;;;;;;;;;;2182:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2260:3;:18;;;2279:6;2292:10;2286:17;;;;;;;;2279:25;;;;;;;;;;;;;2306:47;2327:6;2340:10;2334:17;;;;;;;;2327:25;;;;;;;;;;;;;2306:20;:47::i;:::-;2260:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2240:115;;2365:46;2378:5;2385:6;2398:10;2392:17;;;;;;;;2385:25;;;;;;;;;;;;;2365:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2447:3;:18;;;2466:6;2479:12;2473:19;;;;;;;;2466:27;;;;;;;;;;;;;2495:49;2516:6;2529:12;2523:19;;;;;;;;2516:27;;;;;;;;;;;;;2495:20;:49::i;:::-;2447:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2421:125;;2556:50;2569:7;2578:6;2591:12;2585:19;;;;;;;;2578:27;;;;;;;;;;;;;2556:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2657:3;:18;;;2676:6;2689:17;2683:24;;;;;;;;2676:32;;;;;;;;;;;;;2710:54;2731:6;2744:17;2738:24;;;;;;;;2731:32;;;;;;;;;;;;;2710:20;:54::i;:::-;2657:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2616:150;;2776:60;2789:12;2803:6;2816:17;2810:24;;;;;;;;2803:32;;;;;;;;;;;;;2776:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2847:5;:22;;;2870:12;2847:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2948:3;:20;;;1208:2;2981:6;2989;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:6;2948:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3034:3;:20;;;3055:6;3063;3071;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3100:6;3034:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3118:3;:20;;;3139:7;3148:5;3155;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3178:6;3118:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3195:3;:20;;;3216:6;3224:7;3233;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3265:6;3195:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3282:3;:20;;;3303:6;3311:7;3320;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:6;3282:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3370:3;:20;;;3391:6;3399:7;3408;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3441:6;3370:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3458:3;:20;;;3479:6;3487:12;3501;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:6;3458:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3546:3;:20;;;3567:6;3575:12;3589;:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:6;3546:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3670:6;:13;3652:7;:14;:31;3644:40;;;;;;;;3695:3;:20;;;3716:4;3722:12;3736;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3762:4;3695:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3778:12;:23;;;3802:5;3822:1;3809:10;:14;3825:10;3837:4;3778:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3870:1;3858:13;;3853:110;3877:7;:14;3873:1;:18;3853:110;;;3912:12;:17;;;3930:7;3938:1;3930:10;;;;;;;;;;;;;;;;;;3942:6;3949:1;3942:9;;;;;;;;;;;;;;;;;;3912:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:3;;;;;;;3853:110;;;3990:7;:18;;;4009:5;4016:10;;;;;;;;;;;4048:3;4035:2;4028:24;3990:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4099:3;:19;;;4119:6;4127:3;4132;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4099:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4165:3;:24;;;4190:6;4198:3;4203;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4165:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4236:3;:19;;;4256:6;4264:3;4269;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4236:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4309:3;:24;;;4334:6;4342:3;4347;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4309:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4387:3;:19;;;4407:6;4415:12;4429;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4387:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4464:3;:24;;;4489:6;4497:12;4511;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4464:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4648:27;4665:4;4671:3;4648:16;:27::i;:::-;4705:5;4685:26;;;4700:3;4685:26;;;;;;;;;;;;;;;;;;;;;;4784:6;4777:13;;1637:3160;;;;;;;;;;;;;;:::o;5589:96::-;5627:11;5657:3;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5650:28;;5589:96;:::o;5198:121::-;5271:8;;;;;;;;;;;:17;;;5299:4;5289:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5306:5:0;5271:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5198:121;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"./BetaTemplateBase.sol\";\n\n\ncontract DemocracyTemplate is BetaTemplateBase {\n    function DemocracyTemplate(\n        DAOFactory _fac,\n        MiniMeTokenFactory _minimeFac,\n        APMRegistry _apm,\n        EtherToken _etherToken,\n        IFIFSResolvingRegistrar _aragonID,\n        bytes32[4] _appIds\n    )\n        BetaTemplateBase(_fac, _minimeFac, _apm, _etherToken, _aragonID, _appIds)\n        public\n    {}\n\n     function newToken(string name, string symbol) external returns (MiniMeToken token) {\n         token = minimeFac.createCloneToken(\n             address(0),\n             0,\n             name,\n             18,\n             symbol,\n             true\n         );\n         cacheToken(token, msg.sender);\n     }\n\n     function newInstance(\n         string name,\n         address[] holders,\n         uint256[] tokens,\n         uint256 supportNeeded,\n         uint256 minAcceptanceQuorum,\n         uint64 voteDuration\n     )\n         external\n     {\n         MiniMeToken token = popTokenCache(msg.sender);\n         Voting voting = createDAO(\n             name,\n             token,\n             holders,\n             tokens,\n             uint256(-1)\n         );\n         voting.initialize(\n             token,\n             supportNeeded,\n             minAcceptanceQuorum,\n             voteDuration\n         );\n     }\n}\n",
  "sourcePath": "/Users/jorge/provident/aragon-apps/templates/beta/contracts/DemocracyTemplate.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/jorge/provident/aragon-apps/templates/beta/contracts/DemocracyTemplate.sol",
      "exportedSymbols": {
        "DemocracyTemplate": [
          731
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 624,
        "name": "PragmaDirective",
        "src": "0:23:1"
      },
      {
        "attributes": {
          "SourceUnit": 623,
          "absolutePath": "/Users/jorge/provident/aragon-apps/templates/beta/contracts/BetaTemplateBase.sol",
          "file": "./BetaTemplateBase.sol",
          "scope": 732,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 625,
        "name": "ImportDirective",
        "src": "25:32:1"
      },
      {
        "attributes": {
          "contractDependencies": [
            622
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            731,
            622
          ],
          "name": "DemocracyTemplate",
          "scope": 732
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BetaTemplateBase",
                  "referencedDeclaration": 622,
                  "type": "contract BetaTemplateBase"
                },
                "id": 626,
                "name": "UserDefinedTypeName",
                "src": "90:16:1"
              }
            ],
            "id": 627,
            "name": "InheritanceSpecifier",
            "src": "90:16:1"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "name": "DemocracyTemplate",
              "payable": false,
              "scope": 731,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_fac",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract DAOFactory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DAOFactory",
                          "referencedDeclaration": 9267,
                          "type": "contract DAOFactory"
                        },
                        "id": 628,
                        "name": "UserDefinedTypeName",
                        "src": "149:10:1"
                      }
                    ],
                    "id": 629,
                    "name": "VariableDeclaration",
                    "src": "149:15:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_minimeFac",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract MiniMeTokenFactory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MiniMeTokenFactory",
                          "referencedDeclaration": 11914,
                          "type": "contract MiniMeTokenFactory"
                        },
                        "id": 630,
                        "name": "UserDefinedTypeName",
                        "src": "174:18:1"
                      }
                    ],
                    "id": 631,
                    "name": "VariableDeclaration",
                    "src": "174:29:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_apm",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract APMRegistry",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "APMRegistry",
                          "referencedDeclaration": 6279,
                          "type": "contract APMRegistry"
                        },
                        "id": 632,
                        "name": "UserDefinedTypeName",
                        "src": "213:11:1"
                      }
                    ],
                    "id": 633,
                    "name": "VariableDeclaration",
                    "src": "213:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_etherToken",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract EtherToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "EtherToken",
                          "referencedDeclaration": 7195,
                          "type": "contract EtherToken"
                        },
                        "id": 634,
                        "name": "UserDefinedTypeName",
                        "src": "239:10:1"
                      }
                    ],
                    "id": 635,
                    "name": "VariableDeclaration",
                    "src": "239:22:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_aragonID",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract IFIFSResolvingRegistrar",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "IFIFSResolvingRegistrar",
                          "referencedDeclaration": 4359,
                          "type": "contract IFIFSResolvingRegistrar"
                        },
                        "id": 636,
                        "name": "UserDefinedTypeName",
                        "src": "271:23:1"
                      }
                    ],
                    "id": 637,
                    "name": "VariableDeclaration",
                    "src": "271:33:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_appIds",
                      "scope": 653,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32[4] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "bytes32[4] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 638,
                            "name": "ElementaryTypeName",
                            "src": "314:7:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "34",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "4"
                            },
                            "id": 639,
                            "name": "Literal",
                            "src": "322:1:1"
                          }
                        ],
                        "id": 640,
                        "name": "ArrayTypeName",
                        "src": "314:10:1"
                      }
                    ],
                    "id": 641,
                    "name": "VariableDeclaration",
                    "src": "314:18:1"
                  }
                ],
                "id": 642,
                "name": "ParameterList",
                "src": "139:199:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 651,
                "name": "ParameterList",
                "src": "440:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 622,
                      "type": "type(contract BetaTemplateBase)",
                      "value": "BetaTemplateBase"
                    },
                    "id": 643,
                    "name": "Identifier",
                    "src": "347:16:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 629,
                      "type": "contract DAOFactory",
                      "value": "_fac"
                    },
                    "id": 644,
                    "name": "Identifier",
                    "src": "364:4:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 631,
                      "type": "contract MiniMeTokenFactory",
                      "value": "_minimeFac"
                    },
                    "id": 645,
                    "name": "Identifier",
                    "src": "370:10:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 633,
                      "type": "contract APMRegistry",
                      "value": "_apm"
                    },
                    "id": 646,
                    "name": "Identifier",
                    "src": "382:4:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 635,
                      "type": "contract EtherToken",
                      "value": "_etherToken"
                    },
                    "id": 647,
                    "name": "Identifier",
                    "src": "388:11:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 637,
                      "type": "contract IFIFSResolvingRegistrar",
                      "value": "_aragonID"
                    },
                    "id": 648,
                    "name": "Identifier",
                    "src": "401:9:1"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 641,
                      "type": "bytes32[4] memory",
                      "value": "_appIds"
                    },
                    "id": 649,
                    "name": "Identifier",
                    "src": "412:7:1"
                  }
                ],
                "id": 650,
                "name": "ModifierInvocation",
                "src": "347:73:1"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 652,
                "name": "Block",
                "src": "440:2:1"
              }
            ],
            "id": 653,
            "name": "FunctionDefinition",
            "src": "113:329:1"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "newToken",
              "payable": false,
              "scope": 731,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "name",
                      "scope": 683,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 654,
                        "name": "ElementaryTypeName",
                        "src": "467:6:1"
                      }
                    ],
                    "id": 655,
                    "name": "VariableDeclaration",
                    "src": "467:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "symbol",
                      "scope": 683,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 656,
                        "name": "ElementaryTypeName",
                        "src": "480:6:1"
                      }
                    ],
                    "id": 657,
                    "name": "VariableDeclaration",
                    "src": "480:13:1"
                  }
                ],
                "id": 658,
                "name": "ParameterList",
                "src": "466:28:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "token",
                      "scope": 683,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract MiniMeToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "MiniMeToken",
                          "referencedDeclaration": 11873,
                          "type": "contract MiniMeToken"
                        },
                        "id": 659,
                        "name": "UserDefinedTypeName",
                        "src": "513:11:1"
                      }
                    ],
                    "id": 660,
                    "name": "VariableDeclaration",
                    "src": "513:17:1"
                  }
                ],
                "id": 661,
                "name": "ParameterList",
                "src": "512:19:1"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract MiniMeToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 660,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 662,
                            "name": "Identifier",
                            "src": "543:5:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract MiniMeToken",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_18_by_1",
                                      "typeString": "int_const 18"
                                    },
                                    {
                                      "typeIdentifier": "t_string_calldata_ptr",
                                      "typeString": "string calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "createCloneToken",
                                  "referencedDeclaration": 11913,
                                  "type": "function (address,uint256,string memory,uint8,string memory,bool) external returns (contract MiniMeToken)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18,
                                      "type": "contract MiniMeTokenFactory",
                                      "value": "minimeFac"
                                    },
                                    "id": 663,
                                    "name": "Identifier",
                                    "src": "551:9:1"
                                  }
                                ],
                                "id": 664,
                                "name": "MemberAccess",
                                "src": "551:26:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 665,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "592:7:1"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 666,
                                    "name": "Literal",
                                    "src": "600:1:1"
                                  }
                                ],
                                "id": 667,
                                "name": "FunctionCall",
                                "src": "592:10:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 668,
                                "name": "Literal",
                                "src": "617:1:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 655,
                                  "type": "string calldata",
                                  "value": "name"
                                },
                                "id": 669,
                                "name": "Identifier",
                                "src": "633:4:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "3138",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 18",
                                  "value": "18"
                                },
                                "id": 670,
                                "name": "Literal",
                                "src": "652:2:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 657,
                                  "type": "string calldata",
                                  "value": "symbol"
                                },
                                "id": 671,
                                "name": "Identifier",
                                "src": "669:6:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 672,
                                "name": "Literal",
                                "src": "690:4:1"
                              }
                            ],
                            "id": 673,
                            "name": "FunctionCall",
                            "src": "551:154:1"
                          }
                        ],
                        "id": 674,
                        "name": "Assignment",
                        "src": "543:162:1"
                      }
                    ],
                    "id": 675,
                    "name": "ExpressionStatement",
                    "src": "543:162:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 527,
                              "type": "function (contract MiniMeToken,address)",
                              "value": "cacheToken"
                            },
                            "id": 676,
                            "name": "Identifier",
                            "src": "716:10:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 660,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 677,
                            "name": "Identifier",
                            "src": "727:5:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 678,
                                "name": "Identifier",
                                "src": "734:3:1"
                              }
                            ],
                            "id": 679,
                            "name": "MemberAccess",
                            "src": "734:10:1"
                          }
                        ],
                        "id": 680,
                        "name": "FunctionCall",
                        "src": "716:29:1"
                      }
                    ],
                    "id": 681,
                    "name": "ExpressionStatement",
                    "src": "716:29:1"
                  }
                ],
                "id": 682,
                "name": "Block",
                "src": "532:221:1"
              }
            ],
            "id": 683,
            "name": "FunctionDefinition",
            "src": "449:304:1"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "newInstance",
              "payable": false,
              "scope": 731,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "name",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 684,
                        "name": "ElementaryTypeName",
                        "src": "791:6:1"
                      }
                    ],
                    "id": 685,
                    "name": "VariableDeclaration",
                    "src": "791:11:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "holders",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address[] calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "type": "address"
                            },
                            "id": 686,
                            "name": "ElementaryTypeName",
                            "src": "813:7:1"
                          }
                        ],
                        "id": 687,
                        "name": "ArrayTypeName",
                        "src": "813:9:1"
                      }
                    ],
                    "id": 688,
                    "name": "VariableDeclaration",
                    "src": "813:17:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "tokens",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256[] calldata",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "uint256[] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 689,
                            "name": "ElementaryTypeName",
                            "src": "841:7:1"
                          }
                        ],
                        "id": 690,
                        "name": "ArrayTypeName",
                        "src": "841:9:1"
                      }
                    ],
                    "id": 691,
                    "name": "VariableDeclaration",
                    "src": "841:16:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "supportNeeded",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 692,
                        "name": "ElementaryTypeName",
                        "src": "868:7:1"
                      }
                    ],
                    "id": 693,
                    "name": "VariableDeclaration",
                    "src": "868:21:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "minAcceptanceQuorum",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 694,
                        "name": "ElementaryTypeName",
                        "src": "900:7:1"
                      }
                    ],
                    "id": 695,
                    "name": "VariableDeclaration",
                    "src": "900:27:1"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteDuration",
                      "scope": 730,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 696,
                        "name": "ElementaryTypeName",
                        "src": "938:6:1"
                      }
                    ],
                    "id": 697,
                    "name": "VariableDeclaration",
                    "src": "938:19:1"
                  }
                ],
                "id": 698,
                "name": "ParameterList",
                "src": "780:184:1"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 699,
                "name": "ParameterList",
                "src": "988:0:1"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        701
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "token",
                          "scope": 730,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract MiniMeToken",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "MiniMeToken",
                              "referencedDeclaration": 11873,
                              "type": "contract MiniMeToken"
                            },
                            "id": 700,
                            "name": "UserDefinedTypeName",
                            "src": "999:11:1"
                          }
                        ],
                        "id": 701,
                        "name": "VariableDeclaration",
                        "src": "999:17:1"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract MiniMeToken",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 560,
                              "type": "function (address) returns (contract MiniMeToken)",
                              "value": "popTokenCache"
                            },
                            "id": 702,
                            "name": "Identifier",
                            "src": "1019:13:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12590,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 703,
                                "name": "Identifier",
                                "src": "1033:3:1"
                              }
                            ],
                            "id": 704,
                            "name": "MemberAccess",
                            "src": "1033:10:1"
                          }
                        ],
                        "id": 705,
                        "name": "FunctionCall",
                        "src": "1019:25:1"
                      }
                    ],
                    "id": 706,
                    "name": "VariableDeclarationStatement",
                    "src": "999:45:1"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        708
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "voting",
                          "scope": 730,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Voting",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Voting",
                              "referencedDeclaration": 4339,
                              "type": "contract Voting"
                            },
                            "id": 707,
                            "name": "UserDefinedTypeName",
                            "src": "1055:6:1"
                          }
                        ],
                        "id": 708,
                        "name": "VariableDeclaration",
                        "src": "1055:13:1"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Voting",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_calldata_ptr",
                                  "typeString": "string calldata"
                                },
                                {
                                  "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 508,
                              "type": "function (string memory,contract MiniMeToken,address[] memory,uint256[] memory,uint256) returns (contract Voting)",
                              "value": "createDAO"
                            },
                            "id": 709,
                            "name": "Identifier",
                            "src": "1071:9:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 685,
                              "type": "string calldata",
                              "value": "name"
                            },
                            "id": 710,
                            "name": "Identifier",
                            "src": "1095:4:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 701,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 711,
                            "name": "Identifier",
                            "src": "1114:5:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 688,
                              "type": "address[] calldata",
                              "value": "holders"
                            },
                            "id": 712,
                            "name": "Identifier",
                            "src": "1134:7:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 691,
                              "type": "uint256[] calldata",
                              "value": "tokens"
                            },
                            "id": 713,
                            "name": "Identifier",
                            "src": "1156:6:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_-1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 714,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1177:7:1"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int_const -1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 715,
                                    "name": "Literal",
                                    "src": "1186:1:1"
                                  }
                                ],
                                "id": 716,
                                "name": "UnaryOperation",
                                "src": "1185:2:1"
                              }
                            ],
                            "id": 717,
                            "name": "FunctionCall",
                            "src": "1177:11:1"
                          }
                        ],
                        "id": 718,
                        "name": "FunctionCall",
                        "src": "1071:128:1"
                      }
                    ],
                    "id": 719,
                    "name": "VariableDeclarationStatement",
                    "src": "1055:144:1"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_MiniMeToken_$11873",
                                  "typeString": "contract MiniMeToken"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "initialize",
                              "referencedDeclaration": 3671,
                              "type": "function (contract MiniMeToken,uint256,uint256,uint64) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 708,
                                  "type": "contract Voting",
                                  "value": "voting"
                                },
                                "id": 720,
                                "name": "Identifier",
                                "src": "1210:6:1"
                              }
                            ],
                            "id": 722,
                            "name": "MemberAccess",
                            "src": "1210:17:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 701,
                              "type": "contract MiniMeToken",
                              "value": "token"
                            },
                            "id": 723,
                            "name": "Identifier",
                            "src": "1242:5:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 693,
                              "type": "uint256",
                              "value": "supportNeeded"
                            },
                            "id": 724,
                            "name": "Identifier",
                            "src": "1262:13:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 695,
                              "type": "uint256",
                              "value": "minAcceptanceQuorum"
                            },
                            "id": 725,
                            "name": "Identifier",
                            "src": "1290:19:1"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 697,
                              "type": "uint64",
                              "value": "voteDuration"
                            },
                            "id": 726,
                            "name": "Identifier",
                            "src": "1324:12:1"
                          }
                        ],
                        "id": 727,
                        "name": "FunctionCall",
                        "src": "1210:137:1"
                      }
                    ],
                    "id": 728,
                    "name": "ExpressionStatement",
                    "src": "1210:137:1"
                  }
                ],
                "id": 729,
                "name": "Block",
                "src": "988:367:1"
              }
            ],
            "id": 730,
            "name": "FunctionDefinition",
            "src": "760:595:1"
          }
        ],
        "id": 731,
        "name": "ContractDefinition",
        "src": "60:1297:1"
      }
    ],
    "id": 732,
    "name": "SourceUnit",
    "src": "0:1358:1"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.065Z"
}