From 60dc26bc4b80da7cbc0d4e70e23c9842bf6c75f8 Mon Sep 17 00:00:00 2001 From: Aditya Anand Date: Mon, 29 Apr 2019 22:58:47 +0530 Subject: [PATCH 01/25] grant/new: add grant amount splitter frontend code - introduces section to let users choose % for gitcoin contribution - summary reflects based on users selection - code refactor --- app/assets/v2/css/grants/fund.css | 94 ++- app/assets/v2/js/grants/fund.js | 78 ++- app/grants/templates/grants/fund.html | 69 ++- app/grants/templates/grants/heart.html | 804 +++++++++++++++++++++++++ 4 files changed, 1031 insertions(+), 14 deletions(-) create mode 100644 app/grants/templates/grants/heart.html diff --git a/app/assets/v2/css/grants/fund.css b/app/assets/v2/css/grants/fund.css index 67162a650ae..18e63a24319 100644 --- a/app/assets/v2/css/grants/fund.css +++ b/app/assets/v2/css/grants/fund.css @@ -1,3 +1,9 @@ +@media (min-width: 1200px) { + #gitcoin-grant-section .row { + border-bottom: 1px solid #515151; + } +} + .admin_profile a, #grant-link { color: #0D0764; @@ -14,12 +20,13 @@ object-fit: cover; } +#grants_form .form__input.valid, #grants_form .form__input.error { - background-position: top 0.55rem right 0.5rem; + background-position: top 0.5rem right 0.5rem; } -#grants_form input { - height: 2.5rem !important; +#grants_form input.form__input { + height: 2.5rem; } .select2-container--default .select2-selection--single, @@ -54,6 +61,87 @@ font-size: 12px; } +#gitcoin-grant-section .custom { + width: 4.25rem; + position: relative; + top: -10px; +} + +#gitcoin-grant-section input.form__input { + height: 46px; + font-size: var(--fs-title); +} + +#gitcoin-grant-section input.form__input.form__input.valid { + padding: 0; + background-image: none; +} + +#gitcoin-grant-input-amount-error { + position: absolute; + top: 4rem +} + +#gitcoin-grant-section .form__input.error { + background-position: top 0.75rem right 0.5rem; + background-size: auto 1.013rem; + padding-right: 1.8rem; +} + +#gitcoin-grant-section input.form__input[type=number]::-webkit-inner-spin-button, +#gitcoin-grant-section input.form__input[type=number]::-webkit-outer-spin-button { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; +} + +#gitcoin-grant-input-error { + position: absolute; + top: 4rem; +} + +#gitcoin-grant-section .badge { + padding: 16px 24px; +} + +#gitcoin-grant-section .badge-active { + background-color: #72AAEB; + color: white; +} + +#gitcoin-grant-section .badge-inactive { + background: #E8F3FF; + color: #4A90E2; +} + +.inactive { + background-color: #E5E5E5 !important; + color: #9B9B9B !important; +} + +#gitcoin-grant-section .gitcoin-grant-summary p { + position: relative; + top: 10px; +} + +#gitcoin-grant-section .gitcoin-grant-summary i { + position: relative; + top: -2px; +} + +#gitcoin-grant-section .gitcoin-grant-summary p:last-child { + top: 1.2rem; + left: 1rem; +} + +.helper-text { + position: absolute; + left: 0; + right: 0; + bottom: -1.2rem; +} + @media (max-width: 767.98px) { .banner-img { diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 7a6e64a3f53..416267c0258 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -19,6 +19,47 @@ $(document).ready(function() { updateSummary(); }); + $('#gitcoin-grant-input-amount').on('input', () => { + $('.bot-heart').hide(); + updateSummary(); + + if ($('#gitcoin-grant-input-amount').val() == 0) { + $('#bot-heartbroken').show(); + } else if ($('#gitcoin-grant-input-amount').val() >= 20) { + $('#bot-heart-20').show(); + } else if ($('#gitcoin-grant-input-amount').val() >= 15) { + $('#bot-heart-15').show(); + } else if ($('#gitcoin-grant-input-amount').val() >= 10) { + $('#bot-heart-10').show(); + } else if ($('#gitcoin-grant-input-amount').val() > 0) { + $('#bot-heart-5').show(); + } + }); + + $('#gitcoin-grant-input-amount').on('focus', () => { + $('#gitcoin-grant-input-amount').removeClass('inactive'); + $('#gitcoin-grant-section .badge').addClass('inactive'); + }); + + $('#gitcoin-grant-section .badge').on('click', event => { + + $('#gitcoin-grant-section .badge').removeClass('inactive'); + $('#gitcoin-grant-input-amount').addClass('inactive'); + + const percentage = Number(event.currentTarget.getAttribute('data-percent')); + + $('#gitcoin-grant-input-amount').val(percentage); + $('.gitcoin-grant-percent').val(percentage); + + $('#gitcoin-grant-input-amount').trigger('input'); + + $('#gitcoin-grant-section .badge').removeClass('badge-active'); + $('#gitcoin-grant-section .badge').addClass('badge-inactive'); + + $(event.currentTarget).removeClass('badge-inactive'); + $(event.currentTarget).addClass('badge-active'); + }); + $('.contribution_type select').change(function() { if ($('.contribution_type select').val() == 'once') { $('.frequency').addClass('hidden'); @@ -132,7 +173,6 @@ $(document).ready(function() { from: accounts[0], gasPrice: realGasPrice }).on('error', function(error) { - console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); }).on('transactionHash', function(transactionHash) { $('#sub_new_approve_tx_id').val(transactionHash); @@ -264,15 +304,39 @@ const waitforData = (callback) => { } }; - +// Updates summary section const updateSummary = (element) => { - $('#summary-period').html($('input#frequency_count').val()); - $('#summary-amount').html($('input#amount').val() ? $('input#amount').val() : 0); - $('#summary-frequency').html($('input#period').val() ? $('input#period').val() : 0); - $('#summary-frequency-unit').html($('#frequency_unit').val()); + $('.summary-period').html($('input#frequency_count').val()); + $('.summary-frequency-unit').html($('#frequency_unit').val()); + $('.summary-frequency').html($('input#period').val() ? $('input#period').val() : 0); + if ($('#token_symbol').val() === 'Any Token') { - $('#summary-token').html($('#js-token option:selected').text()); + $('.summary-token').html($('#js-token option:selected').text()); } + splitGrantAmount(); }; + +// Splits the total amount between the grant & gitcoin grant in the summary section +const splitGrantAmount = () => { + const percent = $('#gitcoin-grant-input-amount').val(); + const total_amount = $('input#amount').val() ? $('input#amount').val() : 0; + let gitcoin_grant_amount = 0; + let grant_amount = 0; + + if (total_amount != 0) { + if (!percent || percent == 0) { + $('#summary-gitcoin-grant').hide(); + grant_amount = Number($('input#amount').val()); + } else { + $('#summary-gitcoin-grant').show(); + gitcoin_grant_amount = parseFloat(Number(percent / 100 * Number($('input#amount').val())).toFixed(4)); + grant_amount = parseFloat((Number($('input#amount').val()) - gitcoin_grant_amount).toFixed(4)); + } + } + + $('.gitcoin-grant-percent').html(percent); + $('.summary-gitcoin-amount').html(gitcoin_grant_amount); + $('#summary-amount').html(grant_amount); +}; \ No newline at end of file diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index 3cc37926b35..22a32aed669 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -128,6 +128,45 @@

{% trans "Fund Grant" %}

+
+
+
+

{% trans "Support Gitcoin" %}

+

+ {% trans "By using this service, you’ll also be contributing" %} + 5 + {% trans "% of your contribution to the system of this service." %} +

+
+
+ {% include './heart.html' %} +
+
5%
+
10%
+
15%
+
+
+
+
+ +

custom %

+
+
+

+ + 5 + - +

+

+ every - + - + (- times) +

+
+
+
+
+
@@ -145,26 +184,48 @@
{% trans "Gas Settings" %}
{% trans "You are contributing" %} - - + {{ grant.token_symbol }} {% trans "to this grant every" %} - - - -. + - + -.

+ +

+ + {% trans "You are additionally contributing" %} + - + + {% trans "to the gitcoin grant every" %} + - + -. +

+

{% trans "Your contribution will stop once this payment has happened" %} - - times. + - times.

+

{% trans "The first payment will happen within 5 minutes after you click Contribute to Grant." %}

+ + + +

{% trans "Note: You will have to approve 2 transactions via MetaMask on submit." %} Read how this works. diff --git a/app/grants/templates/grants/heart.html b/app/grants/templates/grants/heart.html new file mode 100644 index 00000000000..11627165760 --- /dev/null +++ b/app/grants/templates/grants/heart.html @@ -0,0 +1,804 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Thanks for + keeping us + alive! + + + + + + + + + + + + \ No newline at end of file From 14b3c658374a69d4726bd92cbf22fafac5023df1 Mon Sep 17 00:00:00 2001 From: Aditya Anand Date: Mon, 13 May 2019 14:35:32 +0530 Subject: [PATCH 02/25] addressed review comments --- app/assets/v2/js/grants/fund.js | 1 + app/grants/templates/grants/fund.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 416267c0258..5d1c8f8f58f 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -173,6 +173,7 @@ $(document).ready(function() { from: accounts[0], gasPrice: realGasPrice }).on('error', function(error) { + console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); }).on('transactionHash', function(transactionHash) { $('#sub_new_approve_tx_id').val(transactionHash); diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index 22a32aed669..becbe63660f 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -220,7 +220,7 @@

{% trans "Gas Settings" %}

{% trans "No Activity for th + diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index becbe63660f..cbc74ced013 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -295,6 +295,7 @@

Thanks for Contributing!
{% include 'shared/footer.html' %} {% include 'grants/shared/shared_scripts.html' %} + diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 2fe0db5afb2..68392293b41 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -157,6 +157,7 @@
{% trans "Gas Settings" %}
+ From f7b6f6398d5ac6890b3679f108c6963e2725321c Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 14 May 2019 22:37:28 +0900 Subject: [PATCH 04/25] send user back to correct page after one-time --- app/assets/v2/js/grants/fund.js | 45 +++++++++++++++++++++++++++------ app/grants/views.py | 4 ++- 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 4d8fffd60b4..b0f0d27eb80 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -1,6 +1,7 @@ /* eslint-disable no-console */ let deployedToken; let tokenAddress; +let redirectURL; $(document).ready(function() { let gitcoinDonationAddress = "0x0000000000000000000000000000000000000000"; @@ -180,7 +181,7 @@ $(document).ready(function() { }).on('confirmation', function(confirmationNumber, receipt) { waitforData(() => { document.suppress_loading_leave_code = true; - window.location = url; + window.location = redirectURL; }); // waitforData }); // approve }); // getAccounts @@ -292,16 +293,22 @@ const processSubscriptionHash = (parts) => { } const saveSubscription = (data) => { + console.log(data); + data['real_period_seconds'] = 0; $.ajax({ type: 'post', url: '', data: data, success: json => { + console.log(json); console.log('successfully saved subscriptionHash and signature'); - url = json.url; - $('#wait').val('false'); + if (json.url != undefined) { + redirectURL = json.url; + $('#wait').val('false'); + } }, - error: () => { + error: (error) => { + console.log(error); _alert({ message: gettext('Your subscription failed to save. Please try again.') }, 'error'); url = window.location; } @@ -309,6 +316,12 @@ const saveSubscription = (data) => { } const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { + var data = {}; + var form = $('#js-fundGrant'); + $.each($(form).serializeArray(), function() { + data[this.name] = this.value; + }); + saveSubscription(data); let deployedSplitter = new web3.eth.Contract(compiledSplitter.abiDefinition, "0xe2fd6dfe7f371e884e782d46f043552421b3a9d9"); console.log('deployed splitter is ' + deployedSplitter); @@ -316,14 +329,30 @@ const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { deployedSplitter.methods.splitTransfer(toFirst, toSecond, valueFirst, valueSecond, tokenAddress).send({ from: account }).on('error', function(error) { - + console.log('1', error); + _alert({ message: gettext('Your payment transaction failed. Please try again.')}, 'error'); }).on('transactionHash', function(transactionHash) { - - }).on('confirmation', function(confirmationNumber, receipt) { waitforData(() => { document.suppress_loading_leave_code = true; - window.location = url; + console.log('loading url: ' + redirectURL); + window.location = redirectURL; }); + + const linkURL = etherscan_tx_url(transactionHash); + document.issueURL = linkURL; + + $('#transaction_url').attr('href', linkURL); + enableWaitState('#grants_form'); + //$('#tweetModal').modal('show'); + }).on('confirmation', function(confirmationNumber, receipt) { + data = { + 'subscription_hash': 'onetime', + 'signature': 'onetime', + 'csrfmiddlewaretoken': $("#js-fundGrant input[name='csrfmiddlewaretoken']").val(), + 'sub_new_approve_tx_id': $('#sub_new_approve_tx_id').val() + }; + console.log('confirmed!'); + saveSubscription(data); }); } diff --git a/app/grants/views.py b/app/grants/views.py index a8348e46dbf..99eaefa8a32 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -427,6 +427,7 @@ def grant_fund(request, grant_id, grant_slug): subscription.contributor_address = request.POST.get('contributor_address', '') subscription.amount_per_period = request.POST.get('amount_per_period', 0) subscription.real_period_seconds = request.POST.get('real_period_seconds', 2592000) + print(subscription.real_period_seconds) subscription.frequency = request.POST.get('frequency', 30) subscription.frequency_unit = request.POST.get('frequency_unit', 'days') subscription.token_address = request.POST.get('token_address', '') @@ -437,6 +438,7 @@ def grant_fund(request, grant_id, grant_slug): subscription.network = request.POST.get('network', '') subscription.contributor_profile = profile subscription.grant = grant + subscription.save() # one time payments @@ -769,7 +771,7 @@ def is_verified(tx_details, tx_hash, tx_amount, network): match_pledge.save() return get_json_response( - """Thank you for volunteering to match on Gitcoin Grants. + """Thank you for volunteering to match on Gitcoin Grants. You are supporting open source, and we thank you.""", 201 ) From 6fa6e85d591beb4f3f0b7968f302e8dcfd2ac729 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Sat, 18 May 2019 17:44:17 +0900 Subject: [PATCH 05/25] use multiple contract versions --- ...ct.js => compiledSubscriptionContract0.js} | 0 .../grants/compiledSubscriptionContract1.js | 18548 ++++++++++++++++ app/assets/v2/js/grants/fund.js | 20 +- app/grants/templates/grants/cancel.html | 3 +- app/grants/templates/grants/detail/index.html | 3 +- app/grants/templates/grants/fund.html | 3 +- app/grants/templates/grants/new.html | 3 +- 7 files changed, 18571 insertions(+), 9 deletions(-) rename app/assets/v2/js/grants/{compiledSubscriptionContract.js => compiledSubscriptionContract0.js} (100%) create mode 100644 app/assets/v2/js/grants/compiledSubscriptionContract1.js diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract.js b/app/assets/v2/js/grants/compiledSubscriptionContract0.js similarity index 100% rename from app/assets/v2/js/grants/compiledSubscriptionContract.js rename to app/assets/v2/js/grants/compiledSubscriptionContract0.js diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract1.js b/app/assets/v2/js/grants/compiledSubscriptionContract1.js new file mode 100644 index 00000000000..f5793c04854 --- /dev/null +++ b/app/assets/v2/js/grants/compiledSubscriptionContract1.js @@ -0,0 +1,18548 @@ +let compiledSubscription0 = { + 'contractName': 'Subscription', + 'abi': [ + { + 'constant': true, + 'inputs': [], + 'name': 'requiredGasPrice', + 'outputs': [ + { + 'name': '', + 'type': 'uint256' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'requiredTokenAmount', + 'outputs': [ + { + 'name': '', + 'type': 'uint256' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'requiredToAddress', + 'outputs': [ + { + 'name': '', + 'type': 'address' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'requiredPeriodSeconds', + 'outputs': [ + { + 'name': '', + 'type': 'uint256' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'requiredTokenAddress', + 'outputs': [ + { + 'name': '', + 'type': 'address' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'owner', + 'outputs': [ + { + 'name': '', + 'type': 'address' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [], + 'name': 'contractVersion', + 'outputs': [ + { + 'name': '', + 'type': 'uint8' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': '', + 'type': 'address' + } + ], + 'name': 'extraNonce', + 'outputs': [ + { + 'name': '', + 'type': 'uint256' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': '', + 'type': 'bytes32' + } + ], + 'name': 'nextValidTimestamp', + 'outputs': [ + { + 'name': '', + 'type': 'uint256' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'inputs': [ + { + 'name': '_toAddress', + 'type': 'address' + }, + { + 'name': '_tokenAddress', + 'type': 'address' + }, + { + 'name': '_tokenAmount', + 'type': 'uint256' + }, + { + 'name': '_periodSeconds', + 'type': 'uint256' + }, + { + 'name': '_gasPrice', + 'type': 'uint256' + }, + { + 'name': '_version', + 'type': 'uint8' + } + ], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'constructor' + }, + { + 'payable': true, + 'stateMutability': 'payable', + 'type': 'fallback' + }, + { + 'anonymous': false, + 'inputs': [ + { + 'indexed': true, + 'name': 'from', + 'type': 'address' + }, + { + 'indexed': true, + 'name': 'to', + 'type': 'address' + }, + { + 'indexed': false, + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'indexed': false, + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'nonce', + 'type': 'uint256' + } + ], + 'name': 'ExecuteSubscription', + 'type': 'event' + }, + { + 'anonymous': false, + 'inputs': [ + { + 'indexed': true, + 'name': 'from', + 'type': 'address' + }, + { + 'indexed': true, + 'name': 'to', + 'type': 'address' + }, + { + 'indexed': false, + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'indexed': false, + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'indexed': false, + 'name': 'nonce', + 'type': 'uint256' + } + ], + 'name': 'CancelSubscription', + 'type': 'event' + }, + { + 'anonymous': false, + 'inputs': [ + { + 'indexed': false, + 'name': 'oldOwner', + 'type': 'address' + }, + { + 'indexed': false, + 'name': 'newOwner', + 'type': 'address' + } + ], + 'name': 'ownershipChanged', + 'type': 'event' + }, + { + 'constant': false, + 'inputs': [ + { + 'name': '_newOwner', + 'type': 'address' + } + ], + 'name': 'changeOwnership', + 'outputs': [], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': 'subscriptionHash', + 'type': 'bytes32' + }, + { + 'name': 'gracePeriodSeconds', + 'type': 'uint256' + } + ], + 'name': 'isSubscriptionActive', + 'outputs': [ + { + 'name': '', + 'type': 'bool' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': 'from', + 'type': 'address' + }, + { + 'name': 'to', + 'type': 'address' + }, + { + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'name': 'nonce', + 'type': 'uint256' + } + ], + 'name': 'getSubscriptionHash', + 'outputs': [ + { + 'name': '', + 'type': 'bytes32' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': 'subscriptionHash', + 'type': 'bytes32' + }, + { + 'name': 'signature', + 'type': 'bytes' + } + ], + 'name': 'getSubscriptionSigner', + 'outputs': [ + { + 'name': '', + 'type': 'address' + } + ], + 'payable': false, + 'stateMutability': 'pure', + 'type': 'function' + }, + { + 'constant': true, + 'inputs': [ + { + 'name': 'from', + 'type': 'address' + }, + { + 'name': 'to', + 'type': 'address' + }, + { + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'name': 'nonce', + 'type': 'uint256' + }, + { + 'name': 'signature', + 'type': 'bytes' + } + ], + 'name': 'isSubscriptionReady', + 'outputs': [ + { + 'name': '', + 'type': 'bool' + } + ], + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' + }, + { + 'constant': false, + 'inputs': [ + { + 'name': 'from', + 'type': 'address' + }, + { + 'name': 'to', + 'type': 'address' + }, + { + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'name': 'nonce', + 'type': 'uint256' + }, + { + 'name': 'signature', + 'type': 'bytes' + } + ], + 'name': 'cancelSubscription', + 'outputs': [ + { + 'name': 'success', + 'type': 'bool' + } + ], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' + }, + { + 'constant': false, + 'inputs': [ + { + 'name': 'from', + 'type': 'address' + }, + { + 'name': 'to', + 'type': 'address' + }, + { + 'name': 'tokenAddress', + 'type': 'address' + }, + { + 'name': 'tokenAmount', + 'type': 'uint256' + }, + { + 'name': 'periodSeconds', + 'type': 'uint256' + }, + { + 'name': 'gasPrice', + 'type': 'uint256' + }, + { + 'name': 'nonce', + 'type': 'uint256' + }, + { + 'name': 'signature', + 'type': 'bytes' + } + ], + 'name': 'executeSubscription', + 'outputs': [ + { + 'name': 'success', + 'type': 'bool' + } + ], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' + }, + { + 'constant': false, + 'inputs': [], + 'name': 'endContract', + 'outputs': [], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' + } + ], + 'bytecode': '0x608060405234801561001057600080fd5b5060405160c0806123bf83398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003819055508260048190555081600581905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060146101000a81548160ff021916908360ff1602179055505050505050506122538061016c6000396000f3006080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310d92060146100f657806318f321a31461012157806329d428ca146101d85780632af4c31e14610203578063384c3335146102465780636b40bba11461029d5780636f264b2e146102c857806371d22d4d1461031f5780638da5cb5b146103fa578063a0a8e46014610451578063a3d53d1814610482578063ae702ba4146104d9578063bb6e7de91461052c578063c814786514610543578063d3c576cd1461060a578063d933c06614610713578063ff59bff81461081c575b600080fd5b34801561010257600080fd5b5061010b610861565b6040518082815260200191505060405180910390f35b34801561012d57600080fd5b506101966004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610867565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b506101ed610894565b6040518082815260200191505060405180910390f35b34801561020f57600080fd5b50610244600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061089a565b005b34801561025257600080fd5b5061025b6109f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a957600080fd5b506102b2610a16565b6040518082815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610a1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032b57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610a42565b604051808215151515815260200191505060405180910390f35b34801561040657600080fd5b5061040f610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360381019080803560001916906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b50610541610dde565b005b34801561054f57600080fd5b506105ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e73565b60405180826000191660001916815260200191505060405180910390f35b34801561061657600080fd5b506106f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561071f57600080fd5b50610802600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d18565b604051808215151515815260200191505060405180910390f35b34801561082857600080fd5b5061084b6004803603810190808035600019169060200190929190505050611ffd565b6040518082815260200191505060405180910390f35b60055481565b600061088c8261087a8560001916612015565b600019166120d090919063ffffffff16565b905092915050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108f557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5d92051b4a9b6e7154c5be37e18edd17bfd2e650a3a6dbf8c3eded0ef431ff0e336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610a568c8c8c8c8c8c8c610e73565b9150610a948286868080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610867565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f496e76616c6964205369676e617475726520666f72207375627363726970746981526020017f6f6e2063616e63656c6c6174696f6e000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008460001916600019168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568c8c8c8c8c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36001925050509998505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008560001916600019168152602001908152602001600020541415610da45760009050610dd8565b610dd282600660008660001916600019168152602001908152602001600020546121c890919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f1e5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061103c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060035414806110c2575060035485145b1515611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006004541480611148575060045484145b15156111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060055414806111ce575060055483145b1515611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200199505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611491578051825260208201915060208101905060208303925061146c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050979650505050505050565b60008060006114df8b8b8b8b8b8b8b610e73565b91506114f18b8b8b8b8b8b8b8b611d18565b15156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001807f537562736372697074696f6e206973206e6f74207265616479206f7220636f6e81526020017f646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6581526020017f740000000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6115c487426121c890919063ffffffff16565b60066000846000191660001916815260200190815260200160002081905550600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485111561166f5784600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b81019080805190602001909291905050508882011415156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f45524332302042616c616e636520646964206e6f74206368616e676520636f7281526020017f726563746c79000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6119d66121e9565b1515611a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e205472616e7366657246726f6d206661696c6564000000000000000000000081525060400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611d06578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b505050506040513d6020811015611c2b57600080fd5b810190808051906020019092919050505050611c456121e9565b1515611d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e204661696c656420746f20706179206761732061732066726f6d206163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b60019250505098975050505050505050565b6000806000806000611d2f8d8d8d8d8d8d8d610e73565b9350611d3b8487610867565b92508a73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8e306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d6020811015611e3657600080fd5b810190808051906020019092919050505091508a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b505050506040513d6020811015611f0e57600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f8857508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611faf5750600660008560001916600019168152602001908152602001600020544210155b8015611fcd5750611fc9888b6121c890919063ffffffff16565b8210155b8015611feb5750611fe7888b6121c890919063ffffffff16565b8110155b94505050505098975050505050505050565b60066020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561209c5780518252602082019150602081019050602083039250612077565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600080600080604185511415156120ea57600093506121bf565b6020850151925060408501519150606085015160001a9050601b8160ff16101561211557601b810190505b601b8160ff161415801561212d5750601c8160ff1614155b1561213b57600093506121bf565b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121b2573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b60008082840190508381101515156121df57600080fd5b8091505092915050565b600080600090503d60008114612206576020811461220f5761221b565b6001915061221b565b60206000803e60005191505b506000811415915050905600a165627a7a72305820dea756d1b905a24da555dd5a2a6249a784e2f144afedd118fe9d317d274d07260029', + 'deployedBytecode': '0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310d92060146100f657806318f321a31461012157806329d428ca146101d85780632af4c31e14610203578063384c3335146102465780636b40bba11461029d5780636f264b2e146102c857806371d22d4d1461031f5780638da5cb5b146103fa578063a0a8e46014610451578063a3d53d1814610482578063ae702ba4146104d9578063bb6e7de91461052c578063c814786514610543578063d3c576cd1461060a578063d933c06614610713578063ff59bff81461081c575b600080fd5b34801561010257600080fd5b5061010b610861565b6040518082815260200191505060405180910390f35b34801561012d57600080fd5b506101966004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610867565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b506101ed610894565b6040518082815260200191505060405180910390f35b34801561020f57600080fd5b50610244600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061089a565b005b34801561025257600080fd5b5061025b6109f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a957600080fd5b506102b2610a16565b6040518082815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610a1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032b57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610a42565b604051808215151515815260200191505060405180910390f35b34801561040657600080fd5b5061040f610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360381019080803560001916906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b50610541610dde565b005b34801561054f57600080fd5b506105ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e73565b60405180826000191660001916815260200191505060405180910390f35b34801561061657600080fd5b506106f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561071f57600080fd5b50610802600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d18565b604051808215151515815260200191505060405180910390f35b34801561082857600080fd5b5061084b6004803603810190808035600019169060200190929190505050611ffd565b6040518082815260200191505060405180910390f35b60055481565b600061088c8261087a8560001916612015565b600019166120d090919063ffffffff16565b905092915050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108f557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5d92051b4a9b6e7154c5be37e18edd17bfd2e650a3a6dbf8c3eded0ef431ff0e336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610a568c8c8c8c8c8c8c610e73565b9150610a948286868080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610867565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f496e76616c6964205369676e617475726520666f72207375627363726970746981526020017f6f6e2063616e63656c6c6174696f6e000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008460001916600019168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568c8c8c8c8c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36001925050509998505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008560001916600019168152602001908152602001600020541415610da45760009050610dd8565b610dd282600660008660001916600019168152602001908152602001600020546121c890919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f1e5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061103c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060035414806110c2575060035485145b1515611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006004541480611148575060045484145b15156111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060055414806111ce575060055483145b1515611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200199505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611491578051825260208201915060208101905060208303925061146c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050979650505050505050565b60008060006114df8b8b8b8b8b8b8b610e73565b91506114f18b8b8b8b8b8b8b8b611d18565b15156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001807f537562736372697074696f6e206973206e6f74207265616479206f7220636f6e81526020017f646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6581526020017f740000000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6115c487426121c890919063ffffffff16565b60066000846000191660001916815260200190815260200160002081905550600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485111561166f5784600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b81019080805190602001909291905050508882011415156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f45524332302042616c616e636520646964206e6f74206368616e676520636f7281526020017f726563746c79000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6119d66121e9565b1515611a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e205472616e7366657246726f6d206661696c6564000000000000000000000081525060400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611d06578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b505050506040513d6020811015611c2b57600080fd5b810190808051906020019092919050505050611c456121e9565b1515611d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e204661696c656420746f20706179206761732061732066726f6d206163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b60019250505098975050505050505050565b6000806000806000611d2f8d8d8d8d8d8d8d610e73565b9350611d3b8487610867565b92508a73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8e306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d6020811015611e3657600080fd5b810190808051906020019092919050505091508a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b505050506040513d6020811015611f0e57600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f8857508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611faf5750600660008560001916600019168152602001908152602001600020544210155b8015611fcd5750611fc9888b6121c890919063ffffffff16565b8210155b8015611feb5750611fe7888b6121c890919063ffffffff16565b8110155b94505050505098975050505050505050565b60066020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561209c5780518252602082019150602081019050602083039250612077565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600080600080604185511415156120ea57600093506121bf565b6020850151925060408501519150606085015160001a9050601b8160ff16101561211557601b810190505b601b8160ff161415801561212d5750601c8160ff1614155b1561213b57600093506121bf565b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121b2573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b60008082840190508381101515156121df57600080fd5b8091505092915050565b600080600090503d60008114612206576020811461220f5761221b565b6001915061221b565b60206000803e60005191505b506000811415915050905600a165627a7a72305820dea756d1b905a24da555dd5a2a6249a784e2f144afedd118fe9d317d274d07260029', + 'sourceMap': '1097:13576:1:-;;;3195:470;8:9:-1;5:2;;;30:1;27;20:12;5:2;3195:470:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:10;3402:17;;:28;;;;;;;;;;;;;;;;;;3461:13;3440:20;;:34;;;;;;;;;;;;;;;;;;3504:12;3484:19;:32;;;;3548:14;3526:21;:36;;;;3589:9;3572:16;:26;;;;3614:10;3608:5;;:16;;;;;;;;;;;;;;;;;;3650:8;3634:15;;:24;;;;;;;;;;;;;;;;;;3195:470;;;;;;1097:13576;;;;;;', + 'deployedSourceMap': '1097:13576:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14656:8;;;1594:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1594:31:1;;;;;;;;;;;;;;;;;;;;;;;6471:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6471:311:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1512:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1512:34:1;;;;;;;;;;;;;;;;;;;;;;;3901:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3901:175:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1433:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1433:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1552:36:1;;;;;;;;;;;;;;;;;;;;;;;1471:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8413:1418;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8413:1418:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1218:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1244:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;2051:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2051:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4316:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14432:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14432:112:1;;;;;;4862:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4862:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9989:3044;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9989:3044:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6905:1254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6905:1254:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1817:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1594:31;;;;:::o;6471:311::-;6685:7;6715:60;6765:9;6715:41;:16;:39;;;;:41::i;:::-;:49;;;;;:60;;;;:::i;:::-;6708:67;;6471:311;;;;:::o;1512:34::-;;;;:::o;3901:175::-;3990:5;;;;;;;;;;;3978:17;;:10;:17;;;3970:26;;;;;;;;4012:9;4004:5;;:17;;;;;;;;;;;;;;;;;;4034:35;4051:10;4063:5;;;;;;;;;;;4034:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3901:175;:::o;1433:32::-;;;;;;;;;;;;;:::o;1552:36::-;;;;:::o;1471:35::-;;;;;;;;;;;;;:::o;8413:1418::-;9011:12;9039:24;9186:14;9066:110;9099:4;9105:2;9109:12;9123:11;9136:13;9151:8;9161:5;9066:19;:110::i;:::-;9039:137;;9203:50;9225:16;9243:9;;9203:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;:50::i;:::-;9186:67;;9320:4;9310:14;;:6;:14;;;9302:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9443:10;9435:18;;:4;:18;;;9427:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9674:2;9629:18;:36;9648:16;9629:36;;;;;;;;;;;;;;;;;:48;;;;9731:2;9693:109;;9725:4;9693:109;;;9735:12;9749:11;9762:13;9777:8;9787:5;9693:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9820:4;9813:11;;8413:1418;;;;;;;;;;;;;:::o;1218:20::-;;;;;;;;;;;;;:::o;1244:28::-;;;;;;;;;;;;;:::o;2051:45::-;;;;;;;;;;;;;;;;;:::o;4316:390::-;4469:4;4538:2;4492:18;:36;4511:16;4492:36;;;;;;;;;;;;;;;;;;:49;4489:88;;;4561:5;4554:12;;;;4489:88;4629:60;4670:18;4629;:36;4648:16;4629:36;;;;;;;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4594:15;:95;;4586:113;;4316:390;;;;;:::o;14432:112::-;14504:5;;;;;;;;;;;14492:17;;:10;:17;;;14484:26;;;;;;;;14531:5;;;;;;;;;;;14518:19;;;4862:1548;5398:7;5564:1;5535:31;;:17;;;;;;;;;;;:31;;;:58;;;;5576:17;;;;;;;;;;;5570:23;;:2;:23;;;5535:58;5526:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:1;5643:34;;:20;;;;;;;;;;;:34;;;:74;;;;5697:20;;;;;;;;;;;5681:36;;:12;:36;;;5643:74;5634:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:1;5771:19;;:24;:62;;;;5814:19;;5799:11;:34;5771:62;5762:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5911:1;5886:21;;:26;:68;;;;5933:21;;5916:13;:38;5886:68;5877:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:1;6009:16;;:21;:53;;;;6046:16;;6034:8;:28;6009:53;6000:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:4;6168:10;;6201:1;6196:7;;6229:4;6252;6274:2;6294:12;6324:11;6353:13;6384:8;6134:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6134:268:1;;;6111:292;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6111:292:1;;;;;;;;;;;;;;;;6104:299;;4862:1548;;;;;;;;;:::o;9989:3044::-;10587:12;10615:24;11438:23;10642:110;10675:4;10681:2;10685:12;10699:11;10712:13;10727:8;10737:5;10642:19;:110::i;:::-;10615:137;;10829:99;10849:4;10855:2;10859:12;10873:11;10886:13;10901:8;10911:5;10918:9;10829:19;:99::i;:::-;10820:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11128:34;11148:13;11128:15;:19;;:34;;;;:::i;:::-;11089:18;:36;11108:16;11089:36;;;;;;;;;;;;;;;;;:73;;;;11289:10;:16;11300:4;11289:16;;;;;;;;;;;;;;;;11281:5;:24;11278:75;;;11337:5;11318:10;:16;11329:4;11318:16;;;;;;;;;;;;;;;:24;;;;11278:75;11470:12;11464:29;;;11494:2;11464:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11464:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11464:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11464:33:1;;;;;;;;;;;;;;;;11438:59;;11513:12;11507:32;;;11540:4;11545:2;11548:11;11507:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11507:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11507:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11507:53:1;;;;;;;;;;;;;;;;;11628:12;11622:29;;;11652:2;11622:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11622:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11622:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11622:33:1;;;;;;;;;;;;;;;;11606:11;11590:15;:27;11589:66;11570:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11747:14;:12;:14::i;:::-;11728:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:2;11857:110;;11890:4;11857:110;;;11900:12;11914:11;11927:13;11942:8;11952:5;11857:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12198:1;12187:8;:12;12183:822;;;12786:12;12780:32;;;12813:4;12819:10;12831:8;12780:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12780:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12780:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12780:60:1;;;;;;;;;;;;;;;;;12879:14;:12;:14::i;:::-;12854:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12183:822;13022:4;13015:11;;9989:3044;;;;;;;;;;;;:::o;6905:1254::-;7516:4;7536:24;7683:14;7760:17;7840:15;7563:110;7596:4;7602:2;7606:12;7620:11;7633:13;7648:8;7658:5;7563:19;:110::i;:::-;7536:137;;7700:50;7722:16;7740:9;7700:21;:50::i;:::-;7683:67;;7786:12;7780:29;;;7810:4;7824;7780:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7780:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7780:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7780:50:1;;;;;;;;;;;;;;;;7760:70;;7864:12;7858:29;;;7888:4;7858:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7858:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7858:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7858:35:1;;;;;;;;;;;;;;;;7840:53;;7935:4;7925:14;;:6;:14;;;:40;;;;;7963:2;7955:10;;:4;:10;;;;7925:40;:111;;;;;8000:18;:36;8019:16;8000:36;;;;;;;;;;;;;;;;;;7981:15;:55;;7925:111;:165;;;;;8065:25;8081:8;8065:11;:15;;:25;;;;:::i;:::-;8052:9;:38;;7925:165;:217;;;;;8117:25;8133:8;8117:11;:15;;:25;;;;:::i;:::-;8106:7;:36;;7925:217;7904:248;;6905:1254;;;;;;;;;;;;;;:::o;1817:53::-;;;;;;;;;;;;;;;;;:::o;1700:277:5:-;1781:7;1961:4;1908:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1908:58:5;;;1891:81;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1891:81:5;;;;;;;;;;;;;;;;1884:88;;1700:277;;;:::o;600:962::-;683:7;700:9;715;730:7;802:2;782:9;:16;:22;;778:62;;;830:1;814:19;;;;778:62;1116:2;1105:9;1101:18;1095:25;1090:30;;1153:2;1142:9;1138:18;1132:25;1127:30;;1198:2;1187:9;1183:18;1177:25;1174:1;1169:34;1164:39;;1310:2;1306:1;:6;;;1302:34;;;1327:2;1322:7;;;;1302:34;1410:2;1405:1;:7;;;;:18;;;;;1421:2;1416:1;:7;;;;1405:18;1401:157;;;1449:1;1433:19;;;;1401:157;1527:24;1537:4;1543:1;1546;1549;1527:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:24:5;;;;;;;;1520:31;;600:962;;;;;;;;:::o;1273:131:6:-;1331:7;1346:9;1362:1;1358;:5;1346:17;;1382:1;1377;:6;;1369:15;;;;;;;;1398:1;1391:8;;1273:131;;;;;:::o;13448:855:1:-;13523:4;13543:19;13565:1;13543:23;;13744:14;13826:3;13821:57;;;;13949:4;13944:220;;;;13737:516;;13821:57;13863:1;13848:16;;13821:57;;13944:220;14049:4;14044:3;14039;14024:30;14146:3;14140:10;14125:25;;13737:516;;14295:1;14280:11;:16;;14273:23;;13448:855;;:::o', + 'source': "pragma solidity ^0.4.24;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n\n //// Breakin’ Through @ University of Wyoming ////\n\n Austin Thomas Griffith - https://austingriffith.com\n\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address public owner;\n uint8 public contractVersion;\n\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event ownershipChanged(\n address oldOwner,\n address newOwner\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n owner=msg.sender;\n contractVersion=_version;\n }\n\n // this function allows the owner of the contract to pass the ownership\n // to another address. The only privilege this conveys is the ability to\n // call endContract() which destorys the contract and all subscriptions.\n function changeOwnership(address _newOwner)\n public\n {\n require(msg.sender==owner);\n owner = _newOwner;\n emit ownershipChanged(msg.sender, owner);\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \"paid\" and \"active\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \"requiredToAddress Failure\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \"requiredTokenAddress Failure\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \"requiredTokenAmount Failure\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \"requiredPeriodSeconds Failure\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \"requiredGasPrice Failure\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n external\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \"Invalid Signature for subscription cancellation\");\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \"Subscription is not ready or conditions of transction are not met\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \"ERC20 Balance did not change correctly\"\n );\n\n require(\n checkSuccess(),\n \"Subscription::executeSubscription TransferFrom failed\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \"Subscription::executeSubscription Failed to pay gas as from account\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the owner to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==owner);\n selfdestruct(owner);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function() public payable {\n revert();\n }\n}\n", + 'sourcePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', + 'ast': { + 'absolutePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', + 'exportedSymbols': { + 'Subscription': [ + 695 + ] + }, + 'id': 696, + 'nodeType': 'SourceUnit', + 'nodes': [ + { + 'id': 58, + 'literals': [ + 'solidity', + '^', + '0.4', + '.24' + ], + 'nodeType': 'PragmaDirective', + 'src': '0:24:1' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'id': 59, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 972, + 'src': '906:64:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'id': 60, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 1100, + 'src': '971:59:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'id': 61, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 1569, + 'src': '1031:63:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'baseContracts': [], + 'contractDependencies': [], + 'contractKind': 'contract', + 'documentation': null, + 'fullyImplemented': true, + 'id': 695, + 'linearizedBaseContracts': [ + 695 + ], + 'name': 'Subscription', + 'nodeType': 'ContractDefinition', + 'nodes': [ + { + 'id': 64, + 'libraryName': { + 'contractScope': null, + 'id': 62, + 'name': 'ECDSA', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 971, + 'src': '1131:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ECDSA_$971', + 'typeString': 'library ECDSA' + } + }, + 'nodeType': 'UsingForDirective', + 'src': '1125:24:1', + 'typeName': { + 'id': 63, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1141:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + } + }, + { + 'id': 67, + 'libraryName': { + 'contractScope': null, + 'id': 65, + 'name': 'SafeMath', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 1099, + 'src': '1160:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_SafeMath_$1099', + 'typeString': 'library SafeMath' + } + }, + 'nodeType': 'UsingForDirective', + 'src': '1154:27:1', + 'typeName': { + 'id': 66, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1173:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + { + 'constant': false, + 'id': 69, + 'name': 'owner', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1218:20:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 68, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1218:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 71, + 'name': 'contractVersion', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1244:28:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 70, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '1244:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 73, + 'name': 'requiredToAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1433:32:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 72, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1433:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 75, + 'name': 'requiredTokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1471:35:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 74, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1471:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 77, + 'name': 'requiredTokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1512:34:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 76, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1512:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 79, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1552:36:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 78, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1552:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 81, + 'name': 'requiredGasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1594:31:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 80, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1594:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 85, + 'name': 'nextValidTimestamp', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1817:53:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + }, + 'typeName': { + 'id': 84, + 'keyType': { + 'id': 82, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1825:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'Mapping', + 'src': '1817:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + }, + 'valueType': { + 'id': 83, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1836:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 89, + 'name': 'extraNonce', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '2051:45:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + }, + 'typeName': { + 'id': 88, + 'keyType': { + 'id': 86, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2059:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Mapping', + 'src': '2051:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + }, + 'valueType': { + 'id': 87, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2070:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 105, + 'name': 'ExecuteSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 104, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 91, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2138:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 90, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2138:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 93, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2185:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 92, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2185:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 95, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2229:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 94, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2229:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 97, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2301:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 96, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2301:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 99, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2371:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 98, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2371:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 101, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2443:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 100, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2443:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 103, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2520:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 102, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2520:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '2128:471:1' + }, + 'src': '2103:497:1' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 121, + 'name': 'CancelSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 120, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 107, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2640:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 106, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2640:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 109, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2687:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 108, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2687:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 111, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2731:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 110, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2731:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 113, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2803:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 112, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2803:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 115, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2873:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 114, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2873:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 117, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2945:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 116, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2945:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 119, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '3022:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 118, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3022:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '2630:471:1' + }, + 'src': '2606:496:1' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 127, + 'name': 'ownershipChanged', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 126, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 123, + 'indexed': false, + 'name': 'oldOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 127, + 'src': '3140:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 122, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3140:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 125, + 'indexed': false, + 'name': 'newOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 127, + 'src': '3166:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 124, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3166:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3130:58:1' + }, + 'src': '3108:81:1' + }, + { + 'body': { + 'id': 171, + 'nodeType': 'Block', + 'src': '3392:273:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'id': 144, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 142, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '3402:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 143, + 'name': '_toAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 129, + 'src': '3420:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3402:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 145, + 'nodeType': 'ExpressionStatement', + 'src': '3402:28:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 148, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 146, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '3440:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 147, + 'name': '_tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 131, + 'src': '3461:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3440:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 149, + 'nodeType': 'ExpressionStatement', + 'src': '3440:34:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 152, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 150, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '3484:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 151, + 'name': '_tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 133, + 'src': '3504:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3484:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 153, + 'nodeType': 'ExpressionStatement', + 'src': '3484:32:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 156, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 154, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '3526:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 155, + 'name': '_periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 135, + 'src': '3548:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3526:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 157, + 'nodeType': 'ExpressionStatement', + 'src': '3526:36:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 160, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 158, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '3572:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 159, + 'name': '_gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 137, + 'src': '3589:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3572:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 161, + 'nodeType': 'ExpressionStatement', + 'src': '3572:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 165, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 162, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3608:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 163, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '3614:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 164, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3614:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3608:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 166, + 'nodeType': 'ExpressionStatement', + 'src': '3608:16:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 169, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 167, + 'name': 'contractVersion', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '3634:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 168, + 'name': '_version', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 139, + 'src': '3650:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'src': '3634:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'id': 170, + 'nodeType': 'ExpressionStatement', + 'src': '3634:24:1' + } + ] + }, + 'documentation': null, + 'id': 172, + 'implemented': true, + 'isConstructor': true, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 140, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 129, + 'name': '_toAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3216:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 128, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3216:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 131, + 'name': '_tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3244:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 130, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3244:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 133, + 'name': '_tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3275:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 132, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3275:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 135, + 'name': '_periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3305:22:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 134, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3305:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 137, + 'name': '_gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3337:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 136, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3337:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 139, + 'name': '_version', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3364:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 138, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '3364:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3206:178:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 141, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3392:0:1' + }, + 'scope': 695, + 'src': '3195:470:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 194, + 'nodeType': 'Block', + 'src': '3962:114:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 181, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 178, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '3978:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 179, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3978:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 180, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3990:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3978:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + ], + 'id': 177, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1726, + 'src': '3970:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' + } + }, + 'id': 182, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '3970:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 183, + 'nodeType': 'ExpressionStatement', + 'src': '3970:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 186, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 184, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '4004:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 185, + 'name': '_newOwner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 174, + 'src': '4012:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '4004:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 187, + 'nodeType': 'ExpressionStatement', + 'src': '4004:17:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 189, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '4051:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 190, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4051:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 191, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '4063:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 188, + 'name': 'ownershipChanged', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 127, + 'src': '4034:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$returns$__$', + 'typeString': 'function (address,address)' + } + }, + 'id': 192, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4034:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 193, + 'nodeType': 'EmitStatement', + 'src': '4029:40:1' + } + ] + }, + 'documentation': null, + 'id': 195, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'changeOwnership', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 175, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 174, + 'name': '_newOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 195, + 'src': '3926:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 173, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3926:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3925:19:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 176, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3962:0:1' + }, + 'scope': 695, + 'src': '3901:175:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 227, + 'nodeType': 'Block', + 'src': '4479:227:1', + 'statements': [ + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 211, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 204, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4492:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 206, + 'indexExpression': { + 'argumentTypes': null, + 'id': 205, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 197, + 'src': '4511:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4492:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 209, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '4538:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 208, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4539:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' + }, + 'value': '1' + }, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + ], + 'id': 207, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '4530:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' + }, + 'typeName': 'uint256' + }, + 'id': 210, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4530:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '4492:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 215, + 'nodeType': 'IfStatement', + 'src': '4489:88:1', + 'trueBody': { + 'id': 214, + 'nodeType': 'Block', + 'src': '4542:35:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '66616c7365', + 'id': 212, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4561:5:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'false' + }, + 'functionReturnParameters': 203, + 'id': 213, + 'nodeType': 'Return', + 'src': '4554:12:1' + } + ] + } + }, + { + 'expression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 224, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 216, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '4594:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 217, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4594:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '<=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 222, + 'name': 'gracePeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 199, + 'src': '4670:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 218, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4629:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 220, + 'indexExpression': { + 'argumentTypes': null, + 'id': 219, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 197, + 'src': '4648:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4629:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 221, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '4629:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 223, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4629:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '4594:95:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'id': 225, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '4593:106:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 203, + 'id': 226, + 'nodeType': 'Return', + 'src': '4586:113:1' + } + ] + }, + 'documentation': null, + 'id': 228, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'isSubscriptionActive', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 200, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 197, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4355:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 196, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '4355:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 199, + 'name': 'gracePeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4389:26:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 198, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4389:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4345:76:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 203, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 202, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4469:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 201, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '4469:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4468:6:1' + }, + 'scope': 695, + 'src': '4316:390:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 327, + 'nodeType': 'Block', + 'src': '5411:999:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 256, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 252, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 248, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5535:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 250, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5564:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 249, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5556:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 251, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5556:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5535:31:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 255, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 253, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 232, + 'src': '5570:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 254, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5576:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5570:23:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5535:58:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f41646472657373204661696c757265', + 'id': 257, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5595:27:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string "requiredToAddress Failure"' + }, + 'value': 'requiredToAddress Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string "requiredToAddress Failure"' + } + ], + 'id': 247, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5526:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 258, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5526:98:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 259, + 'nodeType': 'ExpressionStatement', + 'src': '5526:98:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 269, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 265, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 261, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5643:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 263, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5675:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 262, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5667:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 264, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5667:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5643:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 268, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 266, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 234, + 'src': '5681:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 267, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5697:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5681:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5643:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', + 'id': 270, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5719:30:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string "requiredTokenAddress Failure"' + }, + 'value': 'requiredTokenAddress Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string "requiredTokenAddress Failure"' + } + ], + 'id': 260, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5634:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 271, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5634:118:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 272, + 'nodeType': 'ExpressionStatement', + 'src': '5634:118:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 280, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 276, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 274, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5771:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 275, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5794:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '5771:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 279, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 277, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 236, + 'src': '5799:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 278, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5814:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '5799:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5771:62:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', + 'id': 281, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5835:29:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string "requiredTokenAmount Failure"' + }, + 'value': 'requiredTokenAmount Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string "requiredTokenAmount Failure"' + } + ], + 'id': 273, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5762:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 282, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5762:105:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 283, + 'nodeType': 'ExpressionStatement', + 'src': '5762:105:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 291, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 287, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 285, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5886:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 286, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5911:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '5886:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 290, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 288, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 238, + 'src': '5916:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 289, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5933:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '5916:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5886:68:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', + 'id': 292, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5956:31:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + }, + 'value': 'requiredPeriodSeconds Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + } + ], + 'id': 284, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5877:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 293, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5877:113:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 294, + 'nodeType': 'ExpressionStatement', + 'src': '5877:113:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 302, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 298, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 296, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '6009:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 297, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6029:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '6009:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 301, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 299, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 240, + 'src': '6034:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 300, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '6046:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '6034:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '6009:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '72657175697265644761735072696365204661696c757265', + 'id': 303, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6064:26:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string "requiredGasPrice Failure"' + }, + 'value': 'requiredGasPrice Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string "requiredGasPrice Failure"' + } + ], + 'id': 295, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '6000:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 304, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6000:93:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 305, + 'nodeType': 'ExpressionStatement', + 'src': '6000:93:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30783139', + 'id': 310, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6173:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' + }, + 'value': '0x19' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' + } + ], + 'id': 309, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6168:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' + }, + 'typeName': 'byte' + }, + 'id': 311, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6168:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 313, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6201:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 312, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6196:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' + }, + 'typeName': 'byte' + }, + 'id': 314, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6196:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 316, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1746, + 'src': '6229:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + ], + 'id': 315, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6221:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 317, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6221:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 318, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 230, + 'src': '6252:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 319, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 232, + 'src': '6274:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 320, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 234, + 'src': '6294:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 321, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 236, + 'src': '6324:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 322, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 238, + 'src': '6353:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 323, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 240, + 'src': '6384:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + }, + { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 307, + 'name': 'abi', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1710, + 'src': '6134:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_abi', + 'typeString': 'abi' + } + }, + 'id': 308, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'memberName': 'encodePacked', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '6134:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', + 'typeString': 'function () pure returns (bytes memory)' + } + }, + 'id': 324, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6134:268:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 306, + 'name': 'keccak256', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1717, + 'src': '6111:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_sha3_pure$__$returns$_t_bytes32_$', + 'typeString': 'function () pure returns (bytes32)' + } + }, + 'id': 325, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6111:292:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'functionReturnParameters': 246, + 'id': 326, + 'nodeType': 'Return', + 'src': '6104:299:1' + } + ] + }, + 'documentation': null, + 'id': 328, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'getSubscriptionHash', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 243, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 230, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4900:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 229, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4900:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 232, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4939:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 231, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4939:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 234, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4975:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 233, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4975:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 236, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5047:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 235, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5047:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 238, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5117:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 237, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5117:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 240, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5189:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 239, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5189:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 242, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5273:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 241, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5273:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4890:462:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 246, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 245, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5398:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 244, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '5398:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '5397:9:1' + }, + 'scope': 695, + 'src': '4862:1548:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 344, + 'nodeType': 'Block', + 'src': '6698:84:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 341, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 332, + 'src': '6765:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'expression': { + 'argumentTypes': null, + 'id': 337, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '6715:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'id': 338, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'toEthSignedMessageHash', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 970, + 'src': '6715:39:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32) pure returns (bytes32)' + } + }, + 'id': 339, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6715:41:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'id': 340, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'recover', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 954, + 'src': '6715:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 342, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6715:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'functionReturnParameters': 336, + 'id': 343, + 'nodeType': 'Return', + 'src': '6708:67:1' + } + ] + }, + 'documentation': null, + 'id': 345, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'getSubscriptionSigner', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 333, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 330, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6511:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 329, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '6511:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 332, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6568:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 331, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6568:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6501:138:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 336, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 335, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6685:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 334, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6685:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6684:9:1' + }, + 'scope': 695, + 'src': '6471:311:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 436, + 'nodeType': 'Block', + 'src': '7526:633:1', + 'statements': [ + { + 'assignments': [ + 367 + ], + 'declarations': [ + { + 'constant': false, + 'id': 367, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7536:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 366, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '7536:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 377, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 369, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7596:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 370, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 349, + 'src': '7602:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 371, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7606:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 372, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '7620:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 373, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 355, + 'src': '7633:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 374, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '7648:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 375, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 359, + 'src': '7658:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 368, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '7563:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 376, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7563:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7536:137:1' + }, + { + 'assignments': [ + 379 + ], + 'declarations': [ + { + 'constant': false, + 'id': 379, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7683:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 378, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7683:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 384, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 381, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 367, + 'src': '7722:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + { + 'argumentTypes': null, + 'id': 382, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 361, + 'src': '7740:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 380, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 345, + 'src': '7700:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 383, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7700:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7683:67:1' + }, + { + 'assignments': [ + 386 + ], + 'declarations': [ + { + 'constant': false, + 'id': 386, + 'name': 'allowance', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7760:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 385, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7760:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 396, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 391, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7810:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 393, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1746, + 'src': '7824:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + ], + 'id': 392, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '7816:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 394, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7816:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 388, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7786:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 387, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '7780:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 389, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7780:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 390, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'allowance', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1156, + 'src': '7780:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address,address) view external returns (uint256)' + } + }, + 'id': 395, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7780:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7760:70:1' + }, + { + 'assignments': [ + 398 + ], + 'declarations': [ + { + 'constant': false, + 'id': 398, + 'name': 'balance', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7840:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 397, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7840:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 405, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 403, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7888:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 400, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7864:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 399, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '7858:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 401, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7858:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 402, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '7858:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 404, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7858:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7840:53:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 433, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 426, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 419, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 412, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 408, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 406, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 379, + 'src': '7925:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 407, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7935:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '7925:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 411, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 409, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7955:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'id': 410, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 349, + 'src': '7963:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '7955:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 418, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 413, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '7981:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 414, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '7981:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 415, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '8000:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 417, + 'indexExpression': { + 'argumentTypes': null, + 'id': 416, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 367, + 'src': '8019:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '8000:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '7981:55:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:111:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 425, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 420, + 'name': 'allowance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 386, + 'src': '8052:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 423, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '8081:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 421, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '8065:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 422, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '8065:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 424, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8065:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '8052:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:165:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 432, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 427, + 'name': 'balance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 398, + 'src': '8106:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 430, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '8133:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 428, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '8117:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 429, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '8117:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 431, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8117:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '8106:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:217:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'id': 434, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '7911:241:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 365, + 'id': 435, + 'nodeType': 'Return', + 'src': '7904:248:1' + } + ] + }, + 'documentation': null, + 'id': 437, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'isSubscriptionReady', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 362, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 347, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '6943:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 346, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6943:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 349, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '6982:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 348, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6982:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 351, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7018:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 350, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7018:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 353, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7090:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 352, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7090:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 355, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7160:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 354, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7160:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 357, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7232:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 356, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7232:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 359, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7317:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 358, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7317:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 361, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7399:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 360, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '7399:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6933:537:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 365, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 364, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7516:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 363, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '7516:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '7515:6:1' + }, + 'scope': 695, + 'src': '6905:1254:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 513, + 'nodeType': 'Block', + 'src': '9029:802:1', + 'statements': [ + { + 'assignments': [ + 459 + ], + 'declarations': [ + { + 'constant': false, + 'id': 459, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9039:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 458, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '9039:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 469, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 461, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9099:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 462, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 441, + 'src': '9105:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 463, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 443, + 'src': '9109:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 464, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 445, + 'src': '9123:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 465, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 447, + 'src': '9136:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 466, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 449, + 'src': '9151:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 467, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 451, + 'src': '9161:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 460, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '9066:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 468, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9066:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '9039:137:1' + }, + { + 'assignments': [ + 471 + ], + 'declarations': [ + { + 'constant': false, + 'id': 471, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9186:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 470, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9186:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 476, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 473, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 459, + 'src': '9225:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + { + 'argumentTypes': null, + 'id': 474, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 453, + 'src': '9243:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes calldata' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes calldata' + } + ], + 'id': 472, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 345, + 'src': '9203:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 475, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9203:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '9186:67:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 480, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 478, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 471, + 'src': '9310:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 479, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9320:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '9310:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', + 'id': 481, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9326:49:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + }, + 'value': 'Invalid Signature for subscription cancellation' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + } + ], + 'id': 477, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '9302:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 482, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9302:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 483, + 'nodeType': 'ExpressionStatement', + 'src': '9302:74:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 488, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 485, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9435:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 486, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '9443:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 487, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '9443:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '9435:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', + 'id': 489, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9455:34:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string "msg.sender is not the subscriber"' + }, + 'value': 'msg.sender is not the subscriber' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string "msg.sender is not the subscriber"' + } + ], + 'id': 484, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '9427:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 490, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9427:63:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 491, + 'nodeType': 'ExpressionStatement', + 'src': '9427:63:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 499, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 492, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '9629:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 494, + 'indexExpression': { + 'argumentTypes': null, + 'id': 493, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 459, + 'src': '9648:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '9629:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 497, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '9674:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 496, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9675:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' + }, + 'value': '1' + }, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + ], + 'id': 495, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '9666:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' + }, + 'typeName': 'uint256' + }, + 'id': 498, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9666:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '9629:48:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 500, + 'nodeType': 'ExpressionStatement', + 'src': '9629:48:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 502, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9725:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 503, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 441, + 'src': '9731:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 504, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 443, + 'src': '9735:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 505, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 445, + 'src': '9749:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 506, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 447, + 'src': '9762:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 507, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 449, + 'src': '9777:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 508, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 451, + 'src': '9787:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 501, + 'name': 'CancelSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 121, + 'src': '9693:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + } + }, + 'id': 509, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9693:109:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 510, + 'nodeType': 'EmitStatement', + 'src': '9688:114:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 511, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9820:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'true' + }, + 'functionReturnParameters': 457, + 'id': 512, + 'nodeType': 'Return', + 'src': '9813:11:1' + } + ] + }, + 'documentation': null, + 'id': 514, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'cancelSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 454, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 439, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8450:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 438, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8450:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 441, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8489:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 440, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8489:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 443, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8525:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 442, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8525:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 445, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8597:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 444, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8597:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 447, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8667:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 446, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8667:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 449, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8739:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 448, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8739:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 451, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8823:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 450, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8823:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 453, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8905:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 452, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '8905:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '8440:536:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 457, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 456, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9011:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 455, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '9011:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '9010:14:1' + }, + 'scope': 695, + 'src': '8413:1418:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 656, + 'nodeType': 'Block', + 'src': '10605:2428:1', + 'statements': [ + { + 'assignments': [ + 536 + ], + 'declarations': [ + { + 'constant': false, + 'id': 536, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10615:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 535, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '10615:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 546, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 538, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10675:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 539, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '10681:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 540, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '10685:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 541, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '10699:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 542, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '10712:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 543, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '10727:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 544, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '10737:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 537, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '10642:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 545, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10642:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '10615:137:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 549, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10849:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 550, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '10855:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 551, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '10859:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 552, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '10873:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 553, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '10886:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 554, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '10901:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 555, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '10911:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 556, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 530, + 'src': '10918:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 548, + 'name': 'isSubscriptionReady', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 437, + 'src': '10829:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' + } + }, + 'id': 557, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10829:99:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', + 'id': 558, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '10930:67:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + }, + 'value': 'Subscription is not ready or conditions of transction are not met' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + } + ], + 'id': 547, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '10820:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 559, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10820:179:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 560, + 'nodeType': 'ExpressionStatement', + 'src': '10820:179:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 569, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 561, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '11089:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 563, + 'indexExpression': { + 'argumentTypes': null, + 'id': 562, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 536, + 'src': '11108:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '11089:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 567, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '11148:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 564, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '11128:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 565, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '11128:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 566, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '11128:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 568, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11128:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11089:73:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 570, + 'nodeType': 'ExpressionStatement', + 'src': '11089:73:1' + }, + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 575, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 571, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11281:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 572, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '11289:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + } + }, + 'id': 574, + 'indexExpression': { + 'argumentTypes': null, + 'id': 573, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11300:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '11289:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11281:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 583, + 'nodeType': 'IfStatement', + 'src': '11278:75:1', + 'trueBody': { + 'id': 582, + 'nodeType': 'Block', + 'src': '11306:47:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'id': 580, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 576, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '11318:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + } + }, + 'id': 578, + 'indexExpression': { + 'argumentTypes': null, + 'id': 577, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11329:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '11318:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 579, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11337:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11318:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 581, + 'nodeType': 'ExpressionStatement', + 'src': '11318:24:1' + } + ] + } + }, + { + 'assignments': [ + 585 + ], + 'declarations': [ + { + 'constant': false, + 'id': 585, + 'name': 'startingBalance', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '11438:23:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 584, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '11438:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 592, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 590, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11494:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 587, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11470:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 586, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11464:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 588, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11464:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 589, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '11464:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 591, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11464:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '11438:59:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 597, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11540:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 598, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11545:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 599, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11548:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 594, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11513:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 593, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11507:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 595, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11507:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 596, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1338, + 'src': '11507:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' + } + }, + 'id': 600, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11507:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'id': 601, + 'nodeType': 'ExpressionStatement', + 'src': '11507:53:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 613, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 605, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 603, + 'name': 'startingBalance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 585, + 'src': '11590:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '+', + 'rightExpression': { + 'argumentTypes': null, + 'id': 604, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11606:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11590:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'id': 606, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '11589:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 611, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11652:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 608, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11628:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 607, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11622:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 609, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11622:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 610, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '11622:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 612, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11622:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11589:66:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', + 'id': 614, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11667:40:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + }, + 'value': 'ERC20 Balance did not change correctly' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + } + ], + 'id': 602, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '11570:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 615, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11570:147:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 616, + 'nodeType': 'ExpressionStatement', + 'src': '11570:147:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 618, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 672, + 'src': '11747:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' + } + }, + 'id': 619, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11747:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', + 'id': 620, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11773:55:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + }, + 'value': 'Subscription::executeSubscription TransferFrom failed' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + } + ], + 'id': 617, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '11728:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 621, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11728:112:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 622, + 'nodeType': 'ExpressionStatement', + 'src': '11728:112:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 624, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11890:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 625, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11896:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 626, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11900:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 627, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11914:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 628, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '11927:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 629, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '11942:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 630, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11952:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 623, + 'name': 'ExecuteSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 105, + 'src': '11857:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + } + }, + 'id': 631, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11857:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 632, + 'nodeType': 'EmitStatement', + 'src': '11852:115:1' + }, + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 635, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 633, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '12187:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 634, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12198:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '12187:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 653, + 'nodeType': 'IfStatement', + 'src': '12183:822:1', + 'trueBody': { + 'id': 652, + 'nodeType': 'Block', + 'src': '12201:804:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 640, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '12813:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 641, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '12819:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 642, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '12819:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 643, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '12831:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 637, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '12786:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 636, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '12780:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 638, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12780:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 639, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1338, + 'src': '12780:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' + } + }, + 'id': 644, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12780:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'id': 645, + 'nodeType': 'ExpressionStatement', + 'src': '12780:60:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 647, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 672, + 'src': '12879:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' + } + }, + 'id': 648, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12879:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', + 'id': 649, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12911:69:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + }, + 'value': 'Subscription::executeSubscription Failed to pay gas as from account' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + } + ], + 'id': 646, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '12854:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 650, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12854:140:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 651, + 'nodeType': 'ExpressionStatement', + 'src': '12854:140:1' + } + ] + } + }, + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 654, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13022:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'true' + }, + 'functionReturnParameters': 534, + 'id': 655, + 'nodeType': 'Return', + 'src': '13015:11:1' + } + ] + }, + 'documentation': null, + 'id': 657, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'executeSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 531, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 516, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10027:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 515, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10027:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 518, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10066:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 517, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10066:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 520, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10102:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 519, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10102:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 522, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10174:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 521, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10174:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 524, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10244:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 523, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10244:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 526, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10316:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 525, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10316:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 528, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10400:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 527, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10400:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 530, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10483:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 529, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '10483:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '10017:537:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 534, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 533, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10587:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 532, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '10587:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '10586:14:1' + }, + 'scope': 695, + 'src': '9989:3044:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 671, + 'nodeType': 'Block', + 'src': '13533:770:1', + 'statements': [ + { + 'assignments': [ + 663 + ], + 'declarations': [ + { + 'constant': false, + 'id': 663, + 'name': 'returnValue', + 'nodeType': 'VariableDeclaration', + 'scope': 672, + 'src': '13543:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 662, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '13543:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 665, + 'initialValue': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 664, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13565:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '13543:23:1' + }, + { + 'externalReferences': [ + { + 'returnValue': { + 'declaration': 663, + 'isOffset': false, + 'isSlot': false, + 'src': '14125:11:1', + 'valueSize': 1 + } + }, + { + 'returnValue': { + 'declaration': 663, + 'isOffset': false, + 'isSlot': false, + 'src': '13848:11:1', + 'valueSize': 1 + } + } + ], + 'id': 666, + 'nodeType': 'InlineAssembly', + 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', + 'src': '13644:635:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 669, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 667, + 'name': 'returnValue', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 663, + 'src': '14280:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 668, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '14295:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '14280:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 661, + 'id': 670, + 'nodeType': 'Return', + 'src': '14273:23:1' + } + ] + }, + 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', + 'id': 672, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'checkSuccess', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 658, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '13469:7:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 661, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 660, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 672, + 'src': '13523:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 659, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '13523:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '13522:6:1' + }, + 'scope': 695, + 'src': '13448:855:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'private' + }, + { + 'body': { + 'id': 686, + 'nodeType': 'Block', + 'src': '14476:68:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 679, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 676, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '14492:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 677, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '14492:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 678, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14504:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '14492:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + ], + 'id': 675, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1726, + 'src': '14484:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' + } + }, + 'id': 680, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14484:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 681, + 'nodeType': 'ExpressionStatement', + 'src': '14484:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 683, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14531:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 682, + 'name': 'selfdestruct', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1731, + 'src': '14518:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_$returns$__$', + 'typeString': 'function (address)' + } + }, + 'id': 684, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14518:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 685, + 'nodeType': 'ExpressionStatement', + 'src': '14518:19:1' + } + ] + }, + 'documentation': null, + 'id': 687, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'endContract', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 673, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14452:2:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 674, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14476:0:1' + }, + 'scope': 695, + 'src': '14432:112:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 693, + 'nodeType': 'Block', + 'src': '14647:24:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 690, + 'name': 'revert', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1728, + 1729 + ], + 'referencedDeclaration': 1728, + 'src': '14656:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_revert_pure$__$returns$__$', + 'typeString': 'function () pure' + } + }, + 'id': 691, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14656:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 692, + 'nodeType': 'ExpressionStatement', + 'src': '14656:8:1' + } + ] + }, + 'documentation': null, + 'id': 694, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 688, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14629:2:1' + }, + 'payable': true, + 'returnParameters': { + 'id': 689, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14647:0:1' + }, + 'scope': 695, + 'src': '14621:50:1', + 'stateMutability': 'payable', + 'superFunction': null, + 'visibility': 'public' + } + ], + 'scope': 696, + 'src': '1097:13576:1' + } + ], + 'src': '0:14674:1' + }, + 'legacyAST': { + 'absolutePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', + 'exportedSymbols': { + 'Subscription': [ + 695 + ] + }, + 'id': 696, + 'nodeType': 'SourceUnit', + 'nodes': [ + { + 'id': 58, + 'literals': [ + 'solidity', + '^', + '0.4', + '.24' + ], + 'nodeType': 'PragmaDirective', + 'src': '0:24:1' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'id': 59, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 972, + 'src': '906:64:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'id': 60, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 1100, + 'src': '971:59:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'id': 61, + 'nodeType': 'ImportDirective', + 'scope': 696, + 'sourceUnit': 1569, + 'src': '1031:63:1', + 'symbolAliases': [], + 'unitAlias': '' + }, + { + 'baseContracts': [], + 'contractDependencies': [], + 'contractKind': 'contract', + 'documentation': null, + 'fullyImplemented': true, + 'id': 695, + 'linearizedBaseContracts': [ + 695 + ], + 'name': 'Subscription', + 'nodeType': 'ContractDefinition', + 'nodes': [ + { + 'id': 64, + 'libraryName': { + 'contractScope': null, + 'id': 62, + 'name': 'ECDSA', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 971, + 'src': '1131:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ECDSA_$971', + 'typeString': 'library ECDSA' + } + }, + 'nodeType': 'UsingForDirective', + 'src': '1125:24:1', + 'typeName': { + 'id': 63, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1141:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + } + }, + { + 'id': 67, + 'libraryName': { + 'contractScope': null, + 'id': 65, + 'name': 'SafeMath', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 1099, + 'src': '1160:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_SafeMath_$1099', + 'typeString': 'library SafeMath' + } + }, + 'nodeType': 'UsingForDirective', + 'src': '1154:27:1', + 'typeName': { + 'id': 66, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1173:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + { + 'constant': false, + 'id': 69, + 'name': 'owner', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1218:20:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 68, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1218:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 71, + 'name': 'contractVersion', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1244:28:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 70, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '1244:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 73, + 'name': 'requiredToAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1433:32:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 72, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1433:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 75, + 'name': 'requiredTokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1471:35:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 74, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1471:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 77, + 'name': 'requiredTokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1512:34:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 76, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1512:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 79, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1552:36:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 78, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1552:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 81, + 'name': 'requiredGasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1594:31:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 80, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1594:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 85, + 'name': 'nextValidTimestamp', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '1817:53:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + }, + 'typeName': { + 'id': 84, + 'keyType': { + 'id': 82, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1825:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'Mapping', + 'src': '1817:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + }, + 'valueType': { + 'id': 83, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1836:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'constant': false, + 'id': 89, + 'name': 'extraNonce', + 'nodeType': 'VariableDeclaration', + 'scope': 695, + 'src': '2051:45:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + }, + 'typeName': { + 'id': 88, + 'keyType': { + 'id': 86, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2059:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Mapping', + 'src': '2051:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + }, + 'valueType': { + 'id': 87, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2070:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + }, + 'value': null, + 'visibility': 'public' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 105, + 'name': 'ExecuteSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 104, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 91, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2138:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 90, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2138:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 93, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2185:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 92, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2185:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 95, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2229:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 94, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2229:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 97, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2301:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 96, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2301:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 99, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2371:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 98, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2371:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 101, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2443:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 100, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2443:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 103, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2520:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 102, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2520:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '2128:471:1' + }, + 'src': '2103:497:1' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 121, + 'name': 'CancelSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 120, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 107, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2640:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 106, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2640:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 109, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2687:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 108, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2687:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 111, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2731:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 110, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2731:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 113, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2803:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 112, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2803:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 115, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2873:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 114, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2873:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 117, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2945:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 116, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2945:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 119, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '3022:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 118, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3022:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '2630:471:1' + }, + 'src': '2606:496:1' + }, + { + 'anonymous': false, + 'documentation': null, + 'id': 127, + 'name': 'ownershipChanged', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 126, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 123, + 'indexed': false, + 'name': 'oldOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 127, + 'src': '3140:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 122, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3140:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 125, + 'indexed': false, + 'name': 'newOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 127, + 'src': '3166:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 124, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3166:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3130:58:1' + }, + 'src': '3108:81:1' + }, + { + 'body': { + 'id': 171, + 'nodeType': 'Block', + 'src': '3392:273:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'id': 144, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 142, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '3402:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 143, + 'name': '_toAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 129, + 'src': '3420:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3402:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 145, + 'nodeType': 'ExpressionStatement', + 'src': '3402:28:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 148, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 146, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '3440:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 147, + 'name': '_tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 131, + 'src': '3461:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3440:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 149, + 'nodeType': 'ExpressionStatement', + 'src': '3440:34:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 152, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 150, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '3484:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 151, + 'name': '_tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 133, + 'src': '3504:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3484:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 153, + 'nodeType': 'ExpressionStatement', + 'src': '3484:32:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 156, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 154, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '3526:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 155, + 'name': '_periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 135, + 'src': '3548:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3526:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 157, + 'nodeType': 'ExpressionStatement', + 'src': '3526:36:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 160, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 158, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '3572:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 159, + 'name': '_gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 137, + 'src': '3589:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '3572:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 161, + 'nodeType': 'ExpressionStatement', + 'src': '3572:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 165, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 162, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3608:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 163, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '3614:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 164, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3614:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3608:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 166, + 'nodeType': 'ExpressionStatement', + 'src': '3608:16:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 169, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 167, + 'name': 'contractVersion', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '3634:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 168, + 'name': '_version', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 139, + 'src': '3650:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'src': '3634:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'id': 170, + 'nodeType': 'ExpressionStatement', + 'src': '3634:24:1' + } + ] + }, + 'documentation': null, + 'id': 172, + 'implemented': true, + 'isConstructor': true, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 140, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 129, + 'name': '_toAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3216:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 128, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3216:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 131, + 'name': '_tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3244:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 130, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3244:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 133, + 'name': '_tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3275:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 132, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3275:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 135, + 'name': '_periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3305:22:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 134, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3305:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 137, + 'name': '_gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3337:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 136, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3337:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 139, + 'name': '_version', + 'nodeType': 'VariableDeclaration', + 'scope': 172, + 'src': '3364:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 138, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '3364:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3206:178:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 141, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3392:0:1' + }, + 'scope': 695, + 'src': '3195:470:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 194, + 'nodeType': 'Block', + 'src': '3962:114:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 181, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 178, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '3978:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 179, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3978:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 180, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3990:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '3978:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + ], + 'id': 177, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1726, + 'src': '3970:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' + } + }, + 'id': 182, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '3970:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 183, + 'nodeType': 'ExpressionStatement', + 'src': '3970:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 186, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 184, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '4004:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 185, + 'name': '_newOwner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 174, + 'src': '4012:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '4004:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'id': 187, + 'nodeType': 'ExpressionStatement', + 'src': '4004:17:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 189, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '4051:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 190, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4051:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 191, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '4063:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 188, + 'name': 'ownershipChanged', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 127, + 'src': '4034:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$returns$__$', + 'typeString': 'function (address,address)' + } + }, + 'id': 192, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4034:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 193, + 'nodeType': 'EmitStatement', + 'src': '4029:40:1' + } + ] + }, + 'documentation': null, + 'id': 195, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'changeOwnership', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 175, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 174, + 'name': '_newOwner', + 'nodeType': 'VariableDeclaration', + 'scope': 195, + 'src': '3926:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 173, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3926:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '3925:19:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 176, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3962:0:1' + }, + 'scope': 695, + 'src': '3901:175:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 227, + 'nodeType': 'Block', + 'src': '4479:227:1', + 'statements': [ + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 211, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 204, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4492:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 206, + 'indexExpression': { + 'argumentTypes': null, + 'id': 205, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 197, + 'src': '4511:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4492:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 209, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '4538:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 208, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4539:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' + }, + 'value': '1' + }, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + ], + 'id': 207, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '4530:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' + }, + 'typeName': 'uint256' + }, + 'id': 210, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4530:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '4492:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 215, + 'nodeType': 'IfStatement', + 'src': '4489:88:1', + 'trueBody': { + 'id': 214, + 'nodeType': 'Block', + 'src': '4542:35:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '66616c7365', + 'id': 212, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4561:5:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'false' + }, + 'functionReturnParameters': 203, + 'id': 213, + 'nodeType': 'Return', + 'src': '4554:12:1' + } + ] + } + }, + { + 'expression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 224, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 216, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '4594:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 217, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4594:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '<=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 222, + 'name': 'gracePeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 199, + 'src': '4670:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 218, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4629:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 220, + 'indexExpression': { + 'argumentTypes': null, + 'id': 219, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 197, + 'src': '4648:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4629:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 221, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '4629:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 223, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4629:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '4594:95:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'id': 225, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '4593:106:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 203, + 'id': 226, + 'nodeType': 'Return', + 'src': '4586:113:1' + } + ] + }, + 'documentation': null, + 'id': 228, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'isSubscriptionActive', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 200, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 197, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4355:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 196, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '4355:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 199, + 'name': 'gracePeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4389:26:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 198, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4389:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4345:76:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 203, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 202, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 228, + 'src': '4469:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 201, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '4469:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4468:6:1' + }, + 'scope': 695, + 'src': '4316:390:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 327, + 'nodeType': 'Block', + 'src': '5411:999:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 256, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 252, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 248, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5535:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 250, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5564:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 249, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5556:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 251, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5556:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5535:31:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 255, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 253, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 232, + 'src': '5570:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 254, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5576:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5570:23:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5535:58:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f41646472657373204661696c757265', + 'id': 257, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5595:27:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string "requiredToAddress Failure"' + }, + 'value': 'requiredToAddress Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string "requiredToAddress Failure"' + } + ], + 'id': 247, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5526:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 258, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5526:98:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 259, + 'nodeType': 'ExpressionStatement', + 'src': '5526:98:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 269, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 265, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 261, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5643:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 263, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5675:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 262, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5667:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 264, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5667:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5643:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 268, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 266, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 234, + 'src': '5681:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 267, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5697:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '5681:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5643:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', + 'id': 270, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5719:30:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string "requiredTokenAddress Failure"' + }, + 'value': 'requiredTokenAddress Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string "requiredTokenAddress Failure"' + } + ], + 'id': 260, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5634:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 271, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5634:118:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 272, + 'nodeType': 'ExpressionStatement', + 'src': '5634:118:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 280, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 276, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 274, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5771:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 275, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5794:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '5771:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 279, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 277, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 236, + 'src': '5799:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 278, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5814:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '5799:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5771:62:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', + 'id': 281, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5835:29:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string "requiredTokenAmount Failure"' + }, + 'value': 'requiredTokenAmount Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string "requiredTokenAmount Failure"' + } + ], + 'id': 273, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5762:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 282, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5762:105:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 283, + 'nodeType': 'ExpressionStatement', + 'src': '5762:105:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 291, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 287, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 285, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5886:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 286, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5911:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '5886:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 290, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 288, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 238, + 'src': '5916:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 289, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5933:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '5916:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '5886:68:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', + 'id': 292, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5956:31:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + }, + 'value': 'requiredPeriodSeconds Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + } + ], + 'id': 284, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '5877:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 293, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5877:113:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 294, + 'nodeType': 'ExpressionStatement', + 'src': '5877:113:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 302, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 298, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 296, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '6009:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 297, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6029:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '6009:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 301, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 299, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 240, + 'src': '6034:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 300, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '6046:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '6034:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '6009:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '72657175697265644761735072696365204661696c757265', + 'id': 303, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6064:26:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string "requiredGasPrice Failure"' + }, + 'value': 'requiredGasPrice Failure' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string "requiredGasPrice Failure"' + } + ], + 'id': 295, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '6000:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 304, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6000:93:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 305, + 'nodeType': 'ExpressionStatement', + 'src': '6000:93:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30783139', + 'id': 310, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6173:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' + }, + 'value': '0x19' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' + } + ], + 'id': 309, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6168:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' + }, + 'typeName': 'byte' + }, + 'id': 311, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6168:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 313, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '6201:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + } + ], + 'id': 312, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6196:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' + }, + 'typeName': 'byte' + }, + 'id': 314, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6196:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 316, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1746, + 'src': '6229:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + ], + 'id': 315, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '6221:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 317, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6221:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 318, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 230, + 'src': '6252:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 319, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 232, + 'src': '6274:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 320, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 234, + 'src': '6294:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 321, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 236, + 'src': '6324:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 322, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 238, + 'src': '6353:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 323, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 240, + 'src': '6384:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + }, + { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 307, + 'name': 'abi', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1710, + 'src': '6134:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_abi', + 'typeString': 'abi' + } + }, + 'id': 308, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'memberName': 'encodePacked', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '6134:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', + 'typeString': 'function () pure returns (bytes memory)' + } + }, + 'id': 324, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6134:268:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 306, + 'name': 'keccak256', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1717, + 'src': '6111:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_sha3_pure$__$returns$_t_bytes32_$', + 'typeString': 'function () pure returns (bytes32)' + } + }, + 'id': 325, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6111:292:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'functionReturnParameters': 246, + 'id': 326, + 'nodeType': 'Return', + 'src': '6104:299:1' + } + ] + }, + 'documentation': null, + 'id': 328, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'getSubscriptionHash', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 243, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 230, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4900:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 229, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4900:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 232, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4939:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 231, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4939:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 234, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '4975:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 233, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4975:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 236, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5047:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 235, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5047:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 238, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5117:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 237, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5117:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 240, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5189:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 239, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5189:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 242, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5273:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 241, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '5273:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '4890:462:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 246, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 245, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 328, + 'src': '5398:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 244, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '5398:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '5397:9:1' + }, + 'scope': 695, + 'src': '4862:1548:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 344, + 'nodeType': 'Block', + 'src': '6698:84:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 341, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 332, + 'src': '6765:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'expression': { + 'argumentTypes': null, + 'id': 337, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '6715:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'id': 338, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'toEthSignedMessageHash', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 970, + 'src': '6715:39:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32) pure returns (bytes32)' + } + }, + 'id': 339, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6715:41:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'id': 340, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'recover', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 954, + 'src': '6715:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 342, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6715:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'functionReturnParameters': 336, + 'id': 343, + 'nodeType': 'Return', + 'src': '6708:67:1' + } + ] + }, + 'documentation': null, + 'id': 345, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'getSubscriptionSigner', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 333, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 330, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6511:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 329, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '6511:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 332, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6568:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 331, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6568:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6501:138:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 336, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 335, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 345, + 'src': '6685:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 334, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6685:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6684:9:1' + }, + 'scope': 695, + 'src': '6471:311:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 436, + 'nodeType': 'Block', + 'src': '7526:633:1', + 'statements': [ + { + 'assignments': [ + 367 + ], + 'declarations': [ + { + 'constant': false, + 'id': 367, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7536:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 366, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '7536:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 377, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 369, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7596:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 370, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 349, + 'src': '7602:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 371, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7606:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 372, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '7620:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 373, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 355, + 'src': '7633:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 374, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '7648:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 375, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 359, + 'src': '7658:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 368, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '7563:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 376, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7563:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7536:137:1' + }, + { + 'assignments': [ + 379 + ], + 'declarations': [ + { + 'constant': false, + 'id': 379, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7683:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 378, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7683:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 384, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 381, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 367, + 'src': '7722:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + { + 'argumentTypes': null, + 'id': 382, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 361, + 'src': '7740:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 380, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 345, + 'src': '7700:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 383, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7700:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7683:67:1' + }, + { + 'assignments': [ + 386 + ], + 'declarations': [ + { + 'constant': false, + 'id': 386, + 'name': 'allowance', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7760:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 385, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7760:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 396, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 391, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7810:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 393, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1746, + 'src': '7824:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_contract$_Subscription_$695', + 'typeString': 'contract Subscription' + } + ], + 'id': 392, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '7816:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' + }, + 'typeName': 'address' + }, + 'id': 394, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7816:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 388, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7786:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 387, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '7780:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 389, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7780:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 390, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'allowance', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1156, + 'src': '7780:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address,address) view external returns (uint256)' + } + }, + 'id': 395, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7780:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7760:70:1' + }, + { + 'assignments': [ + 398 + ], + 'declarations': [ + { + 'constant': false, + 'id': 398, + 'name': 'balance', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7840:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 397, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7840:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 405, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 403, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7888:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 400, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 351, + 'src': '7864:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 399, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '7858:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 401, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7858:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 402, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '7858:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 404, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7858:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '7840:53:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 433, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 426, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 419, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'id': 412, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 408, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 406, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 379, + 'src': '7925:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 407, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7935:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '7925:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 411, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 409, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 347, + 'src': '7955:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'id': 410, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 349, + 'src': '7963:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '7955:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 418, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 413, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '7981:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 414, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '7981:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 415, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '8000:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 417, + 'indexExpression': { + 'argumentTypes': null, + 'id': 416, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 367, + 'src': '8019:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '8000:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '7981:55:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:111:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 425, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 420, + 'name': 'allowance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 386, + 'src': '8052:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 423, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '8081:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 421, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '8065:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 422, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '8065:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 424, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8065:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '8052:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:165:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 432, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 427, + 'name': 'balance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 398, + 'src': '8106:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 430, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 357, + 'src': '8133:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'id': 428, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 353, + 'src': '8117:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 429, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '8117:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 431, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8117:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '8106:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'src': '7925:217:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'id': 434, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '7911:241:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 365, + 'id': 435, + 'nodeType': 'Return', + 'src': '7904:248:1' + } + ] + }, + 'documentation': null, + 'id': 437, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'isSubscriptionReady', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 362, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 347, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '6943:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 346, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6943:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 349, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '6982:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 348, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6982:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 351, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7018:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 350, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7018:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 353, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7090:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 352, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7090:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 355, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7160:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 354, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7160:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 357, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7232:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 356, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7232:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 359, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7317:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 358, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7317:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 361, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7399:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 360, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '7399:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '6933:537:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 365, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 364, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 437, + 'src': '7516:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 363, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '7516:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '7515:6:1' + }, + 'scope': 695, + 'src': '6905:1254:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 513, + 'nodeType': 'Block', + 'src': '9029:802:1', + 'statements': [ + { + 'assignments': [ + 459 + ], + 'declarations': [ + { + 'constant': false, + 'id': 459, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9039:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 458, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '9039:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 469, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 461, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9099:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 462, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 441, + 'src': '9105:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 463, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 443, + 'src': '9109:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 464, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 445, + 'src': '9123:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 465, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 447, + 'src': '9136:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 466, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 449, + 'src': '9151:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 467, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 451, + 'src': '9161:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 460, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '9066:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 468, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9066:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '9039:137:1' + }, + { + 'assignments': [ + 471 + ], + 'declarations': [ + { + 'constant': false, + 'id': 471, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9186:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 470, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9186:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 476, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 473, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 459, + 'src': '9225:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + { + 'argumentTypes': null, + 'id': 474, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 453, + 'src': '9243:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes calldata' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes calldata' + } + ], + 'id': 472, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 345, + 'src': '9203:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + } + }, + 'id': 475, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9203:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '9186:67:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 480, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 478, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 471, + 'src': '9310:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 479, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9320:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '9310:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', + 'id': 481, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9326:49:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + }, + 'value': 'Invalid Signature for subscription cancellation' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + } + ], + 'id': 477, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '9302:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 482, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9302:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 483, + 'nodeType': 'ExpressionStatement', + 'src': '9302:74:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 488, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 485, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9435:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 486, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '9443:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 487, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '9443:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '9435:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', + 'id': 489, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9455:34:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string "msg.sender is not the subscriber"' + }, + 'value': 'msg.sender is not the subscriber' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string "msg.sender is not the subscriber"' + } + ], + 'id': 484, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '9427:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 490, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9427:63:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 491, + 'nodeType': 'ExpressionStatement', + 'src': '9427:63:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 499, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 492, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '9629:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 494, + 'indexExpression': { + 'argumentTypes': null, + 'id': 493, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 459, + 'src': '9648:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '9629:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 497, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '9674:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 496, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9675:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' + }, + 'value': '1' + }, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_rational_-1_by_1', + 'typeString': 'int_const -1' + } + ], + 'id': 495, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '9666:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' + }, + 'typeName': 'uint256' + }, + 'id': 498, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9666:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '9629:48:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 500, + 'nodeType': 'ExpressionStatement', + 'src': '9629:48:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 502, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 439, + 'src': '9725:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 503, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 441, + 'src': '9731:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 504, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 443, + 'src': '9735:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 505, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 445, + 'src': '9749:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 506, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 447, + 'src': '9762:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 507, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 449, + 'src': '9777:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 508, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 451, + 'src': '9787:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 501, + 'name': 'CancelSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 121, + 'src': '9693:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + } + }, + 'id': 509, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9693:109:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 510, + 'nodeType': 'EmitStatement', + 'src': '9688:114:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 511, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9820:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'true' + }, + 'functionReturnParameters': 457, + 'id': 512, + 'nodeType': 'Return', + 'src': '9813:11:1' + } + ] + }, + 'documentation': null, + 'id': 514, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'cancelSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 454, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 439, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8450:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 438, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8450:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 441, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8489:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 440, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8489:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 443, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8525:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 442, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8525:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 445, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8597:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 444, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8597:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 447, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8667:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 446, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8667:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 449, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8739:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 448, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8739:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 451, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8823:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 450, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8823:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 453, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '8905:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_calldata_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 452, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '8905:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '8440:536:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 457, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 456, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 514, + 'src': '9011:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 455, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '9011:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '9010:14:1' + }, + 'scope': 695, + 'src': '8413:1418:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 656, + 'nodeType': 'Block', + 'src': '10605:2428:1', + 'statements': [ + { + 'assignments': [ + 536 + ], + 'declarations': [ + { + 'constant': false, + 'id': 536, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10615:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 535, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '10615:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 546, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 538, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10675:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 539, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '10681:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 540, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '10685:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 541, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '10699:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 542, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '10712:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 543, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '10727:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 544, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '10737:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 537, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '10642:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + } + }, + 'id': 545, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10642:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '10615:137:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 549, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10849:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 550, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '10855:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 551, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '10859:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 552, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '10873:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 553, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '10886:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 554, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '10901:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 555, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '10911:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 556, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 530, + 'src': '10918:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' + } + ], + 'id': 548, + 'name': 'isSubscriptionReady', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 437, + 'src': '10829:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' + } + }, + 'id': 557, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10829:99:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', + 'id': 558, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '10930:67:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + }, + 'value': 'Subscription is not ready or conditions of transction are not met' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + } + ], + 'id': 547, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '10820:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 559, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10820:179:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 560, + 'nodeType': 'ExpressionStatement', + 'src': '10820:179:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'id': 569, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 561, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '11089:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' + } + }, + 'id': 563, + 'indexExpression': { + 'argumentTypes': null, + 'id': 562, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 536, + 'src': '11108:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '11089:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 567, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '11148:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 564, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1713, + 'src': '11128:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' + } + }, + 'id': 565, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '11128:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 566, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1078, + 'src': '11128:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' + } + }, + 'id': 568, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11128:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11089:73:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 570, + 'nodeType': 'ExpressionStatement', + 'src': '11089:73:1' + }, + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 575, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 571, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11281:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 572, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '11289:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + } + }, + 'id': 574, + 'indexExpression': { + 'argumentTypes': null, + 'id': 573, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11300:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '11289:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11281:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 583, + 'nodeType': 'IfStatement', + 'src': '11278:75:1', + 'trueBody': { + 'id': 582, + 'nodeType': 'Block', + 'src': '11306:47:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'id': 580, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 576, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '11318:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' + } + }, + 'id': 578, + 'indexExpression': { + 'argumentTypes': null, + 'id': 577, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11329:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '11318:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 579, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11337:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11318:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'id': 581, + 'nodeType': 'ExpressionStatement', + 'src': '11318:24:1' + } + ] + } + }, + { + 'assignments': [ + 585 + ], + 'declarations': [ + { + 'constant': false, + 'id': 585, + 'name': 'startingBalance', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '11438:23:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 584, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '11438:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 592, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 590, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11494:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 587, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11470:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 586, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11464:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 588, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11464:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 589, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '11464:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 591, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11464:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '11438:59:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 597, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11540:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 598, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11545:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 599, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11548:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 594, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11513:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 593, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11507:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 595, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11507:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 596, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1338, + 'src': '11507:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' + } + }, + 'id': 600, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11507:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'id': 601, + 'nodeType': 'ExpressionStatement', + 'src': '11507:53:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 613, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'components': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 605, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 603, + 'name': 'startingBalance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 585, + 'src': '11590:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '+', + 'rightExpression': { + 'argumentTypes': null, + 'id': 604, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11606:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11590:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'id': 606, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '11589:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 611, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11652:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 608, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11628:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 607, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '11622:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 609, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11622:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 610, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1140, + 'src': '11622:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' + } + }, + 'id': 612, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11622:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'src': '11589:66:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', + 'id': 614, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11667:40:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + }, + 'value': 'ERC20 Balance did not change correctly' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + } + ], + 'id': 602, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '11570:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 615, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11570:147:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 616, + 'nodeType': 'ExpressionStatement', + 'src': '11570:147:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 618, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 672, + 'src': '11747:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' + } + }, + 'id': 619, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11747:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', + 'id': 620, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11773:55:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + }, + 'value': 'Subscription::executeSubscription TransferFrom failed' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + } + ], + 'id': 617, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '11728:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 621, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11728:112:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 622, + 'nodeType': 'ExpressionStatement', + 'src': '11728:112:1' + }, + { + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 624, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '11890:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 625, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 518, + 'src': '11896:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 626, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '11900:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 627, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 522, + 'src': '11914:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 628, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 524, + 'src': '11927:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 629, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '11942:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + { + 'argumentTypes': null, + 'id': 630, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 528, + 'src': '11952:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'id': 623, + 'name': 'ExecuteSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 105, + 'src': '11857:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + } + }, + 'id': 631, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11857:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 632, + 'nodeType': 'EmitStatement', + 'src': '11852:115:1' + }, + { + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 635, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 633, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '12187:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 634, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12198:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '12187:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'falseBody': null, + 'id': 653, + 'nodeType': 'IfStatement', + 'src': '12183:822:1', + 'trueBody': { + 'id': 652, + 'nodeType': 'Block', + 'src': '12201:804:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 640, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '12813:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 641, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '12819:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 642, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '12819:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + { + 'argumentTypes': null, + 'id': 643, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 526, + 'src': '12831:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + ], + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 637, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 520, + 'src': '12786:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 636, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1568, + 'src': '12780:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', + 'typeString': 'type(contract ERC20)' + } + }, + 'id': 638, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12780:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1568', + 'typeString': 'contract ERC20' + } + }, + 'id': 639, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1338, + 'src': '12780:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' + } + }, + 'id': 644, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12780:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'id': 645, + 'nodeType': 'ExpressionStatement', + 'src': '12780:60:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 647, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 672, + 'src': '12879:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' + } + }, + 'id': 648, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12879:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + { + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', + 'id': 649, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12911:69:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + }, + 'value': 'Subscription::executeSubscription Failed to pay gas as from account' + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + } + ], + 'id': 646, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1727, + 'src': '12854:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' + } + }, + 'id': 650, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12854:140:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 651, + 'nodeType': 'ExpressionStatement', + 'src': '12854:140:1' + } + ] + } + }, + { + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 654, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13022:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'value': 'true' + }, + 'functionReturnParameters': 534, + 'id': 655, + 'nodeType': 'Return', + 'src': '13015:11:1' + } + ] + }, + 'documentation': null, + 'id': 657, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'executeSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 531, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 516, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10027:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 515, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10027:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 518, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10066:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 517, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10066:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 520, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10102:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 519, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '10102:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 522, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10174:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 521, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10174:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 524, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10244:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 523, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10244:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 526, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10316:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 525, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10316:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 528, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10400:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 527, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '10400:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + }, + { + 'constant': false, + 'id': 530, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10483:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 529, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '10483:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '10017:537:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 534, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 533, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 657, + 'src': '10587:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 532, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '10587:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '10586:14:1' + }, + 'scope': 695, + 'src': '9989:3044:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' + }, + { + 'body': { + 'id': 671, + 'nodeType': 'Block', + 'src': '13533:770:1', + 'statements': [ + { + 'assignments': [ + 663 + ], + 'declarations': [ + { + 'constant': false, + 'id': 663, + 'name': 'returnValue', + 'nodeType': 'VariableDeclaration', + 'scope': 672, + 'src': '13543:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 662, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '13543:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'id': 665, + 'initialValue': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 664, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13565:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'nodeType': 'VariableDeclarationStatement', + 'src': '13543:23:1' + }, + { + 'externalReferences': [ + { + 'returnValue': { + 'declaration': 663, + 'isOffset': false, + 'isSlot': false, + 'src': '14125:11:1', + 'valueSize': 1 + } + }, + { + 'returnValue': { + 'declaration': 663, + 'isOffset': false, + 'isSlot': false, + 'src': '13848:11:1', + 'valueSize': 1 + } + } + ], + 'id': 666, + 'nodeType': 'InlineAssembly', + 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', + 'src': '13644:635:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'id': 669, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 667, + 'name': 'returnValue', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 663, + 'src': '14280:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 668, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '14295:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' + }, + 'value': '0' + }, + 'src': '14280:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'functionReturnParameters': 661, + 'id': 670, + 'nodeType': 'Return', + 'src': '14273:23:1' + } + ] + }, + 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', + 'id': 672, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': true, + 'modifiers': [], + 'name': 'checkSuccess', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 658, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '13469:7:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 661, + 'nodeType': 'ParameterList', + 'parameters': [ + { + 'constant': false, + 'id': 660, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 672, + 'src': '13523:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 659, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '13523:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + }, + 'value': null, + 'visibility': 'internal' + } + ], + 'src': '13522:6:1' + }, + 'scope': 695, + 'src': '13448:855:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'private' + }, + { + 'body': { + 'id': 686, + 'nodeType': 'Block', + 'src': '14476:68:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'id': 679, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 676, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1723, + 'src': '14492:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' + } + }, + 'id': 677, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '14492:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 678, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14504:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + }, + 'src': '14492:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + } + ], + 'id': 675, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1726, + 1727 + ], + 'referencedDeclaration': 1726, + 'src': '14484:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' + } + }, + 'id': 680, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14484:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 681, + 'nodeType': 'ExpressionStatement', + 'src': '14484:26:1' + }, + { + 'expression': { + 'argumentTypes': null, + 'arguments': [ + { + 'argumentTypes': null, + 'id': 683, + 'name': 'owner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14531:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + } + ], + 'expression': { + 'argumentTypes': [ + { + 'typeIdentifier': 't_address', + 'typeString': 'address' + } + ], + 'id': 682, + 'name': 'selfdestruct', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1731, + 'src': '14518:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_$returns$__$', + 'typeString': 'function (address)' + } + }, + 'id': 684, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14518:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 685, + 'nodeType': 'ExpressionStatement', + 'src': '14518:19:1' + } + ] + }, + 'documentation': null, + 'id': 687, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': 'endContract', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 673, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14452:2:1' + }, + 'payable': false, + 'returnParameters': { + 'id': 674, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14476:0:1' + }, + 'scope': 695, + 'src': '14432:112:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' + }, + { + 'body': { + 'id': 693, + 'nodeType': 'Block', + 'src': '14647:24:1', + 'statements': [ + { + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 690, + 'name': 'revert', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ + 1728, + 1729 + ], + 'referencedDeclaration': 1728, + 'src': '14656:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_revert_pure$__$returns$__$', + 'typeString': 'function () pure' + } + }, + 'id': 691, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14656:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' + } + }, + 'id': 692, + 'nodeType': 'ExpressionStatement', + 'src': '14656:8:1' + } + ] + }, + 'documentation': null, + 'id': 694, + 'implemented': true, + 'isConstructor': false, + 'isDeclaredConst': false, + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 688, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14629:2:1' + }, + 'payable': true, + 'returnParameters': { + 'id': 689, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14647:0:1' + }, + 'scope': 695, + 'src': '14621:50:1', + 'stateMutability': 'payable', + 'superFunction': null, + 'visibility': 'public' + } + ], + 'scope': 696, + 'src': '1097:13576:1' + } + ], + 'src': '0:14674:1' + }, + 'compiler': { + 'name': 'solc', + 'version': '0.4.24+commit.e67f0147.Emscripten.clang' + }, + 'networks': {}, + 'schemaVersion': '2.0.0', + 'updatedAt': '2018-12-17T20:06:15.555Z' +}; diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index b0f0d27eb80..4c3c69d8ed7 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -117,8 +117,11 @@ $(document).ready(function() { realPeriodSeconds = periodSeconds; } } - - let deployedSubscription = new web3.eth.Contract(compiledSubscription.abi, data.contract_address); + if (contractVersion == 0) { + let deployedSubscription = new web3.eth.Contract(compiledSubscription0.abi, data.contract_address); + } else if (contractVersion == 1) { + let deployedSubscription = new web3.eth.Contract(compiledSubscription1.abi, data.contract_address); + } let selected_token; if (data.token_address != '0x0000000000000000000000000000000000000000') { @@ -153,7 +156,13 @@ $(document).ready(function() { let realTokenAmount = Number(data.amount_per_period * Math.pow(10, decimals)); let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); - let realApproval = Number(((grant_amount + gitcoin_grant_amount) * data.num_periods * Math.pow(10, decimals)) + 1); + let realApproval; + if (contractVersion == 0) { + // version 0 of the contract has no fee + realApproval = Number((grant_amount * data.num_periods * Math.pow(10, decimals)) + 1); + } else if (contractVersion == 1) { + realApproval = Number(((grant_amount + gitcoin_grant_amount) * data.num_periods * Math.pow(10, decimals)) + 1); + } let approvalSTR = realApproval.toLocaleString('fullwide', { useGrouping: false }); web3.eth.getAccounts(function(err, accounts) { @@ -167,7 +176,8 @@ $(document).ready(function() { web3.utils.toTwosComplement(approvalSTR) ).send({ from: accounts[0], - gasPrice: realGasPrice + // TODO: this is not the correct variable, this is for the metatx + //gasPrice: realGasPrice }).on('error', function(error) { console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); @@ -214,7 +224,7 @@ $(document).ready(function() { }); // waitforWeb3 }); // document ready -const subscribeToGrant = (transactionHash) => { +const subscribeToGrant = (transactionHash, grant_version) => { $('#sub_new_approve_tx_id').val(transactionHash); const linkURL = etherscan_tx_url(transactionHash); let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); diff --git a/app/grants/templates/grants/cancel.html b/app/grants/templates/grants/cancel.html index e7c81e25320..a893de1a793 100644 --- a/app/grants/templates/grants/cancel.html +++ b/app/grants/templates/grants/cancel.html @@ -111,7 +111,8 @@
{% trans "Gas Settings" %}
{% include 'grants/shared/shared_scripts.html' %} - + + diff --git a/app/grants/templates/grants/detail/index.html b/app/grants/templates/grants/detail/index.html index 059004bf123..a449abe0c5c 100644 --- a/app/grants/templates/grants/detail/index.html +++ b/app/grants/templates/grants/detail/index.html @@ -371,7 +371,8 @@

{% trans "No Activity for th - + + diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index cbc74ced013..f25f11dabef 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -296,7 +296,8 @@

Thanks for Contributing!
{% include 'grants/shared/shared_scripts.html' %} - + + diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 68392293b41..9e361294011 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -158,7 +158,8 @@
{% trans "Gas Settings" %}
- + + From 4090f2a55b7d306a890fc53302127a022281f146 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Mon, 20 May 2019 01:06:17 +0900 Subject: [PATCH 06/25] add new abi to grant models --- app/grants/abi.py | 174 + app/grants/abi_v1.json | 18068 ++++++++++++++++++++++++++++++++++++ app/grants/convert_abi.py | 9 + app/grants/models.py | 9 +- 4 files changed, 18258 insertions(+), 2 deletions(-) create mode 100644 app/grants/abi_v1.json create mode 100644 app/grants/convert_abi.py diff --git a/app/grants/abi.py b/app/grants/abi.py index e8232133bab..906eaebedc2 100644 --- a/app/grants/abi.py +++ b/app/grants/abi.py @@ -17,6 +17,180 @@ along with this program. If not, see . """ +abi_v1 = [{'constant': True, + 'inputs': [], + 'name': 'requiredGasPrice', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'requiredTokenAmount', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'requiredToAddress', + 'outputs': [{'name': '', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'requiredPeriodSeconds', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'requiredTokenAddress', + 'outputs': [{'name': '', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'relayer', + 'outputs': [{'name': '', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [{'name': '', 'type': 'address'}], + 'name': 'extraNonce', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [], + 'name': 'author', + 'outputs': [{'name': '', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [{'name': '', 'type': 'bytes32'}], + 'name': 'nextValidTimestamp', + 'outputs': [{'name': '', 'type': 'uint256'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'inputs': [{'name': '_toAddress', 'type': 'address'}, + {'name': '_tokenAddress', 'type': 'address'}, + {'name': '_tokenAmount', 'type': 'uint256'}, + {'name': '_periodSeconds', 'type': 'uint256'}, + {'name': '_gasPrice', 'type': 'uint256'}, + {'name': '_version', 'type': 'uint8'}, + {'name': '_relayer', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'nonpayable', + 'type': 'constructor'}, + {'payable': True, 'stateMutability': 'payable', 'type': 'fallback'}, + {'anonymous': False, + 'inputs': [{'indexed': True, 'name': 'from', 'type': 'address'}, + {'indexed': True, 'name': 'to', 'type': 'address'}, + {'indexed': False, 'name': 'tokenAddress', 'type': 'address'}, + {'indexed': False, 'name': 'tokenAmount', 'type': 'uint256'}, + {'indexed': False, 'name': 'periodSeconds', 'type': 'uint256'}, + {'indexed': False, 'name': 'gasPrice', 'type': 'uint256'}, + {'indexed': False, 'name': 'nonce', 'type': 'uint256'}], + 'name': 'ExecuteSubscription', + 'type': 'event'}, + {'anonymous': False, + 'inputs': [{'indexed': True, 'name': 'from', 'type': 'address'}, + {'indexed': True, 'name': 'to', 'type': 'address'}, + {'indexed': False, 'name': 'tokenAddress', 'type': 'address'}, + {'indexed': False, 'name': 'tokenAmount', 'type': 'uint256'}, + {'indexed': False, 'name': 'periodSeconds', 'type': 'uint256'}, + {'indexed': False, 'name': 'gasPrice', 'type': 'uint256'}, + {'indexed': False, 'name': 'nonce', 'type': 'uint256'}], + 'name': 'CancelSubscription', + 'type': 'event'}, + {'constant': True, + 'inputs': [{'name': 'subscriptionHash', 'type': 'bytes32'}, + {'name': 'gracePeriodSeconds', 'type': 'uint256'}], + 'name': 'isSubscriptionActive', + 'outputs': [{'name': '', 'type': 'bool'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [{'name': 'from', 'type': 'address'}, + {'name': 'to', 'type': 'address'}, + {'name': 'tokenAddress', 'type': 'address'}, + {'name': 'tokenAmount', 'type': 'uint256'}, + {'name': 'periodSeconds', 'type': 'uint256'}, + {'name': 'gasPrice', 'type': 'uint256'}, + {'name': 'nonce', 'type': 'uint256'}], + 'name': 'getSubscriptionHash', + 'outputs': [{'name': '', 'type': 'bytes32'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': True, + 'inputs': [{'name': 'subscriptionHash', 'type': 'bytes32'}, + {'name': 'signature', 'type': 'bytes'}], + 'name': 'getSubscriptionSigner', + 'outputs': [{'name': '', 'type': 'address'}], + 'payable': False, + 'stateMutability': 'pure', + 'type': 'function'}, + {'constant': True, + 'inputs': [{'name': 'from', 'type': 'address'}, + {'name': 'to', 'type': 'address'}, + {'name': 'tokenAddress', 'type': 'address'}, + {'name': 'tokenAmount', 'type': 'uint256'}, + {'name': 'periodSeconds', 'type': 'uint256'}, + {'name': 'gasPrice', 'type': 'uint256'}, + {'name': 'nonce', 'type': 'uint256'}, + {'name': 'signature', 'type': 'bytes'}], + 'name': 'isSubscriptionReady', + 'outputs': [{'name': '', 'type': 'bool'}], + 'payable': False, + 'stateMutability': 'view', + 'type': 'function'}, + {'constant': False, + 'inputs': [{'name': 'from', 'type': 'address'}, + {'name': 'to', 'type': 'address'}, + {'name': 'tokenAddress', 'type': 'address'}, + {'name': 'tokenAmount', 'type': 'uint256'}, + {'name': 'periodSeconds', 'type': 'uint256'}, + {'name': 'gasPrice', 'type': 'uint256'}, + {'name': 'nonce', 'type': 'uint256'}, + {'name': 'signature', 'type': 'bytes'}], + 'name': 'cancelSubscription', + 'outputs': [{'name': 'success', 'type': 'bool'}], + 'payable': False, + 'stateMutability': 'nonpayable', + 'type': 'function'}, + {'constant': False, + 'inputs': [{'name': 'from', 'type': 'address'}, + {'name': 'to', 'type': 'address'}, + {'name': 'tokenAddress', 'type': 'address'}, + {'name': 'tokenAmount', 'type': 'uint256'}, + {'name': 'periodSeconds', 'type': 'uint256'}, + {'name': 'gasPrice', 'type': 'uint256'}, + {'name': 'nonce', 'type': 'uint256'}, + {'name': 'signature', 'type': 'bytes'}], + 'name': 'executeSubscription', + 'outputs': [{'name': 'success', 'type': 'bool'}], + 'payable': False, + 'stateMutability': 'nonpayable', + 'type': 'function'}, + {'constant': False, + 'inputs': [], + 'name': 'endContract', + 'outputs': [], + 'payable': False, + 'stateMutability': 'nonpayable', + 'type': 'function'}] + + abi_v0 = [{ "constant": True, "inputs": [], diff --git a/app/grants/abi_v1.json b/app/grants/abi_v1.json new file mode 100644 index 00000000000..a20e3746c0f --- /dev/null +++ b/app/grants/abi_v1.json @@ -0,0 +1,18068 @@ +{ + "contractName": "Subscription", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "requiredGasPrice", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "requiredTokenAmount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "requiredToAddress", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "requiredPeriodSeconds", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "requiredTokenAddress", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "relayer", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "extraNonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "author", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "nextValidTimestamp", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_toAddress", + "type": "address" + }, + { + "name": "_tokenAddress", + "type": "address" + }, + { + "name": "_tokenAmount", + "type": "uint256" + }, + { + "name": "_periodSeconds", + "type": "uint256" + }, + { + "name": "_gasPrice", + "type": "uint256" + }, + { + "name": "_version", + "type": "uint8" + }, + { + "name": "_relayer", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "name": "tokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "periodSeconds", + "type": "uint256" + }, + { + "indexed": false, + "name": "gasPrice", + "type": "uint256" + }, + { + "indexed": false, + "name": "nonce", + "type": "uint256" + } + ], + "name": "ExecuteSubscription", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "name": "tokenAmount", + "type": "uint256" + }, + { + "indexed": false, + "name": "periodSeconds", + "type": "uint256" + }, + { + "indexed": false, + "name": "gasPrice", + "type": "uint256" + }, + { + "indexed": false, + "name": "nonce", + "type": "uint256" + } + ], + "name": "CancelSubscription", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "subscriptionHash", + "type": "bytes32" + }, + { + "name": "gracePeriodSeconds", + "type": "uint256" + } + ], + "name": "isSubscriptionActive", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokenAmount", + "type": "uint256" + }, + { + "name": "periodSeconds", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "getSubscriptionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "subscriptionHash", + "type": "bytes32" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "getSubscriptionSigner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokenAmount", + "type": "uint256" + }, + { + "name": "periodSeconds", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "isSubscriptionReady", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokenAmount", + "type": "uint256" + }, + { + "name": "periodSeconds", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "cancelSubscription", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "from", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "tokenAddress", + "type": "address" + }, + { + "name": "tokenAmount", + "type": "uint256" + }, + { + "name": "periodSeconds", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "signature", + "type": "bytes" + } + ], + "name": "executeSubscription", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "endContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"requiredGasPrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSubscriptionSigner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAmount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredToAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredPeriodSeconds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cancelSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"extraNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"author\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"gracePeriodSeconds\",\"type\":\"uint256\"}],\"name\":\"isSubscriptionActive\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"endContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getSubscriptionHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"executeSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isSubscriptionReady\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextValidTimestamp\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_toAddress\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenAmount\",\"type\":\"uint256\"},{\"name\":\"_periodSeconds\",\"type\":\"uint256\"},{\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"name\":\"_version\",\"type\":\"uint8\"},{\"name\":\"_relayer\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"ExecuteSubscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"CancelSubscription\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":\"Subscription\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":{\"keccak256\":\"0xd23b843d2a5cbd6e762c03fc55c62e331f306f37458e14cf791f4d10fc8f4c4f\",\"urls\":[\"bzzr://33f93fb60362d588a089d221a20097a97112f7060364f97151667be7e2007bc7\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0x0cbeb7f69b70ff62eb5536caebbc8701b6490ae7ee2e252d77891cf6eba11326\",\"urls\":[\"bzzr://58a443499466ee0706d22af81b43ab6779b519255fbc66276546386ec00a30d7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\",\"urls\":[\"bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3dceb7e4aa237a56111c13f77d7efadeceda7271d62bfac94ac79afab7c1f411\",\"urls\":[\"bzzr://2f34152a5bec385352002c31bc89f5e9935f628f1923ccea45c2281e0084a4db\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x59e7df16169a498cb8837963b2f5461d88e63bd1eb6c7d58b814d76b84ccbe61\",\"urls\":[\"bzzr://e572c9c4e02e37349702451bf3b5dcbbc86a19da5a51695b5b3e1bfe1e7825dc\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405160e080612345833981018060405260e081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004819055508360058190555082600681905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505061219a806101ab6000396000f3fe608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", + "deployedBytecode": "0x608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", + "sourceMap": "1091:13213:1:-;;;3145:489;8:9:-1;5:2;;;30:1;27;20:12;5:2;3145:489:1;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3145:489:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:10;3378:17;;:28;;;;;;;;;;;;;;;;;;3437:13;3416:20;;:34;;;;;;;;;;;;;;;;;;3480:12;3460:19;:32;;;;3524:14;3502:21;:36;;;;3565:9;3548:16;:26;;;;3591:10;3584:6;;:17;;;;;;;;;;;;;;;;;;3619:8;3611:7;;:16;;;;;;;;;;;;;;;;;;3145:489;;;;;;;1091:13213;;;;;;", + "deployedSourceMap": "1091:13213:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14286:9;;;1631:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:31:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6029:318:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6029:318:1;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6029:318:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6029:318:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6029:318:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6029:318:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1470:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:32:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1589:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:36:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1508:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1508:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7985:1423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7985:1423:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7985:1423:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7985:1423:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7985:1423:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1288:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1288:22:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2088:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2088:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2088:45:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1212:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:29:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3874:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3874:390:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3874:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14057:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14057:114:1;;;:::i;:::-;;4420:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4420:1548:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4420:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9566:3091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9566:3091:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9566:3091:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9566:3091:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9566:3091:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6470:1261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6470:1261:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6470:1261:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6470:1261:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6470:1261:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1854:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1854:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1854:53:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1631:31;;;;:::o;6029:318::-;6250:7;6280:60;6330:9;6280:41;:16;:39;:41::i;:::-;:49;;:60;;;;:::i;:::-;6273:67;;6029:318;;;;:::o;1549:34::-;;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1589:36::-;;;;:::o;1508:35::-;;;;;;;;;;;;;:::o;7985:1423::-;8588:12;8616:24;8643:110;8676:4;8682:2;8686:12;8700:11;8713:13;8728:8;8738:5;8643:19;:110::i;:::-;8616:137;;8763:14;8780:50;8802:16;8820:9;8780:21;:50::i;:::-;8763:67;;8897:4;8887:14;;:6;:14;;;8879:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:10;9012:18;;:4;:18;;;9004:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9251:2;9206:18;:36;9225:16;9206:36;;;;;;;;;;;:48;;;;9308:2;9270:109;;9302:4;9270:109;;;9312:12;9326:11;9339:13;9354:8;9364:5;9270:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:4;9390:11;;;;7985:1423;;;;;;;;;;:::o;1288:22::-;;;;;;;;;;;;;:::o;2088:45::-;;;;;;;;;;;;;;;;;:::o;1212:29::-;;;;;;;;;;;;;:::o;3874:390::-;4027:4;4096:2;4050:18;:36;4069:16;4050:36;;;;;;;;;;;;:49;4047:88;;;4119:5;4112:12;;;;4047:88;4187:60;4228:18;4187;:36;4206:16;4187:36;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4152:15;:95;;4144:113;;3874:390;;;;;:::o;14057:114::-;14129:6;;;;;;;;;;;14117:18;;:10;:18;;;14109:27;;;;;;;;14157:6;;;;;;;;;;;14144:20;;;4420:1548;4956:7;5122:1;5093:31;;:17;;;;;;;;;;;:31;;;:58;;;;5134:17;;;;;;;;;;;5128:23;;:2;:23;;;5093:58;5084:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:1;5201:34;;:20;;;;;;;;;;;:34;;;:74;;;;5255:20;;;;;;;;;;;5239:36;;:12;:36;;;5201:74;5192:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:1;5329:19;;:24;:62;;;;5372:19;;5357:11;:34;5329:62;5320:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:1;5444:21;;:26;:68;;;;5491:21;;5474:13;:38;5444:68;5435:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5567:16;;:21;:53;;;;5604:16;;5592:8;:28;5567:53;5558:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:4;5726:10;;5759:1;5754:7;;5787:4;5810;5832:2;5852:12;5882:11;5911:13;5942:8;5692:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5692:268:1;;;5669:292;;;;;;5662:299;;4420:1548;;;;;;;;;:::o;9566:3091::-;10171:12;10221:7;;;;;;;;;;;10207:21;;:10;:21;;;10199:30;;;;;;;;10239:24;10266:110;10299:4;10305:2;10309:12;10323:11;10336:13;10351:8;10361:5;10266:19;:110::i;:::-;10239:137;;10453:99;10473:4;10479:2;10483:12;10497:11;10510:13;10525:8;10535:5;10542:9;10453:19;:99::i;:::-;10444:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10752:34;10772:13;10752:15;:19;;:34;;;;:::i;:::-;10713:18;:36;10732:16;10713:36;;;;;;;;;;;:73;;;;10913:10;:16;10924:4;10913:16;;;;;;;;;;;;;;;;10905:5;:24;10902:75;;;10961:5;10942:10;:16;10953:4;10942:16;;;;;;;;;;;;;;;:24;;;;10902:75;11062:23;11094:12;11088:29;;;11118:2;11088:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11088:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11088:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11088:33:1;;;;;;;;;;;;;;;;11062:59;;11137:12;11131:32;;;11164:4;11169:2;11172:11;11131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11131:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11131:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11131:53:1;;;;;;;;;;;;;;;;;11252:12;11246:29;;;11276:2;11246:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11246:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11246:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11246:33:1;;;;;;;;;;;;;;;;11230:11;11214:15;:27;11213:66;11194:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11371:14;:12;:14::i;:::-;11352:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:2;11481:110;;11514:4;11481:110;;;11524:12;11538:11;11551:13;11566:8;11576:5;11481:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:1;11811:8;:12;11807:822;;;12410:12;12404:32;;;12437:4;12443:10;12455:8;12404:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12404:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12404:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12404:60:1;;;;;;;;;;;;;;;;;12503:14;:12;:14::i;:::-;12478:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:822;12646:4;12639:11;;;;9566:3091;;;;;;;;;;:::o;6470:1261::-;7088:4;7108:24;7135:110;7168:4;7174:2;7178:12;7192:11;7205:13;7220:8;7230:5;7135:19;:110::i;:::-;7108:137;;7255:14;7272:50;7294:16;7312:9;7272:21;:50::i;:::-;7255:67;;7332:17;7358:12;7352:29;;;7382:4;7396;7352:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7352:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7352:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7352:50:1;;;;;;;;;;;;;;;;7332:70;;7412:15;7436:12;7430:29;;;7460:4;7430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7430:35:1;;;;;;;;;;;;;;;;7412:53;;7507:4;7497:14;;:6;:14;;;:40;;;;;7535:2;7527:10;;:4;:10;;;;7497:40;:111;;;;;7572:18;:36;7591:16;7572:36;;;;;;;;;;;;7553:15;:55;;7497:111;:165;;;;;7637:25;7653:8;7637:11;:15;;:25;;;;:::i;:::-;7624:9;:38;;7497:165;:217;;;;;7689:25;7705:8;7689:11;:15;;:25;;;;:::i;:::-;7678:7;:36;;7497:217;7476:248;;;;;;6470:1261;;;;;;;;;;:::o;1854:53::-;;;;;;;;;;;;;;;;;:::o;2650:265:2:-;2719:7;2902:4;2849:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2849:58:2;;;2839:69;;;;;;2832:76;;2650:265;;;:::o;609:1891::-;687:7;768:2;748:9;:16;:22;;744:72;;;802:1;786:19;;;;744:72;882:9;901;920:7;1166:4;1155:9;1151:20;1145:27;1140:32;;1211:4;1200:9;1196:20;1190:27;1185:32;;1264:4;1253:9;1249:20;1243:27;1240:1;1235:36;1230:41;;2182:66;2177:1;2169:10;;;:79;2165:127;;;2279:1;2264:17;;;;;;;2165:127;2311:2;2306:1;:7;;;;:18;;;;;2322:2;2317:1;:7;;;;2306:18;2302:66;;;2355:1;2340:17;;;;;;;2302:66;2469:24;2479:4;2485:1;2488;2491;2469:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2469:24:2;;;;;;;;2462:31;;;;;609:1891;;;;;:::o;1439:145:3:-;1497:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1543:15;;;;;;;;1576:1;1569:8;;;1439:145;;;;:::o;13072:855:1:-;13147:4;13167:19;13189:1;13167:23;;13368:14;13450:3;13445:57;;;;13573:4;13568:220;;;;13361:516;;13445:57;13487:1;13472:16;;13445:57;;13568:220;13673:4;13668:3;13663;13648:30;13770:3;13764:10;13749:25;;13361:516;;13919:1;13904:11;:16;;13897:23;;;13072:855;:::o", + "source": "pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \"paid\" and \"active\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \"requiredToAddress Failure\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \"requiredTokenAddress Failure\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \"requiredTokenAmount Failure\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \"requiredPeriodSeconds Failure\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \"requiredGasPrice Failure\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \"Invalid Signature for subscription cancellation\");\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \"Subscription is not ready or conditions of transction are not met\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \"ERC20 Balance did not change correctly\"\n );\n\n require(\n checkSuccess(),\n \"Subscription::executeSubscription TransferFrom failed\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \"Subscription::executeSubscription Failed to pay gas as from account\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n", + "sourcePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "ast": { + "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "exportedSymbols": { + "Subscription": [ + 675 + ] + }, + "id": 676, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 757, + "src": "900:64:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 885, + "src": "965:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 1268, + "src": "1025:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 675, + "linearizedBaseContracts": [ + 675 + ], + "name": "Subscription", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 64, + "libraryName": { + "contractScope": null, + "id": 62, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 756, + "src": "1125:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$756", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "1119:24:1", + "typeName": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "id": 67, + "libraryName": { + "contractScope": null, + "id": 65, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 884, + "src": "1154:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$884", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1148:27:1", + "typeName": { + "id": 66, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 69, + "name": "author", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1212:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1212:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 71, + "name": "relayer", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1288:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1288:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 73, + "name": "requiredToAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1470:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 75, + "name": "requiredTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1508:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 77, + "name": "requiredTokenAmount", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1549:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 76, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 79, + "name": "requiredPeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1589:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 81, + "name": "requiredGasPrice", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1631:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 85, + "name": "nextValidTimestamp", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1854:53:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 84, + "keyType": { + "id": 82, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1873:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 89, + "name": "extraNonce", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "2088:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 88, + "keyType": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2096:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2088:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 87, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 105, + "name": "ExecuteSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 91, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2175:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 93, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2222:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2338:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2408:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2408:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2480:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2557:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2165:471:1" + }, + "src": "2140:497:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 121, + "name": "CancelSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2677:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2724:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2724:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2768:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2840:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2840:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2910:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2982:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2982:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "3059:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3059:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2667:471:1" + }, + "src": "2643:496:1" + }, + { + "body": { + "id": 167, + "nodeType": "Block", + "src": "3368:266:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 138, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3378:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 139, + "name": "_toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3396:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3378:28:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "3378:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 142, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "3416:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 143, + "name": "_tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3437:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3416:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 145, + "nodeType": "ExpressionStatement", + "src": "3416:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 146, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "3460:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 147, + "name": "_tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3460:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "3460:32:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 150, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "3502:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 151, + "name": "_periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3524:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3502:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "3502:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 154, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "3548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3548:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "3548:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 158, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3584:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "3591:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3591:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3584:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 162, + "nodeType": "ExpressionStatement", + "src": "3584:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 163, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 164, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "3619:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3611:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 166, + "nodeType": "ExpressionStatement", + "src": "3611:16:1" + } + ] + }, + "documentation": null, + "id": 168, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 123, + "name": "_toAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3166:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3166:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 125, + "name": "_tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3194:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3194:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "name": "_tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3225:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 129, + "name": "_periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3255:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 131, + "name": "_gasPrice", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3287:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 133, + "name": "_version", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3314:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 132, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3314:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 135, + "name": "_relayer", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3338:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3338:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3156:204:1" + }, + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [], + "src": "3368:0:1" + }, + "scope": 675, + "src": "3145:489:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 200, + "nodeType": "Block", + "src": "4037:227:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 177, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4050:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 179, + "indexExpression": { + "argumentTypes": null, + "id": 178, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4069:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4050:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4096:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4088:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4050:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 188, + "nodeType": "IfStatement", + "src": "4047:88:1", + "trueBody": { + "id": 187, + "nodeType": "Block", + "src": "4100:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 176, + "id": 186, + "nodeType": "Return", + "src": "4112:12:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "4152:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4152:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 195, + "name": "gracePeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "4228:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 191, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4187:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "id": 192, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4206:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4187:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "4187:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:60:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4152:95:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 198, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4151:106:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 176, + "id": 199, + "nodeType": "Return", + "src": "4144:113:1" + } + ] + }, + "documentation": null, + "id": 201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionActive", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 170, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3913:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 169, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 172, + "name": "gracePeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3947:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3947:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3903:76:1" + }, + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "4027:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 174, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4026:6:1" + }, + "scope": 675, + "src": "3874:390:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 300, + "nodeType": "Block", + "src": "4969:999:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5093:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5122:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5114:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5093:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 226, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5128:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 227, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5134:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5128:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5093:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f41646472657373204661696c757265", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" + }, + "value": "requiredToAddress Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" + } + ], + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5084:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5084:98:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 232, + "nodeType": "ExpressionStatement", + "src": "5084:98:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5201:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5201:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5255:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5239:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5201:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5277:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" + }, + "value": "requiredTokenAddress Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5192:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5192:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 245, + "nodeType": "ExpressionStatement", + "src": "5192:118:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 247, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5329:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5352:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5329:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 250, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5357:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 251, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5372:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5357:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5329:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5393:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" + }, + "value": "requiredTokenAmount Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" + } + ], + "id": 246, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5320:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5320:105:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 256, + "nodeType": "ExpressionStatement", + "src": "5320:105:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 258, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5444:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5469:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5444:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 261, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5474:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 262, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5474:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5444:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5514:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + }, + "value": "requiredPeriodSeconds Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + } + ], + "id": 257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5435:113:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 267, + "nodeType": "ExpressionStatement", + "src": "5435:113:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5567:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5587:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 272, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5592:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 273, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5604:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5592:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5567:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657175697265644761735072696365204661696c757265", + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5622:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" + }, + "value": "requiredGasPrice Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" + } + ], + "id": 268, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5558:93:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 278, + "nodeType": "ExpressionStatement", + "src": "5558:93:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5731:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5754:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 289, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "5787:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + ], + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5779:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5779:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 291, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 292, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5832:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 293, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5852:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 294, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 295, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5911:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 296, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5942:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 280, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "5692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5692:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:268:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 279, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "5669:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5669:292:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 219, + "id": 299, + "nodeType": "Return", + "src": "5662:299:1" + } + ] + }, + "documentation": null, + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 203, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4458:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4458:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 205, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4497:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4497:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 207, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4533:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4605:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4675:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 213, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4747:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4831:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4448:462:1" + }, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 218, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4956:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4955:9:1" + }, + "scope": 675, + "src": "4420:1548:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 317, + "nodeType": "Block", + "src": "6263:84:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "6330:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 310, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "6280:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 755, + "src": "6280:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "6280:49:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:60:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 309, + "id": 316, + "nodeType": "Return", + "src": "6273:67:1" + } + ] + }, + "documentation": null, + "id": 318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 303, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6069:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 305, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6126:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6126:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6059:145:1" + }, + "returnParameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 308, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6250:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6249:9:1" + }, + "scope": 675, + "src": "6029:318:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 409, + "nodeType": "Block", + "src": "7098:633:1", + "statements": [ + { + "assignments": [ + 340 + ], + "declarations": [ + { + "constant": false, + "id": 340, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7108:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7108:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 350, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 342, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 343, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7174:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 344, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7178:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 345, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7192:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 346, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "7205:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 347, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7220:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 348, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "7230:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 341, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "7135:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7135:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7108:137:1" + }, + { + "assignments": [ + 352 + ], + "declarations": [ + { + "constant": false, + "id": 352, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7255:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7255:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 357, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 354, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7294:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 355, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7312:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 353, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7272:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7272:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7255:67:1" + }, + { + "assignments": [ + 359 + ], + "declarations": [ + { + "constant": false, + "id": 359, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7332:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 369, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 364, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7382:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 366, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "7396:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + ], + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7388:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 361, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7358:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 360, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7352:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "7352:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7332:70:1" + }, + { + "assignments": [ + 371 + ], + "declarations": [ + { + "constant": false, + "id": 371, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7412:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7412:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 378, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 376, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7460:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 373, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7436:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 372, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7430:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "7430:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7412:53:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 379, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "7497:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 380, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7507:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7497:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 382, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7527:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7535:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7527:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "7553:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7553:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "7572:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7591:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7572:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7553:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:111:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 393, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "7624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 396, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7653:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 394, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7637:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7637:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7624:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:165:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 400, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "7678:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 403, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7705:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 401, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7689:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7689:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7689:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7678:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:217:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7483:241:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 338, + "id": 408, + "nodeType": "Return", + "src": "7476:248:1" + } + ] + }, + "documentation": null, + "id": 410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionReady", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 320, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 322, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6547:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6547:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6583:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6583:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6655:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6725:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6797:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6797:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6882:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6882:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6964:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 333, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6964:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6498:544:1" + }, + "returnParameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "7088:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 336, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7088:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7087:6:1" + }, + "scope": 675, + "src": "6470:1261:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 486, + "nodeType": "Block", + "src": "8606:802:1", + "statements": [ + { + "assignments": [ + 432 + ], + "declarations": [ + { + "constant": false, + "id": 432, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8616:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 442, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "8682:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 436, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "8686:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 437, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "8700:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 438, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "8713:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 439, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8728:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 440, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8738:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 433, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "8643:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8643:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8616:137:1" + }, + { + "assignments": [ + 444 + ], + "declarations": [ + { + "constant": false, + "id": 444, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8763:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8763:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 449, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 446, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "8802:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 447, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "8820:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 445, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8780:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8780:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8763:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 451, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8887:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 452, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8887:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8903:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + }, + "value": "Invalid Signature for subscription cancellation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + } + ], + "id": 450, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "8879:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8879:74:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 456, + "nodeType": "ExpressionStatement", + "src": "8879:74:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9012:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "9020:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9020:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9012:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9032:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" + }, + "value": "msg.sender is not the subscriber" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" + } + ], + "id": 457, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "9004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9004:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 464, + "nodeType": "ExpressionStatement", + "src": "9004:63:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "9206:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "9225:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9206:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9251:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9252:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9243:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9243:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9206:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 473, + "nodeType": "ExpressionStatement", + "src": "9206:48:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 475, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9302:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 476, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "9308:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 477, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "9312:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 478, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "9326:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 479, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "9339:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 480, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "9354:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 481, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "9364:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 474, + "name": "CancelSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "9270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9270:109:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 483, + "nodeType": "EmitStatement", + "src": "9265:114:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9397:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 430, + "id": 485, + "nodeType": "Return", + "src": "9390:11:1" + } + ] + }, + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cancelSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8022:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8022:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8061:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8061:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8097:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8097:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 418, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8169:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8239:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 422, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8311:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8395:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 426, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8477:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8477:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8012:543:1" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 429, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8588:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 428, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8588:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8587:14:1" + }, + "scope": 675, + "src": "7985:1423:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 636, + "nodeType": "Block", + "src": "10189:2468:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "10221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10207:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "10199:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10199:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "10199:30:1" + }, + { + "assignments": [ + 516 + ], + "declarations": [ + { + "constant": false, + "id": 516, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10239:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 526, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 518, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10299:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 519, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10305:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 520, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10309:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 521, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10323:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 522, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10336:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 523, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10361:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 517, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "10266:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10266:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10239:137:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 529, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10479:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 531, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10483:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 532, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10497:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 533, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10510:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 534, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10525:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 535, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10535:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 536, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "10542:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 528, + "name": "isSubscriptionReady", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "10453:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10453:99:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10554:67:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + }, + "value": "Subscription is not ready or conditions of transction are not met" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + } + ], + "id": 527, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "10444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10444:179:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "10444:179:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "10713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10713:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 547, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10772:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "10752:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10752:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "10752:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10752:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10713:73:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "10713:73:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10905:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10913:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10924:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10905:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 563, + "nodeType": "IfStatement", + "src": "10902:75:1", + "trueBody": { + "id": 562, + "nodeType": "Block", + "src": "10930:47:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 556, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10942:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 558, + "indexExpression": { + "argumentTypes": null, + "id": 557, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10953:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10942:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10961:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10942:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 561, + "nodeType": "ExpressionStatement", + "src": "10942:24:1" + } + ] + } + }, + { + "assignments": [ + 565 + ], + "declarations": [ + { + "constant": false, + "id": 565, + "name": "startingBalance", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "11062:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 572, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 570, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11118:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 567, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11094:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 566, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11088:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11088:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11062:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11164:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 578, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11169:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 579, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11172:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 574, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11137:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 573, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "11131:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "11131:53:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 583, + "name": "startingBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "11214:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 584, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11230:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11214:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 586, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11213:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 591, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11276:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 588, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11252:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 587, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11246:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11246:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11213:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11291:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + }, + "value": "ERC20 Balance did not change correctly" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "11194:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11194:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 596, + "nodeType": "ExpressionStatement", + "src": "11194:147:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 598, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "11371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11371:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11397:55:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + }, + "value": "Subscription::executeSubscription TransferFrom failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + } + ], + "id": 597, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "11352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11352:112:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 602, + "nodeType": "ExpressionStatement", + "src": "11352:112:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 604, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11514:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 605, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11520:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 606, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11524:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 607, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11538:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 608, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "11551:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 609, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11566:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 610, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "11576:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 603, + "name": "ExecuteSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "11481:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11481:110:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 612, + "nodeType": "EmitStatement", + "src": "11476:115:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 613, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11811:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 633, + "nodeType": "IfStatement", + "src": "11807:822:1", + "trueBody": { + "id": 632, + "nodeType": "Block", + "src": "11825:804:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 620, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "12437:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "12443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "12455:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 617, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "12410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 616, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "12404:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "12404:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 625, + "nodeType": "ExpressionStatement", + "src": "12404:60:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 627, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "12503:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12503:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12535:69:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + }, + "value": "Subscription::executeSubscription Failed to pay gas as from account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + } + ], + "id": 626, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "12478:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12478:140:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 631, + "nodeType": "ExpressionStatement", + "src": "12478:140:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12646:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 507, + "id": 635, + "nodeType": "Return", + "src": "12639:11:1" + } + ] + }, + "documentation": null, + "id": 637, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "executeSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9604:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9604:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9643:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9643:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9679:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9679:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 495, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9751:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 497, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9821:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 499, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9893:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 501, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9977:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 503, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10060:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10060:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9594:544:1" + }, + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10171:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 505, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10170:14:1" + }, + "scope": 675, + "src": "9566:3091:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 651, + "nodeType": "Block", + "src": "13157:770:1", + "statements": [ + { + "assignments": [ + 643 + ], + "declarations": [ + { + "constant": false, + "id": 643, + "name": "returnValue", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "13167:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 645, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13189:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13167:23:1" + }, + { + "externalReferences": [ + { + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13472:11:1", + "valueSize": 1 + } + }, + { + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13749:11:1", + "valueSize": 1 + } + } + ], + "id": 646, + "nodeType": "InlineAssembly", + "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", + "src": "13268:635:1" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 647, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "13904:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13919:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13904:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 641, + "id": 650, + "nodeType": "Return", + "src": "13897:23:1" + } + ] + }, + "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", + "id": 652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkSuccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [], + "src": "13093:7:1" + }, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "13147:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13147:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13146:6:1" + }, + "scope": 675, + "src": "13072:855:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 666, + "nodeType": "Block", + "src": "14101:70:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "14117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 658, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14129:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14117:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 655, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "14109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14109:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "14109:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 663, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14157:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 662, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "14144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14144:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 665, + "nodeType": "ExpressionStatement", + "src": "14144:20:1" + } + ] + }, + "documentation": null, + "id": 667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [], + "src": "14077:2:1" + }, + "returnParameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [], + "src": "14101:0:1" + }, + "scope": 675, + "src": "14057:114:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 673, + "nodeType": "Block", + "src": "14277:25:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 670, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1356, + 1357 + ], + "referencedDeclaration": 1356, + "src": "14286:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14286:9:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 672, + "nodeType": "ExpressionStatement", + "src": "14286:9:1" + } + ] + }, + "documentation": null, + "id": 674, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "14257:2:1" + }, + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "14277:0:1" + }, + "scope": 675, + "src": "14248:54:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 676, + "src": "1091:13213:1" + } + ], + "src": "0:14305:1" + }, + "legacyAST": { + "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "exportedSymbols": { + "Subscription": [ + 675 + ] + }, + "id": 676, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".2" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 757, + "src": "900:64:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 885, + "src": "965:59:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 1268, + "src": "1025:63:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 675, + "linearizedBaseContracts": [ + 675 + ], + "name": "Subscription", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 64, + "libraryName": { + "contractScope": null, + "id": 62, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 756, + "src": "1125:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$756", + "typeString": "library ECDSA" + } + }, + "nodeType": "UsingForDirective", + "src": "1119:24:1", + "typeName": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "id": 67, + "libraryName": { + "contractScope": null, + "id": 65, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 884, + "src": "1154:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$884", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "1148:27:1", + "typeName": { + "id": 66, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 69, + "name": "author", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1212:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1212:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 71, + "name": "relayer", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1288:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1288:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 73, + "name": "requiredToAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1470:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 75, + "name": "requiredTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1508:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 77, + "name": "requiredTokenAmount", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1549:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 76, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 79, + "name": "requiredPeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1589:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 81, + "name": "requiredGasPrice", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1631:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 85, + "name": "nextValidTimestamp", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1854:53:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 84, + "keyType": { + "id": 82, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1873:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 89, + "name": "extraNonce", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "2088:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 88, + "keyType": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2096:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2088:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 87, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 105, + "name": "ExecuteSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 91, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2175:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 93, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2222:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2338:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2408:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2408:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2480:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2557:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2165:471:1" + }, + "src": "2140:497:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 121, + "name": "CancelSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2677:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2724:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2724:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2768:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2840:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2840:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2910:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2982:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2982:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "3059:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3059:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2667:471:1" + }, + "src": "2643:496:1" + }, + { + "body": { + "id": 167, + "nodeType": "Block", + "src": "3368:266:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 138, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3378:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 139, + "name": "_toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3396:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3378:28:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 141, + "nodeType": "ExpressionStatement", + "src": "3378:28:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 142, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "3416:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 143, + "name": "_tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3437:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3416:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 145, + "nodeType": "ExpressionStatement", + "src": "3416:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 146, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "3460:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 147, + "name": "_tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3460:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 149, + "nodeType": "ExpressionStatement", + "src": "3460:32:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 150, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "3502:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 151, + "name": "_periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3524:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3502:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 153, + "nodeType": "ExpressionStatement", + "src": "3502:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 154, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "3548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3548:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "3548:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 158, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3584:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "3591:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3591:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3584:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 162, + "nodeType": "ExpressionStatement", + "src": "3584:17:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 163, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 164, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "3619:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3611:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 166, + "nodeType": "ExpressionStatement", + "src": "3611:16:1" + } + ] + }, + "documentation": null, + "id": 168, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 123, + "name": "_toAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3166:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3166:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 125, + "name": "_tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3194:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3194:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "name": "_tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3225:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 129, + "name": "_periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3255:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 131, + "name": "_gasPrice", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3287:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 133, + "name": "_version", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3314:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 132, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3314:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 135, + "name": "_relayer", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3338:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3338:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3156:204:1" + }, + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [], + "src": "3368:0:1" + }, + "scope": 675, + "src": "3145:489:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 200, + "nodeType": "Block", + "src": "4037:227:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 177, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4050:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 179, + "indexExpression": { + "argumentTypes": null, + "id": 178, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4069:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4050:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4096:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4088:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4050:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 188, + "nodeType": "IfStatement", + "src": "4047:88:1", + "trueBody": { + "id": 187, + "nodeType": "Block", + "src": "4100:35:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 176, + "id": 186, + "nodeType": "Return", + "src": "4112:12:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "4152:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4152:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 195, + "name": "gracePeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "4228:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 191, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4187:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 193, + "indexExpression": { + "argumentTypes": null, + "id": 192, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4206:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4187:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "4187:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:60:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4152:95:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 198, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4151:106:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 176, + "id": 199, + "nodeType": "Return", + "src": "4144:113:1" + } + ] + }, + "documentation": null, + "id": 201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionActive", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 170, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3913:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 169, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 172, + "name": "gracePeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3947:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3947:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3903:76:1" + }, + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "4027:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 174, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4026:6:1" + }, + "scope": 675, + "src": "3874:390:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 300, + "nodeType": "Block", + "src": "4969:999:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5093:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5122:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5114:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5093:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 226, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5128:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 227, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5134:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5128:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5093:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f41646472657373204661696c757265", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" + }, + "value": "requiredToAddress Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" + } + ], + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5084:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5084:98:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 232, + "nodeType": "ExpressionStatement", + "src": "5084:98:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5201:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5201:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5255:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5239:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5201:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5277:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" + }, + "value": "requiredTokenAddress Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" + } + ], + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5192:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5192:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 245, + "nodeType": "ExpressionStatement", + "src": "5192:118:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 247, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5329:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5352:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5329:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 250, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5357:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 251, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5372:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5357:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5329:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5393:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" + }, + "value": "requiredTokenAmount Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" + } + ], + "id": 246, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5320:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5320:105:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 256, + "nodeType": "ExpressionStatement", + "src": "5320:105:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 258, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5444:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5469:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5444:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 261, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5474:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 262, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5474:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5444:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5514:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + }, + "value": "requiredPeriodSeconds Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + } + ], + "id": 257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5435:113:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 267, + "nodeType": "ExpressionStatement", + "src": "5435:113:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5567:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5587:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 272, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5592:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 273, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5604:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5592:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5567:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "72657175697265644761735072696365204661696c757265", + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5622:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" + }, + "value": "requiredGasPrice Failure" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" + } + ], + "id": 268, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "5558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5558:93:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 278, + "nodeType": "ExpressionStatement", + "src": "5558:93:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5731:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5754:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 289, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "5787:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + ], + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5779:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5779:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 291, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 292, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5832:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 293, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5852:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 294, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 295, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5911:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 296, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5942:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 280, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "5692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5692:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:268:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 279, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "5669:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5669:292:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 219, + "id": 299, + "nodeType": "Return", + "src": "5662:299:1" + } + ] + }, + "documentation": null, + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 203, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4458:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4458:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 205, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4497:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4497:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 207, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4533:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 209, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4605:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4675:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 213, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4747:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4831:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4448:462:1" + }, + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 218, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4956:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4955:9:1" + }, + "scope": 675, + "src": "4420:1548:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 317, + "nodeType": "Block", + "src": "6263:84:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "6330:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 310, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "6280:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 755, + "src": "6280:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" + } + }, + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "6280:49:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:60:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 309, + "id": 316, + "nodeType": "Return", + "src": "6273:67:1" + } + ] + }, + "documentation": null, + "id": 318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 303, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6069:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 305, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6126:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6126:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6059:145:1" + }, + "returnParameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 308, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6250:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6249:9:1" + }, + "scope": 675, + "src": "6029:318:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 409, + "nodeType": "Block", + "src": "7098:633:1", + "statements": [ + { + "assignments": [ + 340 + ], + "declarations": [ + { + "constant": false, + "id": 340, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7108:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7108:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 350, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 342, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 343, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7174:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 344, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7178:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 345, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7192:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 346, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "7205:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 347, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7220:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 348, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "7230:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 341, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "7135:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7135:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7108:137:1" + }, + { + "assignments": [ + 352 + ], + "declarations": [ + { + "constant": false, + "id": 352, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7255:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7255:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 357, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 354, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7294:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 355, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7312:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 353, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7272:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7272:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7255:67:1" + }, + { + "assignments": [ + 359 + ], + "declarations": [ + { + "constant": false, + "id": 359, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7332:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 369, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 364, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7382:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 366, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "7396:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" + } + ], + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7388:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 361, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7358:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 360, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7352:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "7352:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7332:70:1" + }, + { + "assignments": [ + 371 + ], + "declarations": [ + { + "constant": false, + "id": 371, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7412:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7412:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 378, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 376, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7460:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 373, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7436:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 372, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7430:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "7430:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7412:53:1" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 379, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "7497:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 380, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7507:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7497:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 382, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7527:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7535:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7527:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "7553:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7553:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "7572:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7591:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7572:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7553:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:111:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 393, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "7624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 396, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7653:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 394, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7637:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7637:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7624:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:165:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 400, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "7678:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 403, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7705:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 401, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7689:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7689:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7689:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7678:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7497:217:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7483:241:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 338, + "id": 408, + "nodeType": "Return", + "src": "7476:248:1" + } + ] + }, + "documentation": null, + "id": 410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionReady", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 320, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 322, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6547:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6547:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 324, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6583:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6583:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 326, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6655:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 328, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6725:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 330, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6797:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6797:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 332, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6882:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6882:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 334, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6964:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 333, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6964:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6498:544:1" + }, + "returnParameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "7088:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 336, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7088:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7087:6:1" + }, + "scope": 675, + "src": "6470:1261:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 486, + "nodeType": "Block", + "src": "8606:802:1", + "statements": [ + { + "assignments": [ + 432 + ], + "declarations": [ + { + "constant": false, + "id": 432, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8616:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 442, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 434, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "8682:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 436, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "8686:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 437, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "8700:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 438, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "8713:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 439, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8728:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 440, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8738:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 433, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "8643:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8643:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8616:137:1" + }, + { + "assignments": [ + 444 + ], + "declarations": [ + { + "constant": false, + "id": 444, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8763:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8763:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 449, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 446, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "8802:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 447, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "8820:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 445, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8780:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8780:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8763:67:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 451, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8887:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 452, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8887:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8903:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + }, + "value": "Invalid Signature for subscription cancellation" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + } + ], + "id": 450, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "8879:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8879:74:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 456, + "nodeType": "ExpressionStatement", + "src": "8879:74:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9012:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "9020:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9020:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9012:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9032:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" + }, + "value": "msg.sender is not the subscriber" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" + } + ], + "id": 457, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "9004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9004:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 464, + "nodeType": "ExpressionStatement", + "src": "9004:63:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "9206:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "9225:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9206:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9251:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9252:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9243:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": "uint256" + }, + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9243:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9206:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 473, + "nodeType": "ExpressionStatement", + "src": "9206:48:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 475, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9302:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 476, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "9308:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 477, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "9312:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 478, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "9326:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 479, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "9339:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 480, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "9354:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 481, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "9364:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 474, + "name": "CancelSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "9270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9270:109:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 483, + "nodeType": "EmitStatement", + "src": "9265:114:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9397:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 430, + "id": 485, + "nodeType": "Return", + "src": "9390:11:1" + } + ] + }, + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cancelSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 412, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8022:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8022:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 414, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8061:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8061:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 416, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8097:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8097:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 418, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8169:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 420, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8239:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 422, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8311:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8395:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 426, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8477:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8477:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8012:543:1" + }, + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 429, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8588:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 428, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8588:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8587:14:1" + }, + "scope": 675, + "src": "7985:1423:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 636, + "nodeType": "Block", + "src": "10189:2468:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "10221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10207:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "10199:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10199:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "10199:30:1" + }, + { + "assignments": [ + 516 + ], + "declarations": [ + { + "constant": false, + "id": 516, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10239:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 526, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 518, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10299:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 519, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10305:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 520, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10309:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 521, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10323:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 522, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10336:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 523, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10361:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 517, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "10266:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10266:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10239:137:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 529, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 530, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10479:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 531, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10483:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 532, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10497:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 533, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10510:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 534, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10525:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 535, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10535:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 536, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "10542:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 528, + "name": "isSubscriptionReady", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "10453:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" + } + }, + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10453:99:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10554:67:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + }, + "value": "Subscription is not ready or conditions of transction are not met" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + } + ], + "id": 527, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "10444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10444:179:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 540, + "nodeType": "ExpressionStatement", + "src": "10444:179:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "10713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10713:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 547, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10772:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "10752:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10752:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "10752:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10752:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10713:73:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 550, + "nodeType": "ExpressionStatement", + "src": "10713:73:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10905:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10913:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10924:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10905:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 563, + "nodeType": "IfStatement", + "src": "10902:75:1", + "trueBody": { + "id": 562, + "nodeType": "Block", + "src": "10930:47:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 556, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10942:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 558, + "indexExpression": { + "argumentTypes": null, + "id": 557, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10953:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10942:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10961:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10942:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 561, + "nodeType": "ExpressionStatement", + "src": "10942:24:1" + } + ] + } + }, + { + "assignments": [ + 565 + ], + "declarations": [ + { + "constant": false, + "id": 565, + "name": "startingBalance", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "11062:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 572, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 570, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11118:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 567, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11094:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 566, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11088:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11088:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11062:59:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11164:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 578, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11169:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 579, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11172:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 574, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11137:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 573, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "11131:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 581, + "nodeType": "ExpressionStatement", + "src": "11131:53:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 583, + "name": "startingBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "11214:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 584, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11230:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11214:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 586, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11213:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 591, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11276:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 588, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11252:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 587, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11246:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11246:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11213:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11291:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + }, + "value": "ERC20 Balance did not change correctly" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "11194:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11194:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 596, + "nodeType": "ExpressionStatement", + "src": "11194:147:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 598, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "11371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11371:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11397:55:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + }, + "value": "Subscription::executeSubscription TransferFrom failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + } + ], + "id": 597, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "11352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11352:112:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 602, + "nodeType": "ExpressionStatement", + "src": "11352:112:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 604, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11514:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 605, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11520:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 606, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11524:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 607, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11538:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 608, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "11551:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 609, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11566:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 610, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "11576:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 603, + "name": "ExecuteSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "11481:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11481:110:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 612, + "nodeType": "EmitStatement", + "src": "11476:115:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 613, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11811:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 633, + "nodeType": "IfStatement", + "src": "11807:822:1", + "trueBody": { + "id": 632, + "nodeType": "Block", + "src": "11825:804:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 620, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "12437:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "12443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "12455:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 617, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "12410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 616, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "12404:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" + } + }, + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "12404:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 625, + "nodeType": "ExpressionStatement", + "src": "12404:60:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 627, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "12503:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12503:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12535:69:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + }, + "value": "Subscription::executeSubscription Failed to pay gas as from account" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + } + ], + "id": 626, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1355, + "src": "12478:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12478:140:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 631, + "nodeType": "ExpressionStatement", + "src": "12478:140:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12646:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 507, + "id": 635, + "nodeType": "Return", + "src": "12639:11:1" + } + ] + }, + "documentation": null, + "id": 637, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "executeSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9604:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9604:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9643:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9643:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 493, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9679:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9679:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 495, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9751:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 497, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9821:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 499, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9893:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 501, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9977:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 503, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10060:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10060:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9594:544:1" + }, + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 506, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10171:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 505, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10170:14:1" + }, + "scope": 675, + "src": "9566:3091:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 651, + "nodeType": "Block", + "src": "13157:770:1", + "statements": [ + { + "assignments": [ + 643 + ], + "declarations": [ + { + "constant": false, + "id": 643, + "name": "returnValue", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "13167:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 645, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13189:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "13167:23:1" + }, + { + "externalReferences": [ + { + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13472:11:1", + "valueSize": 1 + } + }, + { + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13749:11:1", + "valueSize": 1 + } + } + ], + "id": 646, + "nodeType": "InlineAssembly", + "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", + "src": "13268:635:1" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 647, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "13904:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13919:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13904:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 641, + "id": 650, + "nodeType": "Return", + "src": "13897:23:1" + } + ] + }, + "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", + "id": 652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkSuccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [], + "src": "13093:7:1" + }, + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "13147:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13147:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13146:6:1" + }, + "scope": 675, + "src": "13072:855:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 666, + "nodeType": "Block", + "src": "14101:70:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "14117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 658, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14129:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "14117:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 655, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "14109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14109:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 661, + "nodeType": "ExpressionStatement", + "src": "14109:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 663, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14157:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 662, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "14144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" + } + }, + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14144:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 665, + "nodeType": "ExpressionStatement", + "src": "14144:20:1" + } + ] + }, + "documentation": null, + "id": 667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [], + "src": "14077:2:1" + }, + "returnParameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [], + "src": "14101:0:1" + }, + "scope": 675, + "src": "14057:114:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 673, + "nodeType": "Block", + "src": "14277:25:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 670, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1356, + 1357 + ], + "referencedDeclaration": 1356, + "src": "14286:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14286:9:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 672, + "nodeType": "ExpressionStatement", + "src": "14286:9:1" + } + ] + }, + "documentation": null, + "id": 674, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "14257:2:1" + }, + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "14277:0:1" + }, + "scope": 675, + "src": "14248:54:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 676, + "src": "1091:13213:1" + } + ], + "src": "0:14305:1" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.0.6", + "updatedAt": "2019-05-12T15:53:10.470Z", + "devdoc": { + "methods": {} + }, + "userdoc": { + "methods": {} + } +} diff --git a/app/grants/convert_abi.py b/app/grants/convert_abi.py new file mode 100644 index 00000000000..04aa2a08e63 --- /dev/null +++ b/app/grants/convert_abi.py @@ -0,0 +1,9 @@ +import json +from pprint import pprint + +with open('abi_v1.json') as json_file: + abi = json.load(json_file) + print(abi['abi']) + +with open('abi_v1.py', 'w') as python_file: + pprint(abi['abi'], stream=python_file) diff --git a/app/grants/models.py b/app/grants/models.py index 1c9a1f5b2fc..c65bbdcc69a 100644 --- a/app/grants/models.py +++ b/app/grants/models.py @@ -220,8 +220,13 @@ def updateActiveSubscriptions(self): @property def abi(self): """Return grants abi.""" - from grants.abi import abi_v0 - return abi_v0 + if self.contract_version == 0: + from grants.abi import abi_v0 + return abi_v0 + elif self.contract_version == 1: + from grants.abi import abi_v1 + return abi_v1 + @property def url(self): From cb58f83d66641559fb85d1274625e80ce18ee52f Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Mon, 20 May 2019 01:11:43 +0900 Subject: [PATCH 07/25] update contract version in template --- app/grants/templates/grants/new.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 9e361294011..5516684f590 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -130,7 +130,7 @@
{% trans "Gas Settings" %}
- + From 36027754b96f92487e74740cb3d9b99dd5600cd4 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Mon, 20 May 2019 02:07:47 +0900 Subject: [PATCH 08/25] fix naming --- app/assets/v2/js/grants/compiledSubscriptionContract1.js | 2 +- app/assets/v2/js/grants/fund.js | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract1.js b/app/assets/v2/js/grants/compiledSubscriptionContract1.js index f5793c04854..963614a77ec 100644 --- a/app/assets/v2/js/grants/compiledSubscriptionContract1.js +++ b/app/assets/v2/js/grants/compiledSubscriptionContract1.js @@ -1,4 +1,4 @@ -let compiledSubscription0 = { +let compiledSubscription1 = { 'contractName': 'Subscription', 'abi': [ { diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 4c3c69d8ed7..74ff0c7653e 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -117,9 +117,9 @@ $(document).ready(function() { realPeriodSeconds = periodSeconds; } } - if (contractVersion == 0) { + if (data.contract_version == 0) { let deployedSubscription = new web3.eth.Contract(compiledSubscription0.abi, data.contract_address); - } else if (contractVersion == 1) { + } else if (data.contract_version == 1) { let deployedSubscription = new web3.eth.Contract(compiledSubscription1.abi, data.contract_address); } let selected_token; @@ -157,10 +157,10 @@ $(document).ready(function() { let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); let realApproval; - if (contractVersion == 0) { + if (data.contract_version == 0) { // version 0 of the contract has no fee realApproval = Number((grant_amount * data.num_periods * Math.pow(10, decimals)) + 1); - } else if (contractVersion == 1) { + } else if (data.contract_version == 1) { realApproval = Number(((grant_amount + gitcoin_grant_amount) * data.num_periods * Math.pow(10, decimals)) + 1); } let approvalSTR = realApproval.toLocaleString('fullwide', { useGrouping: false }); From 60c37dccab785ffeaa6799a4631cfa676d895d82 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Mon, 20 May 2019 02:31:43 +0900 Subject: [PATCH 09/25] use gas widget for grant funding gas cost --- app/assets/v2/js/grants/fund.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 74ff0c7653e..5f14f82bb19 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -176,8 +176,7 @@ $(document).ready(function() { web3.utils.toTwosComplement(approvalSTR) ).send({ from: accounts[0], - // TODO: this is not the correct variable, this is for the metatx - //gasPrice: realGasPrice + gasPrice: web3.toHex($('#gasPrice').val() * Math.pow(10, 9)), }).on('error', function(error) { console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); From 0e2af0148071e66059ea24de4e8899b2be9165cf Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 21 May 2019 03:05:07 +0900 Subject: [PATCH 10/25] fix args and set donation address --- app/assets/v2/js/grants/fund.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 5f14f82bb19..8cfd369eaca 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -4,7 +4,7 @@ let tokenAddress; let redirectURL; $(document).ready(function() { - let gitcoinDonationAddress = "0x0000000000000000000000000000000000000000"; + let gitcoinDonationAddress = "0x00De4B13153673BCAE2616b67bf822500d325Fc3"; $('.js-select2').each(function() { $(this).select2(); @@ -192,7 +192,7 @@ $(document).ready(function() { document.suppress_loading_leave_code = true; window.location = redirectURL; }); // waitforData - }); // approve + }); // approve on confirmation }); // getAccounts }); // decimals } // submitHandler @@ -223,7 +223,7 @@ $(document).ready(function() { }); // waitforWeb3 }); // document ready -const subscribeToGrant = (transactionHash, grant_version) => { +const subscribeToGrant = (transactionHash) => { $('#sub_new_approve_tx_id').val(transactionHash); const linkURL = etherscan_tx_url(transactionHash); let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); From 7f18e7fd893cbb4f967294617d3e79e1ef9998c3 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 21 May 2019 16:53:27 +0900 Subject: [PATCH 11/25] fix style, bugs --- app/assets/v2/js/grants/compiledSplitter.js | 98 ++++++++-------- app/assets/v2/js/grants/fund.js | 122 +++++++++++--------- app/assets/v2/js/grants/shared.js | 5 +- 3 files changed, 122 insertions(+), 103 deletions(-) diff --git a/app/assets/v2/js/grants/compiledSplitter.js b/app/assets/v2/js/grants/compiledSplitter.js index 66bea8c3e08..5697a52cd7c 100644 --- a/app/assets/v2/js/grants/compiledSplitter.js +++ b/app/assets/v2/js/grants/compiledSplitter.js @@ -1,68 +1,68 @@ let compiledSplitter0 = { - "className": "Splitter", - "args": [], - "code": "608060405234801561001057600080fd5b5061022e806100206000396000f3fe6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a7230582040d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d0029", - "runtimeBytecode": "6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a7230582040d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d0029", - "realRuntimeBytecode": "6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a72305820", - "linkReferences": {}, - "swarmHash": "40d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d", - "gasEstimates": { - "creation": { - "codeDepositCost": "111600", - "executionCost": "159", - "totalCost": "111759" + 'className': 'Splitter', + 'args': [], + 'code': '608060405234801561001057600080fd5b5061022e806100206000396000f3fe6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a7230582040d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d0029', + 'runtimeBytecode': '6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a7230582040d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d0029', + 'realRuntimeBytecode': '6080604052600436106100405763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663ab832b438114610045575b600080fd5b34801561005157600080fd5b506100a3600480360360a081101561006857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013591606081013591608090910135166100a5565b005b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152604482018690529151918316916323b872dd916064808201926020929091908290030181600087803b15801561012457600080fd5b505af1158015610138573d6000803e3d6000fd5b505050506040513d602081101561014e57600080fd5b5050604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018590529151918316916323b872dd916064808201926020929091908290030181600087803b1580156101cf57600080fd5b505af11580156101e3573d6000803e3d6000fd5b505050506040513d60208110156101f957600080fd5b5050505050505056fea165627a7a72305820', + 'linkReferences': {}, + 'swarmHash': '40d38dee362e14bbc2f24c3ecf83e3e17941ae353766bfcad45738f1fb9d4b2d', + 'gasEstimates': { + 'creation': { + 'codeDepositCost': '111600', + 'executionCost': '159', + 'totalCost': '111759' }, - "external": { - "splitTransfer(address,address,uint256,uint256,address)": "infinite" + 'external': { + 'splitTransfer(address,address,uint256,uint256,address)': 'infinite' } }, - "functionHashes": { - "splitTransfer(address,address,uint256,uint256,address)": "ab832b43" + 'functionHashes': { + 'splitTransfer(address,address,uint256,uint256,address)': 'ab832b43' }, - "abiDefinition": [ + 'abiDefinition': [ { - "constant": false, - "inputs": [ + 'constant': false, + 'inputs': [ { - "name": "toFirst", - "type": "address" + 'name': 'toFirst', + 'type': 'address' }, { - "name": "toSecond", - "type": "address" + 'name': 'toSecond', + 'type': 'address' }, { - "name": "valueFirst", - "type": "uint256" + 'name': 'valueFirst', + 'type': 'uint256' }, { - "name": "valueSecond", - "type": "uint256" + 'name': 'valueSecond', + 'type': 'uint256' }, { - "name": "tokenAddress", - "type": "address" + 'name': 'tokenAddress', + 'type': 'address' } ], - "name": "splitTransfer", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function", - "signature": "0xab832b43" + 'name': 'splitTransfer', + 'outputs': [], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function', + 'signature': '0xab832b43' } ], - "filename": "/Users/danlipert/gitcoin/splitter/.embark/contracts/Splitter.sol", - "originalFilename": "contracts/Splitter.sol", - "path": "/Users/danlipert/gitcoin/splitter/contracts/Splitter.sol", - "gas": 198208, - "gasPrice": "20000000000", - "type": "file", - "deploy": true, - "_gasLimit": 6000000, - "error": false, - "deploymentAccount": "0x4867228a029A44bf1814cA26A459bba578c03c9A", - "realArgs": [], - "deployedAddress": "0xCD32F7CF408e98B2e15C686A3a6f10B27D2563EF", - "transactionHash": "0x4ed10b2c826d66a0e2ccb4a5caeb39e2a9693333bc064b9ca4aa8b4dbbbbeeb9" -} + 'filename': '/Users/danlipert/gitcoin/splitter/.embark/contracts/Splitter.sol', + 'originalFilename': 'contracts/Splitter.sol', + 'path': '/Users/danlipert/gitcoin/splitter/contracts/Splitter.sol', + 'gas': 198208, + 'gasPrice': '20000000000', + 'type': 'file', + 'deploy': true, + '_gasLimit': 6000000, + 'error': false, + 'deploymentAccount': '0x4867228a029A44bf1814cA26A459bba578c03c9A', + 'realArgs': [], + 'deployedAddress': '0xCD32F7CF408e98B2e15C686A3a6f10B27D2563EF', + 'transactionHash': '0x4ed10b2c826d66a0e2ccb4a5caeb39e2a9693333bc064b9ca4aa8b4dbbbbeeb9' +}; diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 8cfd369eaca..0b735e17fea 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -2,9 +2,11 @@ let deployedToken; let tokenAddress; let redirectURL; +let realPeriodSeconds = 0; +let selected_token; $(document).ready(function() { - let gitcoinDonationAddress = "0x00De4B13153673BCAE2616b67bf822500d325Fc3"; + let gitcoinDonationAddress = '0x00De4B13153673BCAE2616b67bf822500d325Fc3'; $('.js-select2').each(function() { $(this).select2(); @@ -97,7 +99,6 @@ $(document).ready(function() { data[this.name] = this.value; }); - let realPeriodSeconds = 0; if (data.frequency) { @@ -117,12 +118,14 @@ $(document).ready(function() { realPeriodSeconds = periodSeconds; } } + + let deployedSubscription; + if (data.contract_version == 0) { - let deployedSubscription = new web3.eth.Contract(compiledSubscription0.abi, data.contract_address); + deployedSubscription = new web3.eth.Contract(compiledSubscription0.abi, data.contract_address); } else if (data.contract_version == 1) { - let deployedSubscription = new web3.eth.Contract(compiledSubscription1.abi, data.contract_address); + deployedSubscription = new web3.eth.Contract(compiledSubscription1.abi, data.contract_address); } - let selected_token; if (data.token_address != '0x0000000000000000000000000000000000000000') { selected_token = data.token_address; @@ -132,10 +135,12 @@ $(document).ready(function() { deployedToken = new web3.eth.Contract(compiledToken.abi, data.denomination); $('#token_symbol').val($('#js-token option:selected').text()); } + if (!selected_token) { _alert('Please select a token', 'error'); return; } + tokenAddress = data.token_address; deployedToken.methods.decimals().call(function(err, decimals) { @@ -155,14 +160,15 @@ $(document).ready(function() { let realTokenAmount = Number(data.amount_per_period * Math.pow(10, decimals)); let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); - let realApproval; + if (data.contract_version == 0) { // version 0 of the contract has no fee realApproval = Number((grant_amount * data.num_periods * Math.pow(10, decimals)) + 1); } else if (data.contract_version == 1) { realApproval = Number(((grant_amount + gitcoin_grant_amount) * data.num_periods * Math.pow(10, decimals)) + 1); } + let approvalSTR = realApproval.toLocaleString('fullwide', { useGrouping: false }); web3.eth.getAccounts(function(err, accounts) { @@ -176,16 +182,16 @@ $(document).ready(function() { web3.utils.toTwosComplement(approvalSTR) ).send({ from: accounts[0], - gasPrice: web3.toHex($('#gasPrice').val() * Math.pow(10, 9)), + gasPrice: web3.toHex($('#gasPrice').val() * Math.pow(10, 9)) }).on('error', function(error) { console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); }).on('transactionHash', function(transactionHash) { if (data.num_periods == 1) { - //call splitter after approval + // call splitter after approval splitPayment(accounts[0], data.admin_address, gitcoinDonationAddress, Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false}), Number(gitcoin_grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})); } else { - subscribeToGrant(transactionHash); + subscribeToGrant(transactionHash, amountSTR); } }).on('confirmation', function(confirmationNumber, receipt) { waitforData(() => { @@ -223,7 +229,7 @@ $(document).ready(function() { }); // waitforWeb3 }); // document ready -const subscribeToGrant = (transactionHash) => { +const subscribeToGrant = (transactionHash, amountSTR) => { $('#sub_new_approve_tx_id').val(transactionHash); const linkURL = etherscan_tx_url(transactionHash); let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); @@ -257,60 +263,68 @@ const subscribeToGrant = (transactionHash) => { document.issueURL = linkURL; $('#transaction_url').attr('href', linkURL); enableWaitState('#grants_form'); + // TODO: fix the tweet modal $('#tweetModal').modal('show'); - // Should add approval transactions to transaction history - deployedSubscription.methods.extraNonce(accounts[0]).call(function(err, nonce) { - - nonce = parseInt(nonce) + 1; - - const parts = [ - web3.utils.toChecksumAddress(accounts[0]), // subscriber address - web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address - web3.utils.toChecksumAddress(selected_token), // token denomination / address - web3.utils.toTwosComplement(amountSTR), // data.amount_per_period - web3.utils.toTwosComplement(realPeriodSeconds), // data.period_seconds - web3.utils.toTwosComplement(realGasPrice), // data.gas_price - web3.utils.toTwosComplement(nonce) // nonce - ]; - - processSubscriptionHash(parts); + web3.eth.getAccounts(function(err, accounts) { + + deployedSubscription.methods.extraNonce(accounts[0]).call(function(err, nonce) { + + nonce = parseInt(nonce) + 1; + + const parts = [ + web3.utils.toChecksumAddress(accounts[0]), // subscriber address + web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address + web3.utils.toChecksumAddress(selected_token), // token denomination / address + web3.utils.toTwosComplement(amountSTR), // data.amount_per_period + web3.utils.toTwosComplement(realPeriodSeconds), + web3.utils.toTwosComplement(data.gas_price), + web3.utils.toTwosComplement(nonce) + ]; + + processSubscriptionHash(parts); + }); }); -} +}; const signSubscriptionHash = (subscriptionHash) => { - web3.eth.personal.sign('' + subscriptionHash, accounts[0], function(err, signature) { - if (signature) { - $('#signature').val(signature); - - let data = { - 'subscription_hash': subscriptionHash, - 'signature': signature, - 'csrfmiddlewaretoken': $("#js-fundGrant input[name='csrfmiddlewaretoken']").val(), - 'sub_new_approve_tx_id': $('#sub_new_approve_tx_id').val() - }; - - saveSubscription(data); - }; + web3.eth.getAccounts(function(err, accounts) { + + web3.eth.personal.sign('' + subscriptionHash, accounts[0], function(err, signature) { + if (signature) { + $('#signature').val(signature); + + let data = { + 'subscription_hash': subscriptionHash, + 'signature': signature, + 'csrfmiddlewaretoken': $("#js-fundGrant input[name='csrfmiddlewaretoken']").val(), + 'sub_new_approve_tx_id': $('#sub_new_approve_tx_id').val() + }; + + saveSubscription(data, false); + } + }); }); -} +}; const processSubscriptionHash = (parts) => { deployedSubscription.methods.getSubscriptionHash(...parts).call(function(err, subscriptionHash) { $('#subscription_hash').val(subscriptionHash); signSubscriptionHash(subscriptionHash); }); -} +}; -const saveSubscription = (data) => { +const saveSubscription = (data, isOneTimePayment) => { console.log(data); - data['real_period_seconds'] = 0; + if (isOneTimePayment) { + data['real_period_seconds'] = 0; + } $.ajax({ type: 'post', url: '', data: data, success: json => { console.log(json); - console.log('successfully saved subscriptionHash and signature'); + console.log('successfully saved subscription'); if (json.url != undefined) { redirectURL = json.url; $('#wait').val('false'); @@ -322,18 +336,18 @@ const saveSubscription = (data) => { url = window.location; } }); -} +}; const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { var data = {}; var form = $('#js-fundGrant'); + $.each($(form).serializeArray(), function() { data[this.name] = this.value; }); - saveSubscription(data); - let deployedSplitter = new web3.eth.Contract(compiledSplitter.abiDefinition, "0xe2fd6dfe7f371e884e782d46f043552421b3a9d9"); - - console.log('deployed splitter is ' + deployedSplitter); + saveSubscription(data, true); + // TODO: deploy production splitter and change address on network + let deployedSplitter = new web3.eth.Contract(compiledSplitter.abiDefinition, '0xe2fd6dfe7f371e884e782d46f043552421b3a9d9'); deployedSplitter.methods.splitTransfer(toFirst, toSecond, valueFirst, valueSecond, tokenAddress).send({ from: account @@ -348,11 +362,13 @@ const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { }); const linkURL = etherscan_tx_url(transactionHash); + document.issueURL = linkURL; $('#transaction_url').attr('href', linkURL); enableWaitState('#grants_form'); - //$('#tweetModal').modal('show'); + // TODO: Fix tweet modal + // $('#tweetModal').modal('show'); }).on('confirmation', function(confirmationNumber, receipt) { data = { 'subscription_hash': 'onetime', @@ -361,9 +377,9 @@ const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { 'sub_new_approve_tx_id': $('#sub_new_approve_tx_id').val() }; console.log('confirmed!'); - saveSubscription(data); + saveSubscription(data, true); }); -} +}; const waitforData = (callback) => { if ($('#wait').val() === 'false') { diff --git a/app/assets/v2/js/grants/shared.js b/app/assets/v2/js/grants/shared.js index 60405ba46e7..5956f776599 100644 --- a/app/assets/v2/js/grants/shared.js +++ b/app/assets/v2/js/grants/shared.js @@ -2,6 +2,7 @@ var compiledSubscription; var compiledSplitter; var splitterAddress; +var contractVersion; // Waiting State screen var enableWaitState = container => { @@ -144,11 +145,13 @@ const show_error_banner = (result, web3_not_found) => { $(document).ready(function() { - let contractVersion = $('#contract_version').val(); + contractVersion = $('#contract_version').val(); if (contractVersion) { if (contractVersion == 0) { compiledSubscription = compiledSubscription0; + } else if (contractVersion == 1) { + compiledSubscription = compiledSubscription1; } } From 77221518d5f16d1d4b4f159330a32f753bf01b8f Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 21 May 2019 21:26:09 +0900 Subject: [PATCH 12/25] working recurring with 105% bug --- .../grants/compiledSubscriptionContract1.js | 29200 ++++++++-------- app/assets/v2/js/grants/fund.js | 86 +- app/assets/v2/js/grants/new.js | 5 +- app/assets/v2/js/grants/shared.js | 6 +- app/grants/management/commands/subminer.py | 2 + app/grants/templates/grants/new.html | 1 + app/grants/views.py | 1 + 7 files changed, 14435 insertions(+), 14866 deletions(-) diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract1.js b/app/assets/v2/js/grants/compiledSubscriptionContract1.js index 963614a77ec..14497f2ff38 100644 --- a/app/assets/v2/js/grants/compiledSubscriptionContract1.js +++ b/app/assets/v2/js/grants/compiledSubscriptionContract1.js @@ -1,18548 +1,18068 @@ let compiledSubscription1 = { - 'contractName': 'Subscription', - 'abi': [ + "contractName": "Subscription", + "abi": [ { - 'constant': true, - 'inputs': [], - 'name': 'requiredGasPrice', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "requiredGasPrice", + "outputs": [ { - 'name': '', - 'type': 'uint256' + "name": "", + "type": "uint256" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'requiredTokenAmount', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "requiredTokenAmount", + "outputs": [ { - 'name': '', - 'type': 'uint256' + "name": "", + "type": "uint256" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'requiredToAddress', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "requiredToAddress", + "outputs": [ { - 'name': '', - 'type': 'address' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'requiredPeriodSeconds', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "requiredPeriodSeconds", + "outputs": [ { - 'name': '', - 'type': 'uint256' + "name": "", + "type": "uint256" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'requiredTokenAddress', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "requiredTokenAddress", + "outputs": [ { - 'name': '', - 'type': 'address' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'owner', - 'outputs': [ + "constant": true, + "inputs": [], + "name": "relayer", + "outputs": [ { - 'name': '', - 'type': 'address' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [], - 'name': 'contractVersion', - 'outputs': [ + "constant": true, + "inputs": [ { - 'name': '', - 'type': 'uint8' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' - }, - { - 'constant': true, - 'inputs': [ + "name": "extraNonce", + "outputs": [ { - 'name': '', - 'type': 'address' + "name": "", + "type": "uint256" } ], - 'name': 'extraNonce', - 'outputs': [ + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "author", + "outputs": [ { - 'name': '', - 'type': 'uint256' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [ + "constant": true, + "inputs": [ { - 'name': '', - 'type': 'bytes32' + "name": "", + "type": "bytes32" } ], - 'name': 'nextValidTimestamp', - 'outputs': [ + "name": "nextValidTimestamp", + "outputs": [ { - 'name': '', - 'type': 'uint256' + "name": "", + "type": "uint256" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'inputs': [ + "inputs": [ { - 'name': '_toAddress', - 'type': 'address' + "name": "_toAddress", + "type": "address" }, { - 'name': '_tokenAddress', - 'type': 'address' + "name": "_tokenAddress", + "type": "address" }, { - 'name': '_tokenAmount', - 'type': 'uint256' + "name": "_tokenAmount", + "type": "uint256" }, { - 'name': '_periodSeconds', - 'type': 'uint256' + "name": "_periodSeconds", + "type": "uint256" }, { - 'name': '_gasPrice', - 'type': 'uint256' + "name": "_gasPrice", + "type": "uint256" }, { - 'name': '_version', - 'type': 'uint8' + "name": "_version", + "type": "uint8" + }, + { + "name": "_relayer", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'nonpayable', - 'type': 'constructor' + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" }, { - 'payable': true, - 'stateMutability': 'payable', - 'type': 'fallback' + "payable": true, + "stateMutability": "payable", + "type": "fallback" }, { - 'anonymous': false, - 'inputs': [ + "anonymous": false, + "inputs": [ { - 'indexed': true, - 'name': 'from', - 'type': 'address' + "indexed": true, + "name": "from", + "type": "address" }, { - 'indexed': true, - 'name': 'to', - 'type': 'address' + "indexed": true, + "name": "to", + "type": "address" }, { - 'indexed': false, - 'name': 'tokenAddress', - 'type': 'address' + "indexed": false, + "name": "tokenAddress", + "type": "address" }, { - 'indexed': false, - 'name': 'tokenAmount', - 'type': 'uint256' + "indexed": false, + "name": "tokenAmount", + "type": "uint256" }, { - 'indexed': false, - 'name': 'periodSeconds', - 'type': 'uint256' + "indexed": false, + "name": "periodSeconds", + "type": "uint256" }, { - 'indexed': false, - 'name': 'gasPrice', - 'type': 'uint256' + "indexed": false, + "name": "gasPrice", + "type": "uint256" }, { - 'indexed': false, - 'name': 'nonce', - 'type': 'uint256' + "indexed": false, + "name": "nonce", + "type": "uint256" } ], - 'name': 'ExecuteSubscription', - 'type': 'event' + "name": "ExecuteSubscription", + "type": "event" }, { - 'anonymous': false, - 'inputs': [ + "anonymous": false, + "inputs": [ { - 'indexed': true, - 'name': 'from', - 'type': 'address' + "indexed": true, + "name": "from", + "type": "address" }, { - 'indexed': true, - 'name': 'to', - 'type': 'address' + "indexed": true, + "name": "to", + "type": "address" }, { - 'indexed': false, - 'name': 'tokenAddress', - 'type': 'address' + "indexed": false, + "name": "tokenAddress", + "type": "address" }, { - 'indexed': false, - 'name': 'tokenAmount', - 'type': 'uint256' + "indexed": false, + "name": "tokenAmount", + "type": "uint256" }, { - 'indexed': false, - 'name': 'periodSeconds', - 'type': 'uint256' + "indexed": false, + "name": "periodSeconds", + "type": "uint256" }, { - 'indexed': false, - 'name': 'gasPrice', - 'type': 'uint256' + "indexed": false, + "name": "gasPrice", + "type": "uint256" }, { - 'indexed': false, - 'name': 'nonce', - 'type': 'uint256' + "indexed": false, + "name": "nonce", + "type": "uint256" } ], - 'name': 'CancelSubscription', - 'type': 'event' + "name": "CancelSubscription", + "type": "event" }, { - 'anonymous': false, - 'inputs': [ + "constant": true, + "inputs": [ { - 'indexed': false, - 'name': 'oldOwner', - 'type': 'address' + "name": "subscriptionHash", + "type": "bytes32" }, { - 'indexed': false, - 'name': 'newOwner', - 'type': 'address' + "name": "gracePeriodSeconds", + "type": "uint256" } ], - 'name': 'ownershipChanged', - 'type': 'event' - }, - { - 'constant': false, - 'inputs': [ + "name": "isSubscriptionActive", + "outputs": [ { - 'name': '_newOwner', - 'type': 'address' + "name": "", + "type": "bool" } ], - 'name': 'changeOwnership', - 'outputs': [], - 'payable': false, - 'stateMutability': 'nonpayable', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [ + "constant": true, + "inputs": [ { - 'name': 'subscriptionHash', - 'type': 'bytes32' + "name": "from", + "type": "address" }, { - 'name': 'gracePeriodSeconds', - 'type': 'uint256' - } - ], - 'name': 'isSubscriptionActive', - 'outputs': [ - { - 'name': '', - 'type': 'bool' - } - ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' - }, - { - 'constant': true, - 'inputs': [ - { - 'name': 'from', - 'type': 'address' + "name": "to", + "type": "address" }, { - 'name': 'to', - 'type': 'address' + "name": "tokenAddress", + "type": "address" }, { - 'name': 'tokenAddress', - 'type': 'address' + "name": "tokenAmount", + "type": "uint256" }, { - 'name': 'tokenAmount', - 'type': 'uint256' + "name": "periodSeconds", + "type": "uint256" }, { - 'name': 'periodSeconds', - 'type': 'uint256' + "name": "gasPrice", + "type": "uint256" }, { - 'name': 'gasPrice', - 'type': 'uint256' - }, - { - 'name': 'nonce', - 'type': 'uint256' + "name": "nonce", + "type": "uint256" } ], - 'name': 'getSubscriptionHash', - 'outputs': [ + "name": "getSubscriptionHash", + "outputs": [ { - 'name': '', - 'type': 'bytes32' + "name": "", + "type": "bytes32" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': true, - 'inputs': [ + "constant": true, + "inputs": [ { - 'name': 'subscriptionHash', - 'type': 'bytes32' + "name": "subscriptionHash", + "type": "bytes32" }, { - 'name': 'signature', - 'type': 'bytes' + "name": "signature", + "type": "bytes" } ], - 'name': 'getSubscriptionSigner', - 'outputs': [ + "name": "getSubscriptionSigner", + "outputs": [ { - 'name': '', - 'type': 'address' + "name": "", + "type": "address" } ], - 'payable': false, - 'stateMutability': 'pure', - 'type': 'function' + "payable": false, + "stateMutability": "pure", + "type": "function" }, { - 'constant': true, - 'inputs': [ + "constant": true, + "inputs": [ { - 'name': 'from', - 'type': 'address' + "name": "from", + "type": "address" }, { - 'name': 'to', - 'type': 'address' + "name": "to", + "type": "address" }, { - 'name': 'tokenAddress', - 'type': 'address' + "name": "tokenAddress", + "type": "address" }, { - 'name': 'tokenAmount', - 'type': 'uint256' + "name": "tokenAmount", + "type": "uint256" }, { - 'name': 'periodSeconds', - 'type': 'uint256' + "name": "periodSeconds", + "type": "uint256" }, { - 'name': 'gasPrice', - 'type': 'uint256' + "name": "gasPrice", + "type": "uint256" }, { - 'name': 'nonce', - 'type': 'uint256' + "name": "nonce", + "type": "uint256" }, { - 'name': 'signature', - 'type': 'bytes' + "name": "signature", + "type": "bytes" } ], - 'name': 'isSubscriptionReady', - 'outputs': [ + "name": "isSubscriptionReady", + "outputs": [ { - 'name': '', - 'type': 'bool' + "name": "", + "type": "bool" } ], - 'payable': false, - 'stateMutability': 'view', - 'type': 'function' + "payable": false, + "stateMutability": "view", + "type": "function" }, { - 'constant': false, - 'inputs': [ + "constant": false, + "inputs": [ { - 'name': 'from', - 'type': 'address' + "name": "from", + "type": "address" }, { - 'name': 'to', - 'type': 'address' + "name": "to", + "type": "address" }, { - 'name': 'tokenAddress', - 'type': 'address' + "name": "tokenAddress", + "type": "address" }, { - 'name': 'tokenAmount', - 'type': 'uint256' + "name": "tokenAmount", + "type": "uint256" }, { - 'name': 'periodSeconds', - 'type': 'uint256' + "name": "periodSeconds", + "type": "uint256" }, { - 'name': 'gasPrice', - 'type': 'uint256' + "name": "gasPrice", + "type": "uint256" }, { - 'name': 'nonce', - 'type': 'uint256' + "name": "nonce", + "type": "uint256" }, { - 'name': 'signature', - 'type': 'bytes' + "name": "signature", + "type": "bytes" } ], - 'name': 'cancelSubscription', - 'outputs': [ + "name": "cancelSubscription", + "outputs": [ { - 'name': 'success', - 'type': 'bool' + "name": "success", + "type": "bool" } ], - 'payable': false, - 'stateMutability': 'nonpayable', - 'type': 'function' + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { - 'constant': false, - 'inputs': [ + "constant": false, + "inputs": [ { - 'name': 'from', - 'type': 'address' + "name": "from", + "type": "address" }, { - 'name': 'to', - 'type': 'address' + "name": "to", + "type": "address" }, { - 'name': 'tokenAddress', - 'type': 'address' + "name": "tokenAddress", + "type": "address" }, { - 'name': 'tokenAmount', - 'type': 'uint256' + "name": "tokenAmount", + "type": "uint256" }, { - 'name': 'periodSeconds', - 'type': 'uint256' + "name": "periodSeconds", + "type": "uint256" }, { - 'name': 'gasPrice', - 'type': 'uint256' + "name": "gasPrice", + "type": "uint256" }, { - 'name': 'nonce', - 'type': 'uint256' + "name": "nonce", + "type": "uint256" }, { - 'name': 'signature', - 'type': 'bytes' + "name": "signature", + "type": "bytes" } ], - 'name': 'executeSubscription', - 'outputs': [ + "name": "executeSubscription", + "outputs": [ { - 'name': 'success', - 'type': 'bool' + "name": "success", + "type": "bool" } ], - 'payable': false, - 'stateMutability': 'nonpayable', - 'type': 'function' + "payable": false, + "stateMutability": "nonpayable", + "type": "function" }, { - 'constant': false, - 'inputs': [], - 'name': 'endContract', - 'outputs': [], - 'payable': false, - 'stateMutability': 'nonpayable', - 'type': 'function' + "constant": false, + "inputs": [], + "name": "endContract", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" } ], - 'bytecode': '0x608060405234801561001057600080fd5b5060405160c0806123bf83398101806040528101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505085600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003819055508260048190555081600581905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060146101000a81548160ff021916908360ff1602179055505050505050506122538061016c6000396000f3006080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310d92060146100f657806318f321a31461012157806329d428ca146101d85780632af4c31e14610203578063384c3335146102465780636b40bba11461029d5780636f264b2e146102c857806371d22d4d1461031f5780638da5cb5b146103fa578063a0a8e46014610451578063a3d53d1814610482578063ae702ba4146104d9578063bb6e7de91461052c578063c814786514610543578063d3c576cd1461060a578063d933c06614610713578063ff59bff81461081c575b600080fd5b34801561010257600080fd5b5061010b610861565b6040518082815260200191505060405180910390f35b34801561012d57600080fd5b506101966004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610867565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b506101ed610894565b6040518082815260200191505060405180910390f35b34801561020f57600080fd5b50610244600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061089a565b005b34801561025257600080fd5b5061025b6109f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a957600080fd5b506102b2610a16565b6040518082815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610a1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032b57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610a42565b604051808215151515815260200191505060405180910390f35b34801561040657600080fd5b5061040f610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360381019080803560001916906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b50610541610dde565b005b34801561054f57600080fd5b506105ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e73565b60405180826000191660001916815260200191505060405180910390f35b34801561061657600080fd5b506106f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561071f57600080fd5b50610802600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d18565b604051808215151515815260200191505060405180910390f35b34801561082857600080fd5b5061084b6004803603810190808035600019169060200190929190505050611ffd565b6040518082815260200191505060405180910390f35b60055481565b600061088c8261087a8560001916612015565b600019166120d090919063ffffffff16565b905092915050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108f557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5d92051b4a9b6e7154c5be37e18edd17bfd2e650a3a6dbf8c3eded0ef431ff0e336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610a568c8c8c8c8c8c8c610e73565b9150610a948286868080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610867565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f496e76616c6964205369676e617475726520666f72207375627363726970746981526020017f6f6e2063616e63656c6c6174696f6e000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008460001916600019168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568c8c8c8c8c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36001925050509998505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008560001916600019168152602001908152602001600020541415610da45760009050610dd8565b610dd282600660008660001916600019168152602001908152602001600020546121c890919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f1e5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061103c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060035414806110c2575060035485145b1515611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006004541480611148575060045484145b15156111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060055414806111ce575060055483145b1515611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200199505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611491578051825260208201915060208101905060208303925061146c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050979650505050505050565b60008060006114df8b8b8b8b8b8b8b610e73565b91506114f18b8b8b8b8b8b8b8b611d18565b15156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001807f537562736372697074696f6e206973206e6f74207265616479206f7220636f6e81526020017f646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6581526020017f740000000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6115c487426121c890919063ffffffff16565b60066000846000191660001916815260200190815260200160002081905550600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485111561166f5784600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b81019080805190602001909291905050508882011415156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f45524332302042616c616e636520646964206e6f74206368616e676520636f7281526020017f726563746c79000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6119d66121e9565b1515611a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e205472616e7366657246726f6d206661696c6564000000000000000000000081525060400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611d06578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b505050506040513d6020811015611c2b57600080fd5b810190808051906020019092919050505050611c456121e9565b1515611d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e204661696c656420746f20706179206761732061732066726f6d206163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b60019250505098975050505050505050565b6000806000806000611d2f8d8d8d8d8d8d8d610e73565b9350611d3b8487610867565b92508a73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8e306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d6020811015611e3657600080fd5b810190808051906020019092919050505091508a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b505050506040513d6020811015611f0e57600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f8857508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611faf5750600660008560001916600019168152602001908152602001600020544210155b8015611fcd5750611fc9888b6121c890919063ffffffff16565b8210155b8015611feb5750611fe7888b6121c890919063ffffffff16565b8110155b94505050505098975050505050505050565b60066020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561209c5780518252602082019150602081019050602083039250612077565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600080600080604185511415156120ea57600093506121bf565b6020850151925060408501519150606085015160001a9050601b8160ff16101561211557601b810190505b601b8160ff161415801561212d5750601c8160ff1614155b1561213b57600093506121bf565b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121b2573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b60008082840190508381101515156121df57600080fd5b8091505092915050565b600080600090503d60008114612206576020811461220f5761221b565b6001915061221b565b60206000803e60005191505b506000811415915050905600a165627a7a72305820dea756d1b905a24da555dd5a2a6249a784e2f144afedd118fe9d317d274d07260029', - 'deployedBytecode': '0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806310d92060146100f657806318f321a31461012157806329d428ca146101d85780632af4c31e14610203578063384c3335146102465780636b40bba11461029d5780636f264b2e146102c857806371d22d4d1461031f5780638da5cb5b146103fa578063a0a8e46014610451578063a3d53d1814610482578063ae702ba4146104d9578063bb6e7de91461052c578063c814786514610543578063d3c576cd1461060a578063d933c06614610713578063ff59bff81461081c575b600080fd5b34801561010257600080fd5b5061010b610861565b6040518082815260200191505060405180910390f35b34801561012d57600080fd5b506101966004803603810190808035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610867565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e457600080fd5b506101ed610894565b6040518082815260200191505060405180910390f35b34801561020f57600080fd5b50610244600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061089a565b005b34801561025257600080fd5b5061025b6109f0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a957600080fd5b506102b2610a16565b6040518082815260200191505060405180910390f35b3480156102d457600080fd5b506102dd610a1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032b57600080fd5b506103e0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001919091929391929390505050610a42565b604051808215151515815260200191505060405180910390f35b34801561040657600080fd5b5061040f610d06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610d2b565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048e57600080fd5b506104c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3e565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610512600480360381019080803560001916906020019092919080359060200190929190505050610d56565b604051808215151515815260200191505060405180910390f35b34801561053857600080fd5b50610541610dde565b005b34801561054f57600080fd5b506105ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e73565b60405180826000191660001916815260200191505060405180910390f35b34801561061657600080fd5b506106f9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114cb565b604051808215151515815260200191505060405180910390f35b34801561071f57600080fd5b50610802600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d18565b604051808215151515815260200191505060405180910390f35b34801561082857600080fd5b5061084b6004803603810190808035600019169060200190929190505050611ffd565b6040518082815260200191505060405180910390f35b60055481565b600061088c8261087a8560001916612015565b600019166120d090919063ffffffff16565b905092915050565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108f557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5d92051b4a9b6e7154c5be37e18edd17bfd2e650a3a6dbf8c3eded0ef431ff0e336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806000610a568c8c8c8c8c8c8c610e73565b9150610a948286868080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610867565b90508b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001807f496e76616c6964205369676e617475726520666f72207375627363726970746981526020017f6f6e2063616e63656c6c6174696f6e000000000000000000000000000000000081525060400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008460001916600019168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568c8c8c8c8c604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36001925050509998505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1681565b60076020528060005260406000206000915090505481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008560001916600019168152602001908152602001600020541415610da45760009050610dd8565b610dd282600660008660001916600019168152602001908152602001600020546121c890919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f1e5750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061103c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060035414806110c2575060035485145b1515611136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006004541480611148575060045484145b15156111bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060055414806111ce575060055483145b1515611242576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183815260200182815260200199505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611491578051825260208201915060208101905060208303925061146c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050979650505050505050565b60008060006114df8b8b8b8b8b8b8b610e73565b91506114f18b8b8b8b8b8b8b8b611d18565b15156115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001807f537562736372697074696f6e206973206e6f74207265616479206f7220636f6e81526020017f646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6581526020017f740000000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b6115c487426121c890919063ffffffff16565b60066000846000191660001916815260200190815260200160002081905550600760008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205485111561166f5784600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561170a57600080fd5b505af115801561171e573d6000803e3d6000fd5b505050506040513d602081101561173457600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561181e57600080fd5b505af1158015611832573d6000803e3d6000fd5b505050506040513d602081101561184857600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156118f557600080fd5b505af1158015611909573d6000803e3d6000fd5b505050506040513d602081101561191f57600080fd5b81019080805190602001909291905050508882011415156119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f45524332302042616c616e636520646964206e6f74206368616e676520636f7281526020017f726563746c79000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6119d66121e9565b1515611a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e205472616e7366657246726f6d206661696c6564000000000000000000000081525060400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611d06578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0157600080fd5b505af1158015611c15573d6000803e3d6000fd5b505050506040513d6020811015611c2b57600080fd5b810190808051906020019092919050505050611c456121e9565b1515611d05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001807f537562736372697074696f6e3a3a65786563757465537562736372697074696f81526020017f6e204661696c656420746f20706179206761732061732066726f6d206163636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060600191505060405180910390fd5b5b60019250505098975050505050505050565b6000806000806000611d2f8d8d8d8d8d8d8d610e73565b9350611d3b8487610867565b92508a73ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8e306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015611e0c57600080fd5b505af1158015611e20573d6000803e3d6000fd5b505050506040513d6020811015611e3657600080fd5b810190808051906020019092919050505091508a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b505050506040513d6020811015611f0e57600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611f8857508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611faf5750600660008560001916600019168152602001908152602001600020544210155b8015611fcd5750611fc9888b6121c890919063ffffffff16565b8210155b8015611feb5750611fe7888b6121c890919063ffffffff16565b8110155b94505050505098975050505050505050565b60066020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561209c5780518252602082019150602081019050602083039250612077565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b600080600080604185511415156120ea57600093506121bf565b6020850151925060408501519150606085015160001a9050601b8160ff16101561211557601b810190505b601b8160ff161415801561212d5750601c8160ff1614155b1561213b57600093506121bf565b600186828585604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156121b2573d6000803e3d6000fd5b5050506020604051035193505b50505092915050565b60008082840190508381101515156121df57600080fd5b8091505092915050565b600080600090503d60008114612206576020811461220f5761221b565b6001915061221b565b60206000803e60005191505b506000811415915050905600a165627a7a72305820dea756d1b905a24da555dd5a2a6249a784e2f144afedd118fe9d317d274d07260029', - 'sourceMap': '1097:13576:1:-;;;3195:470;8:9:-1;5:2;;;30:1;27;20:12;5:2;3195:470:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:10;3402:17;;:28;;;;;;;;;;;;;;;;;;3461:13;3440:20;;:34;;;;;;;;;;;;;;;;;;3504:12;3484:19;:32;;;;3548:14;3526:21;:36;;;;3589:9;3572:16;:26;;;;3614:10;3608:5;;:16;;;;;;;;;;;;;;;;;;3650:8;3634:15;;:24;;;;;;;;;;;;;;;;;;3195:470;;;;;;1097:13576;;;;;;', - 'deployedSourceMap': '1097:13576:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14656:8;;;1594:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1594:31:1;;;;;;;;;;;;;;;;;;;;;;;6471:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6471:311:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1512:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1512:34:1;;;;;;;;;;;;;;;;;;;;;;;3901:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3901:175:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;1433:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1433:32:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1552:36:1;;;;;;;;;;;;;;;;;;;;;;;1471:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:35:1;;;;;;;;;;;;;;;;;;;;;;;;;;;8413:1418;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8413:1418:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1218:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1218:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1244:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;2051:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2051:45:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4316:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4316:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14432:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14432:112:1;;;;;;4862:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4862:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9989:3044;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9989:3044:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6905:1254;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6905:1254:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1817:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1817:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1594:31;;;;:::o;6471:311::-;6685:7;6715:60;6765:9;6715:41;:16;:39;;;;:41::i;:::-;:49;;;;;:60;;;;:::i;:::-;6708:67;;6471:311;;;;:::o;1512:34::-;;;;:::o;3901:175::-;3990:5;;;;;;;;;;;3978:17;;:10;:17;;;3970:26;;;;;;;;4012:9;4004:5;;:17;;;;;;;;;;;;;;;;;;4034:35;4051:10;4063:5;;;;;;;;;;;4034:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3901:175;:::o;1433:32::-;;;;;;;;;;;;;:::o;1552:36::-;;;;:::o;1471:35::-;;;;;;;;;;;;;:::o;8413:1418::-;9011:12;9039:24;9186:14;9066:110;9099:4;9105:2;9109:12;9123:11;9136:13;9151:8;9161:5;9066:19;:110::i;:::-;9039:137;;9203:50;9225:16;9243:9;;9203:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:21;:50::i;:::-;9186:67;;9320:4;9310:14;;:6;:14;;;9302:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9443:10;9435:18;;:4;:18;;;9427:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9674:2;9629:18;:36;9648:16;9629:36;;;;;;;;;;;;;;;;;:48;;;;9731:2;9693:109;;9725:4;9693:109;;;9735:12;9749:11;9762:13;9777:8;9787:5;9693:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9820:4;9813:11;;8413:1418;;;;;;;;;;;;;:::o;1218:20::-;;;;;;;;;;;;;:::o;1244:28::-;;;;;;;;;;;;;:::o;2051:45::-;;;;;;;;;;;;;;;;;:::o;4316:390::-;4469:4;4538:2;4492:18;:36;4511:16;4492:36;;;;;;;;;;;;;;;;;;:49;4489:88;;;4561:5;4554:12;;;;4489:88;4629:60;4670:18;4629;:36;4648:16;4629:36;;;;;;;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4594:15;:95;;4586:113;;4316:390;;;;;:::o;14432:112::-;14504:5;;;;;;;;;;;14492:17;;:10;:17;;;14484:26;;;;;;;;14531:5;;;;;;;;;;;14518:19;;;4862:1548;5398:7;5564:1;5535:31;;:17;;;;;;;;;;;:31;;;:58;;;;5576:17;;;;;;;;;;;5570:23;;:2;:23;;;5535:58;5526:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5675:1;5643:34;;:20;;;;;;;;;;;:34;;;:74;;;;5697:20;;;;;;;;;;;5681:36;;:12;:36;;;5643:74;5634:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5794:1;5771:19;;:24;:62;;;;5814:19;;5799:11;:34;5771:62;5762:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5911:1;5886:21;;:26;:68;;;;5933:21;;5916:13;:38;5886:68;5877:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6029:1;6009:16;;:21;:53;;;;6046:16;;6034:8;:28;6009:53;6000:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6173:4;6168:10;;6201:1;6196:7;;6229:4;6252;6274:2;6294:12;6324:11;6353:13;6384:8;6134:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6134:268:1;;;6111:292;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6111:292:1;;;;;;;;;;;;;;;;6104:299;;4862:1548;;;;;;;;;:::o;9989:3044::-;10587:12;10615:24;11438:23;10642:110;10675:4;10681:2;10685:12;10699:11;10712:13;10727:8;10737:5;10642:19;:110::i;:::-;10615:137;;10829:99;10849:4;10855:2;10859:12;10873:11;10886:13;10901:8;10911:5;10918:9;10829:19;:99::i;:::-;10820:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11128:34;11148:13;11128:15;:19;;:34;;;;:::i;:::-;11089:18;:36;11108:16;11089:36;;;;;;;;;;;;;;;;;:73;;;;11289:10;:16;11300:4;11289:16;;;;;;;;;;;;;;;;11281:5;:24;11278:75;;;11337:5;11318:10;:16;11329:4;11318:16;;;;;;;;;;;;;;;:24;;;;11278:75;11470:12;11464:29;;;11494:2;11464:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11464:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11464:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11464:33:1;;;;;;;;;;;;;;;;11438:59;;11513:12;11507:32;;;11540:4;11545:2;11548:11;11507:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11507:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11507:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11507:53:1;;;;;;;;;;;;;;;;;11628:12;11622:29;;;11652:2;11622:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11622:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11622:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11622:33:1;;;;;;;;;;;;;;;;11606:11;11590:15;:27;11589:66;11570:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11747:14;:12;:14::i;:::-;11728:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11896:2;11857:110;;11890:4;11857:110;;;11900:12;11914:11;11927:13;11942:8;11952:5;11857:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12198:1;12187:8;:12;12183:822;;;12786:12;12780:32;;;12813:4;12819:10;12831:8;12780:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12780:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12780:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12780:60:1;;;;;;;;;;;;;;;;;12879:14;:12;:14::i;:::-;12854:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12183:822;13022:4;13015:11;;9989:3044;;;;;;;;;;;;:::o;6905:1254::-;7516:4;7536:24;7683:14;7760:17;7840:15;7563:110;7596:4;7602:2;7606:12;7620:11;7633:13;7648:8;7658:5;7563:19;:110::i;:::-;7536:137;;7700:50;7722:16;7740:9;7700:21;:50::i;:::-;7683:67;;7786:12;7780:29;;;7810:4;7824;7780:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7780:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7780:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7780:50:1;;;;;;;;;;;;;;;;7760:70;;7864:12;7858:29;;;7888:4;7858:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7858:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7858:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7858:35:1;;;;;;;;;;;;;;;;7840:53;;7935:4;7925:14;;:6;:14;;;:40;;;;;7963:2;7955:10;;:4;:10;;;;7925:40;:111;;;;;8000:18;:36;8019:16;8000:36;;;;;;;;;;;;;;;;;;7981:15;:55;;7925:111;:165;;;;;8065:25;8081:8;8065:11;:15;;:25;;;;:::i;:::-;8052:9;:38;;7925:165;:217;;;;;8117:25;8133:8;8117:11;:15;;:25;;;;:::i;:::-;8106:7;:36;;7925:217;7904:248;;6905:1254;;;;;;;;;;;;;;:::o;1817:53::-;;;;;;;;;;;;;;;;;:::o;1700:277:5:-;1781:7;1961:4;1908:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1908:58:5;;;1891:81;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1891:81:5;;;;;;;;;;;;;;;;1884:88;;1700:277;;;:::o;600:962::-;683:7;700:9;715;730:7;802:2;782:9;:16;:22;;778:62;;;830:1;814:19;;;;778:62;1116:2;1105:9;1101:18;1095:25;1090:30;;1153:2;1142:9;1138:18;1132:25;1127:30;;1198:2;1187:9;1183:18;1177:25;1174:1;1169:34;1164:39;;1310:2;1306:1;:6;;;1302:34;;;1327:2;1322:7;;;;1302:34;1410:2;1405:1;:7;;;;:18;;;;;1421:2;1416:1;:7;;;;1405:18;1401:157;;;1449:1;1433:19;;;;1401:157;1527:24;1537:4;1543:1;1546;1549;1527:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1527:24:5;;;;;;;;1520:31;;600:962;;;;;;;;:::o;1273:131:6:-;1331:7;1346:9;1362:1;1358;:5;1346:17;;1382:1;1377;:6;;1369:15;;;;;;;;1398:1;1391:8;;1273:131;;;;;:::o;13448:855:1:-;13523:4;13543:19;13565:1;13543:23;;13744:14;13826:3;13821:57;;;;13949:4;13944:220;;;;13737:516;;13821:57;13863:1;13848:16;;13821:57;;13944:220;14049:4;14044:3;14039;14024:30;14146:3;14140:10;14125:25;;13737:516;;14295:1;14280:11;:16;;14273:23;;13448:855;;:::o', - 'source': "pragma solidity ^0.4.24;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n\n //// Breakin’ Through @ University of Wyoming ////\n\n Austin Thomas Griffith - https://austingriffith.com\n\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address public owner;\n uint8 public contractVersion;\n\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event ownershipChanged(\n address oldOwner,\n address newOwner\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n owner=msg.sender;\n contractVersion=_version;\n }\n\n // this function allows the owner of the contract to pass the ownership\n // to another address. The only privilege this conveys is the ability to\n // call endContract() which destorys the contract and all subscriptions.\n function changeOwnership(address _newOwner)\n public\n {\n require(msg.sender==owner);\n owner = _newOwner;\n emit ownershipChanged(msg.sender, owner);\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \"paid\" and \"active\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \"requiredToAddress Failure\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \"requiredTokenAddress Failure\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \"requiredTokenAmount Failure\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \"requiredPeriodSeconds Failure\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \"requiredGasPrice Failure\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n external\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \"Invalid Signature for subscription cancellation\");\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \"Subscription is not ready or conditions of transction are not met\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \"ERC20 Balance did not change correctly\"\n );\n\n require(\n checkSuccess(),\n \"Subscription::executeSubscription TransferFrom failed\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \"Subscription::executeSubscription Failed to pay gas as from account\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the owner to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==owner);\n selfdestruct(owner);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function() public payable {\n revert();\n }\n}\n", - 'sourcePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', - 'ast': { - 'absolutePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', - 'exportedSymbols': { - 'Subscription': [ - 695 + "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"requiredGasPrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSubscriptionSigner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAmount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredToAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredPeriodSeconds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cancelSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"extraNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"author\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"gracePeriodSeconds\",\"type\":\"uint256\"}],\"name\":\"isSubscriptionActive\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"endContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getSubscriptionHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"executeSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isSubscriptionReady\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextValidTimestamp\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_toAddress\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenAmount\",\"type\":\"uint256\"},{\"name\":\"_periodSeconds\",\"type\":\"uint256\"},{\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"name\":\"_version\",\"type\":\"uint8\"},{\"name\":\"_relayer\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"ExecuteSubscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"CancelSubscription\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":\"Subscription\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":{\"keccak256\":\"0xd23b843d2a5cbd6e762c03fc55c62e331f306f37458e14cf791f4d10fc8f4c4f\",\"urls\":[\"bzzr://33f93fb60362d588a089d221a20097a97112f7060364f97151667be7e2007bc7\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0x0cbeb7f69b70ff62eb5536caebbc8701b6490ae7ee2e252d77891cf6eba11326\",\"urls\":[\"bzzr://58a443499466ee0706d22af81b43ab6779b519255fbc66276546386ec00a30d7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\",\"urls\":[\"bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3dceb7e4aa237a56111c13f77d7efadeceda7271d62bfac94ac79afab7c1f411\",\"urls\":[\"bzzr://2f34152a5bec385352002c31bc89f5e9935f628f1923ccea45c2281e0084a4db\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x59e7df16169a498cb8837963b2f5461d88e63bd1eb6c7d58b814d76b84ccbe61\",\"urls\":[\"bzzr://e572c9c4e02e37349702451bf3b5dcbbc86a19da5a51695b5b3e1bfe1e7825dc\"]}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b5060405160e080612345833981018060405260e081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004819055508360058190555082600681905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505061219a806101ab6000396000f3fe608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", + "deployedBytecode": "0x608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", + "sourceMap": "1091:13213:1:-;;;3145:489;8:9:-1;5:2;;;30:1;27;20:12;5:2;3145:489:1;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3145:489:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:10;3378:17;;:28;;;;;;;;;;;;;;;;;;3437:13;3416:20;;:34;;;;;;;;;;;;;;;;;;3480:12;3460:19;:32;;;;3524:14;3502:21;:36;;;;3565:9;3548:16;:26;;;;3591:10;3584:6;;:17;;;;;;;;;;;;;;;;;;3619:8;3611:7;;:16;;;;;;;;;;;;;;;;;;3145:489;;;;;;;1091:13213;;;;;;", + "deployedSourceMap": "1091:13213:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14286:9;;;1631:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:31:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6029:318:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6029:318:1;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6029:318:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6029:318:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6029:318:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6029:318:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1470:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:32:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1589:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:36:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1508:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1508:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7985:1423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7985:1423:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7985:1423:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7985:1423:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7985:1423:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1288:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1288:22:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2088:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2088:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2088:45:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1212:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:29:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3874:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3874:390:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3874:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14057:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14057:114:1;;;:::i;:::-;;4420:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4420:1548:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4420:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9566:3091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9566:3091:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9566:3091:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9566:3091:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9566:3091:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6470:1261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6470:1261:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6470:1261:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6470:1261:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6470:1261:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1854:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1854:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1854:53:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1631:31;;;;:::o;6029:318::-;6250:7;6280:60;6330:9;6280:41;:16;:39;:41::i;:::-;:49;;:60;;;;:::i;:::-;6273:67;;6029:318;;;;:::o;1549:34::-;;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1589:36::-;;;;:::o;1508:35::-;;;;;;;;;;;;;:::o;7985:1423::-;8588:12;8616:24;8643:110;8676:4;8682:2;8686:12;8700:11;8713:13;8728:8;8738:5;8643:19;:110::i;:::-;8616:137;;8763:14;8780:50;8802:16;8820:9;8780:21;:50::i;:::-;8763:67;;8897:4;8887:14;;:6;:14;;;8879:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:10;9012:18;;:4;:18;;;9004:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9251:2;9206:18;:36;9225:16;9206:36;;;;;;;;;;;:48;;;;9308:2;9270:109;;9302:4;9270:109;;;9312:12;9326:11;9339:13;9354:8;9364:5;9270:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:4;9390:11;;;;7985:1423;;;;;;;;;;:::o;1288:22::-;;;;;;;;;;;;;:::o;2088:45::-;;;;;;;;;;;;;;;;;:::o;1212:29::-;;;;;;;;;;;;;:::o;3874:390::-;4027:4;4096:2;4050:18;:36;4069:16;4050:36;;;;;;;;;;;;:49;4047:88;;;4119:5;4112:12;;;;4047:88;4187:60;4228:18;4187;:36;4206:16;4187:36;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4152:15;:95;;4144:113;;3874:390;;;;;:::o;14057:114::-;14129:6;;;;;;;;;;;14117:18;;:10;:18;;;14109:27;;;;;;;;14157:6;;;;;;;;;;;14144:20;;;4420:1548;4956:7;5122:1;5093:31;;:17;;;;;;;;;;;:31;;;:58;;;;5134:17;;;;;;;;;;;5128:23;;:2;:23;;;5093:58;5084:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:1;5201:34;;:20;;;;;;;;;;;:34;;;:74;;;;5255:20;;;;;;;;;;;5239:36;;:12;:36;;;5201:74;5192:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:1;5329:19;;:24;:62;;;;5372:19;;5357:11;:34;5329:62;5320:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:1;5444:21;;:26;:68;;;;5491:21;;5474:13;:38;5444:68;5435:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5567:16;;:21;:53;;;;5604:16;;5592:8;:28;5567:53;5558:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:4;5726:10;;5759:1;5754:7;;5787:4;5810;5832:2;5852:12;5882:11;5911:13;5942:8;5692:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5692:268:1;;;5669:292;;;;;;5662:299;;4420:1548;;;;;;;;;:::o;9566:3091::-;10171:12;10221:7;;;;;;;;;;;10207:21;;:10;:21;;;10199:30;;;;;;;;10239:24;10266:110;10299:4;10305:2;10309:12;10323:11;10336:13;10351:8;10361:5;10266:19;:110::i;:::-;10239:137;;10453:99;10473:4;10479:2;10483:12;10497:11;10510:13;10525:8;10535:5;10542:9;10453:19;:99::i;:::-;10444:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10752:34;10772:13;10752:15;:19;;:34;;;;:::i;:::-;10713:18;:36;10732:16;10713:36;;;;;;;;;;;:73;;;;10913:10;:16;10924:4;10913:16;;;;;;;;;;;;;;;;10905:5;:24;10902:75;;;10961:5;10942:10;:16;10953:4;10942:16;;;;;;;;;;;;;;;:24;;;;10902:75;11062:23;11094:12;11088:29;;;11118:2;11088:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11088:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11088:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11088:33:1;;;;;;;;;;;;;;;;11062:59;;11137:12;11131:32;;;11164:4;11169:2;11172:11;11131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11131:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11131:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11131:53:1;;;;;;;;;;;;;;;;;11252:12;11246:29;;;11276:2;11246:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11246:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11246:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11246:33:1;;;;;;;;;;;;;;;;11230:11;11214:15;:27;11213:66;11194:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11371:14;:12;:14::i;:::-;11352:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:2;11481:110;;11514:4;11481:110;;;11524:12;11538:11;11551:13;11566:8;11576:5;11481:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:1;11811:8;:12;11807:822;;;12410:12;12404:32;;;12437:4;12443:10;12455:8;12404:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12404:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12404:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12404:60:1;;;;;;;;;;;;;;;;;12503:14;:12;:14::i;:::-;12478:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:822;12646:4;12639:11;;;;9566:3091;;;;;;;;;;:::o;6470:1261::-;7088:4;7108:24;7135:110;7168:4;7174:2;7178:12;7192:11;7205:13;7220:8;7230:5;7135:19;:110::i;:::-;7108:137;;7255:14;7272:50;7294:16;7312:9;7272:21;:50::i;:::-;7255:67;;7332:17;7358:12;7352:29;;;7382:4;7396;7352:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7352:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7352:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7352:50:1;;;;;;;;;;;;;;;;7332:70;;7412:15;7436:12;7430:29;;;7460:4;7430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7430:35:1;;;;;;;;;;;;;;;;7412:53;;7507:4;7497:14;;:6;:14;;;:40;;;;;7535:2;7527:10;;:4;:10;;;;7497:40;:111;;;;;7572:18;:36;7591:16;7572:36;;;;;;;;;;;;7553:15;:55;;7497:111;:165;;;;;7637:25;7653:8;7637:11;:15;;:25;;;;:::i;:::-;7624:9;:38;;7497:165;:217;;;;;7689:25;7705:8;7689:11;:15;;:25;;;;:::i;:::-;7678:7;:36;;7497:217;7476:248;;;;;;6470:1261;;;;;;;;;;:::o;1854:53::-;;;;;;;;;;;;;;;;;:::o;2650:265:2:-;2719:7;2902:4;2849:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2849:58:2;;;2839:69;;;;;;2832:76;;2650:265;;;:::o;609:1891::-;687:7;768:2;748:9;:16;:22;;744:72;;;802:1;786:19;;;;744:72;882:9;901;920:7;1166:4;1155:9;1151:20;1145:27;1140:32;;1211:4;1200:9;1196:20;1190:27;1185:32;;1264:4;1253:9;1249:20;1243:27;1240:1;1235:36;1230:41;;2182:66;2177:1;2169:10;;;:79;2165:127;;;2279:1;2264:17;;;;;;;2165:127;2311:2;2306:1;:7;;;;:18;;;;;2322:2;2317:1;:7;;;;2306:18;2302:66;;;2355:1;2340:17;;;;;;;2302:66;2469:24;2479:4;2485:1;2488;2491;2469:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2469:24:2;;;;;;;;2462:31;;;;;609:1891;;;;;:::o;1439:145:3:-;1497:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1543:15;;;;;;;;1576:1;1569:8;;;1439:145;;;;:::o;13072:855:1:-;13147:4;13167:19;13189:1;13167:23;;13368:14;13450:3;13445:57;;;;13573:4;13568:220;;;;13361:516;;13445:57;13487:1;13472:16;;13445:57;;13568:220;13673:4;13668:3;13663;13648:30;13770:3;13764:10;13749:25;;13361:516;;13919:1;13904:11;:16;;13897:23;;;13072:855;:::o", + "source": "pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \"paid\" and \"active\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \"requiredToAddress Failure\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \"requiredTokenAddress Failure\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \"requiredTokenAmount Failure\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \"requiredPeriodSeconds Failure\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \"requiredGasPrice Failure\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \"Invalid Signature for subscription cancellation\");\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \"Subscription is not ready or conditions of transction are not met\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \"ERC20 Balance did not change correctly\"\n );\n\n require(\n checkSuccess(),\n \"Subscription::executeSubscription TransferFrom failed\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \"Subscription::executeSubscription Failed to pay gas as from account\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n", + "sourcePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "ast": { + "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "exportedSymbols": { + "Subscription": [ + 675 ] }, - 'id': 696, - 'nodeType': 'SourceUnit', - 'nodes': [ + "id": 676, + "nodeType": "SourceUnit", + "nodes": [ { - 'id': 58, - 'literals': [ - 'solidity', - '^', - '0.4', - '.24' + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".2" ], - 'nodeType': 'PragmaDirective', - 'src': '0:24:1' + "nodeType": "PragmaDirective", + "src": "0:23:1" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', - 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', - 'id': 59, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 972, - 'src': '906:64:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 757, + "src": "900:64:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', - 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', - 'id': 60, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 1100, - 'src': '971:59:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 885, + "src": "965:59:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', - 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', - 'id': 61, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 1569, - 'src': '1031:63:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 1268, + "src": "1025:63:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'baseContracts': [], - 'contractDependencies': [], - 'contractKind': 'contract', - 'documentation': null, - 'fullyImplemented': true, - 'id': 695, - 'linearizedBaseContracts': [ - 695 + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 675, + "linearizedBaseContracts": [ + 675 ], - 'name': 'Subscription', - 'nodeType': 'ContractDefinition', - 'nodes': [ + "name": "Subscription", + "nodeType": "ContractDefinition", + "nodes": [ { - 'id': 64, - 'libraryName': { - 'contractScope': null, - 'id': 62, - 'name': 'ECDSA', - 'nodeType': 'UserDefinedTypeName', - 'referencedDeclaration': 971, - 'src': '1131:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ECDSA_$971', - 'typeString': 'library ECDSA' + "id": 64, + "libraryName": { + "contractScope": null, + "id": 62, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 756, + "src": "1125:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$756", + "typeString": "library ECDSA" } }, - 'nodeType': 'UsingForDirective', - 'src': '1125:24:1', - 'typeName': { - 'id': 63, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '1141:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "nodeType": "UsingForDirective", + "src": "1119:24:1", + "typeName": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } } }, { - 'id': 67, - 'libraryName': { - 'contractScope': null, - 'id': 65, - 'name': 'SafeMath', - 'nodeType': 'UserDefinedTypeName', - 'referencedDeclaration': 1099, - 'src': '1160:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_SafeMath_$1099', - 'typeString': 'library SafeMath' + "id": 67, + "libraryName": { + "contractScope": null, + "id": 65, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 884, + "src": "1154:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$884", + "typeString": "library SafeMath" } }, - 'nodeType': 'UsingForDirective', - 'src': '1154:27:1', - 'typeName': { - 'id': 66, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1173:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "UsingForDirective", + "src": "1148:27:1", + "typeName": { + "id": 66, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, { - 'constant': false, - 'id': 69, - 'name': 'owner', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1218:20:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 69, + "name": "author", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1212:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, - 'typeName': { - 'id': 68, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1218:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1212:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 71, - 'name': 'contractVersion', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1244:28:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "constant": false, + "id": 71, + "name": "relayer", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1288:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 70, - 'name': 'uint8', - 'nodeType': 'ElementaryTypeName', - 'src': '1244:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1288:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 73, - 'name': 'requiredToAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1433:32:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 73, + "name": "requiredToAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1470:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 72, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1433:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 75, - 'name': 'requiredTokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1471:35:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 75, + "name": "requiredTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1508:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 74, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1471:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 77, - 'name': 'requiredTokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1512:34:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 77, + "name": "requiredTokenAmount", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1549:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 76, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1512:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 76, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 79, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1552:36:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 79, + "name": "requiredPeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1589:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 78, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1552:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 81, - 'name': 'requiredGasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1594:31:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 81, + "name": "requiredGasPrice", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1631:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 80, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1594:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 85, - 'name': 'nextValidTimestamp', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1817:53:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "constant": false, + "id": 85, + "name": "nextValidTimestamp", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1854:53:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" }, - 'typeName': { - 'id': 84, - 'keyType': { - 'id': 82, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '1825:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 84, + "keyType": { + "id": 82, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'Mapping', - 'src': '1817:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "nodeType": "Mapping", + "src": "1854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" }, - 'valueType': { - 'id': 83, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1836:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "valueType": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1873:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 89, - 'name': 'extraNonce', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '2051:45:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "constant": false, + "id": 89, + "name": "extraNonce", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "2088:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, - 'typeName': { - 'id': 88, - 'keyType': { - 'id': 86, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2059:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 88, + "keyType": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2096:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Mapping', - 'src': '2051:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "nodeType": "Mapping", + "src": "2088:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, - 'valueType': { - 'id': 87, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2070:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "valueType": { + "id": 87, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'anonymous': false, - 'documentation': null, - 'id': 105, - 'name': 'ExecuteSubscription', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 104, - 'nodeType': 'ParameterList', - 'parameters': [ + "anonymous": false, + "documentation": null, + "id": 105, + "name": "ExecuteSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 91, - 'indexed': true, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2138:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 90, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2138:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 91, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2175:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 93, - 'indexed': true, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2185:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 92, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2185:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 93, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2222:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 95, - 'indexed': false, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2229:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 94, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2229:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 95, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 97, - 'indexed': false, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2301:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 96, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2301:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 97, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2338:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 99, - 'indexed': false, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2371:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 98, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2371:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 99, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2408:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2408:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 101, - 'indexed': false, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2443:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 100, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2443:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 101, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2480:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 103, - 'indexed': false, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2520:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 102, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2520:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 103, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2557:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '2128:471:1' + "src": "2165:471:1" }, - 'src': '2103:497:1' + "src": "2140:497:1" }, { - 'anonymous': false, - 'documentation': null, - 'id': 121, - 'name': 'CancelSubscription', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 120, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 107, - 'indexed': true, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2640:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 106, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2640:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' - }, + "anonymous": false, + "documentation": null, + "id": 121, + "name": "CancelSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 109, - 'indexed': true, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2687:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 108, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2687:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 107, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2677:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 111, - 'indexed': false, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2731:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 110, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2731:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 109, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2724:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2724:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 113, - 'indexed': false, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2803:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 112, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2803:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 111, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2768:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 115, - 'indexed': false, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2873:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 114, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2873:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 113, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2840:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2840:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 117, - 'indexed': false, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2945:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 116, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2945:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 115, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2910:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 119, - 'indexed': false, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '3022:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 118, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3022:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - } - }, - 'value': null, - 'visibility': 'internal' - } - ], - 'src': '2630:471:1' - }, - 'src': '2606:496:1' - }, - { - 'anonymous': false, - 'documentation': null, - 'id': 127, - 'name': 'ownershipChanged', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 126, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 123, - 'indexed': false, - 'name': 'oldOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 127, - 'src': '3140:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 122, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3140:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 117, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2982:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2982:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 125, - 'indexed': false, - 'name': 'newOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 127, - 'src': '3166:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 124, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3166:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 119, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "3059:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3059:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '3130:58:1' + "src": "2667:471:1" }, - 'src': '3108:81:1' + "src": "2643:496:1" }, { - 'body': { - 'id': 171, - 'nodeType': 'Block', - 'src': '3392:273:1', - 'statements': [ + "body": { + "id": 167, + "nodeType": "Block", + "src": "3368:266:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'id': 144, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 142, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '3402:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 138, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3378:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 143, - 'name': '_toAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 129, - 'src': '3420:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 139, + "name": "_toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3396:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3402:28:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3378:28:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 145, - 'nodeType': 'ExpressionStatement', - 'src': '3402:28:1' + "id": 141, + "nodeType": "ExpressionStatement", + "src": "3378:28:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 148, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 146, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '3440:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 142, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "3416:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 147, - 'name': '_tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 131, - 'src': '3461:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 143, + "name": "_tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3437:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3440:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3416:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 149, - 'nodeType': 'ExpressionStatement', - 'src': '3440:34:1' + "id": 145, + "nodeType": "ExpressionStatement", + "src": "3416:34:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 152, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 150, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '3484:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 146, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "3460:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 151, - 'name': '_tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 133, - 'src': '3504:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 147, + "name": "_tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3484:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3460:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 153, - 'nodeType': 'ExpressionStatement', - 'src': '3484:32:1' + "id": 149, + "nodeType": "ExpressionStatement", + "src": "3460:32:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 156, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 154, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '3526:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 150, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "3502:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 155, - 'name': '_periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 135, - 'src': '3548:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 151, + "name": "_periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3524:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3526:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3502:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 157, - 'nodeType': 'ExpressionStatement', - 'src': '3526:36:1' + "id": 153, + "nodeType": "ExpressionStatement", + "src": "3502:36:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 160, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 158, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '3572:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 154, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "3548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 159, - 'name': '_gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 137, - 'src': '3589:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3572:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3548:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 161, - 'nodeType': 'ExpressionStatement', - 'src': '3572:26:1' + "id": 157, + "nodeType": "ExpressionStatement", + "src": "3548:26:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 165, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 162, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '3608:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 158, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3584:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 163, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '3614:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "3591:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 164, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '3614:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3591:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '3608:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3584:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'id': 166, - 'nodeType': 'ExpressionStatement', - 'src': '3608:16:1' + "id": 162, + "nodeType": "ExpressionStatement", + "src": "3584:17:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 169, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 167, - 'name': 'contractVersion', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 71, - 'src': '3634:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "expression": { + "argumentTypes": null, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 163, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 168, - 'name': '_version', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 139, - 'src': '3650:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 164, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "3619:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3634:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "src": "3611:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 170, - 'nodeType': 'ExpressionStatement', - 'src': '3634:24:1' + "id": 166, + "nodeType": "ExpressionStatement", + "src": "3611:16:1" } ] }, - 'documentation': null, - 'id': 172, - 'implemented': true, - 'isConstructor': true, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': '', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 140, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 168, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 129, - 'name': '_toAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3216:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 128, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3216:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 123, + "name": "_toAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3166:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3166:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 131, - 'name': '_tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3244:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 130, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3244:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 125, + "name": "_tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3194:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3194:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 133, - 'name': '_tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3275:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 132, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3275:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 127, + "name": "_tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3225:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 135, - 'name': '_periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3305:22:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 134, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3305:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 129, + "name": "_periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3255:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 137, - 'name': '_gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3337:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 136, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3337:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 131, + "name": "_gasPrice", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3287:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 139, - 'name': '_version', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3364:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' - }, - 'typeName': { - 'id': 138, - 'name': 'uint8', - 'nodeType': 'ElementaryTypeName', - 'src': '3364:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "constant": false, + "id": 133, + "name": "_version", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3314:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 132, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3314:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - 'value': null, - 'visibility': 'internal' - } - ], - 'src': '3206:178:1' - }, - 'payable': false, - 'returnParameters': { - 'id': 141, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '3392:0:1' - }, - 'scope': 695, - 'src': '3195:470:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' - }, - { - 'body': { - 'id': 194, - 'nodeType': 'Block', - 'src': '3962:114:1', - 'statements': [ - { - 'expression': { - 'argumentTypes': null, - 'arguments': [ - { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'id': 181, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 178, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '3978:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' - } - }, - 'id': 179, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '3978:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 180, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '3990:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'src': '3978:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - } - } - ], - 'expression': { - 'argumentTypes': [ - { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - } - ], - 'id': 177, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 - ], - 'referencedDeclaration': 1726, - 'src': '3970:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', - 'typeString': 'function (bool) pure' - } - }, - 'id': 182, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '3970:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' - } - }, - 'id': 183, - 'nodeType': 'ExpressionStatement', - 'src': '3970:26:1' + "value": null, + "visibility": "internal" }, { - 'expression': { - 'argumentTypes': null, - 'id': 186, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 184, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '4004:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 185, - 'name': '_newOwner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 174, - 'src': '4012:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'src': '4004:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 135, + "name": "_relayer", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3338:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3338:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 187, - 'nodeType': 'ExpressionStatement', - 'src': '4004:17:1' - }, - { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ - { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 189, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '4051:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' - } - }, - 'id': 190, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '4051:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - { - 'argumentTypes': null, - 'id': 191, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '4063:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - } - ], - 'expression': { - 'argumentTypes': [ - { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - ], - 'id': 188, - 'name': 'ownershipChanged', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 127, - 'src': '4034:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$returns$__$', - 'typeString': 'function (address,address)' - } - }, - 'id': 192, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4034:35:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' - } - }, - 'id': 193, - 'nodeType': 'EmitStatement', - 'src': '4029:40:1' - } - ] - }, - 'documentation': null, - 'id': 195, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'changeOwnership', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 175, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 174, - 'name': '_newOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 195, - 'src': '3926:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 173, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3926:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '3925:19:1' + "src": "3156:204:1" }, - 'payable': false, - 'returnParameters': { - 'id': 176, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '3962:0:1' + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [], + "src": "3368:0:1" }, - 'scope': 695, - 'src': '3901:175:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "3145:489:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 227, - 'nodeType': 'Block', - 'src': '4479:227:1', - 'statements': [ + "body": { + "id": 200, + "nodeType": "Block", + "src": "4037:227:1", + "statements": [ { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 211, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 204, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '4492:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 177, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4050:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 206, - 'indexExpression': { - 'argumentTypes': null, - 'id': 205, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 197, - 'src': '4511:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 179, + "indexExpression": { + "argumentTypes": null, + "id": 178, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4069:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '4492:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4050:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 209, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'UnaryOperation', - 'operator': '-', - 'prefix': true, - 'src': '4538:2:1', - 'subExpression': { - 'argumentTypes': null, - 'hexValue': '31', - 'id': 208, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '4539:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_1_by_1', - 'typeString': 'int_const 1' + "argumentTypes": null, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4096:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - 'value': '1' + "value": "1" }, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } ], - 'id': 207, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '4530:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_uint256_$', - 'typeString': 'type(uint256)' + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - 'typeName': 'uint256' + "typeName": "uint256" }, - 'id': 210, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4530:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4088:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '4492:49:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "4050:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 215, - 'nodeType': 'IfStatement', - 'src': '4489:88:1', - 'trueBody': { - 'id': 214, - 'nodeType': 'Block', - 'src': '4542:35:1', - 'statements': [ + "falseBody": null, + "id": 188, + "nodeType": "IfStatement", + "src": "4047:88:1", + "trueBody": { + "id": 187, + "nodeType": "Block", + "src": "4100:35:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'hexValue': '66616c7365', - 'id': 212, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '4561:5:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'false' + "value": "false" }, - 'functionReturnParameters': 203, - 'id': 213, - 'nodeType': 'Return', - 'src': '4554:12:1' + "functionReturnParameters": 176, + "id": 186, + "nodeType": "Return", + "src": "4112:12:1" } ] } }, { - 'expression': { - 'argumentTypes': null, - 'components': [ + "expression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 224, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 216, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '4594:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "4152:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 217, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '4594:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4152:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '<=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 222, - 'name': 'gracePeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 199, - 'src': '4670:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 195, + "name": "gracePeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "4228:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 218, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '4629:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 191, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4187:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 220, - 'indexExpression': { - 'argumentTypes': null, - 'id': 219, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 197, - 'src': '4648:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 193, + "indexExpression": { + "argumentTypes": null, + "id": 192, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4206:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '4629:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4187:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 221, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '4629:40:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "4187:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 223, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4629:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:60:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '4594:95:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "4152:95:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'id': 225, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '4593:106:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 198, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4151:106:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 203, - 'id': 226, - 'nodeType': 'Return', - 'src': '4586:113:1' + "functionReturnParameters": 176, + "id": 199, + "nodeType": "Return", + "src": "4144:113:1" } ] }, - 'documentation': null, - 'id': 228, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'isSubscriptionActive', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 200, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionActive", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 197, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4355:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 196, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '4355:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 170, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3913:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 169, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 199, - 'name': 'gracePeriodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4389:26:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 198, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '4389:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 172, + "name": "gracePeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3947:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3947:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4345:76:1' + "src": "3903:76:1" }, - 'payable': false, - 'returnParameters': { - 'id': 203, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 202, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4469:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 201, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '4469:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "4027:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 174, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4468:6:1' + "src": "4026:6:1" }, - 'scope': 695, - 'src': '4316:390:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "3874:390:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" }, { - 'body': { - 'id': 327, - 'nodeType': 'Block', - 'src': '5411:999:1', - 'statements': [ + "body": { + "id": 300, + "nodeType": "Block", + "src": "4969:999:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 256, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 252, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 248, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '5535:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5093:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 250, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5564:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5122:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 249, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '5556:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5114:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 251, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5556:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '5535:31:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5093:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 255, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 253, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 232, - 'src': '5570:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 226, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5128:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 254, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '5576:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 227, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5134:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '5570:23:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5128:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5535:58:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5093:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f41646472657373204661696c757265', - 'id': 257, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5595:27:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', - 'typeString': 'literal_string "requiredToAddress Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f41646472657373204661696c757265", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" }, - 'value': 'requiredToAddress Failure' + "value": "requiredToAddress Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', - 'typeString': 'literal_string "requiredToAddress Failure"' + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" } ], - 'id': 247, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5526:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5084:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 258, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5526:98:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5084:98:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 259, - 'nodeType': 'ExpressionStatement', - 'src': '5526:98:1' + "id": 232, + "nodeType": "ExpressionStatement", + "src": "5084:98:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 269, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 265, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 261, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '5643:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5201:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 263, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5675:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 262, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '5667:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 264, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5667:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '5643:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5201:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 268, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 266, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 234, - 'src': '5681:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 267, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '5697:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5255:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '5681:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5239:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5643:74:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5201:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', - 'id': 270, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5719:30:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', - 'typeString': 'literal_string "requiredTokenAddress Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5277:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" }, - 'value': 'requiredTokenAddress Failure' + "value": "requiredTokenAddress Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', - 'typeString': 'literal_string "requiredTokenAddress Failure"' + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" } ], - 'id': 260, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5634:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5192:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 271, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5634:118:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5192:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 272, - 'nodeType': 'ExpressionStatement', - 'src': '5634:118:1' + "id": 245, + "nodeType": "ExpressionStatement", + "src": "5192:118:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 280, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 276, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 274, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '5771:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 247, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5329:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 275, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5794:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5352:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '5771:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5329:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 279, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 277, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 236, - 'src': '5799:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 250, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5357:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 278, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '5814:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 251, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5372:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '5799:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5357:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5771:62:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5329:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', - 'id': 281, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5835:29:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', - 'typeString': 'literal_string "requiredTokenAmount Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5393:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" }, - 'value': 'requiredTokenAmount Failure' + "value": "requiredTokenAmount Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', - 'typeString': 'literal_string "requiredTokenAmount Failure"' + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" } ], - 'id': 273, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 246, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5762:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5320:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 282, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5762:105:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5320:105:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 283, - 'nodeType': 'ExpressionStatement', - 'src': '5762:105:1' + "id": 256, + "nodeType": "ExpressionStatement", + "src": "5320:105:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 291, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 287, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 285, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '5886:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 258, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5444:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 286, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5911:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5469:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '5886:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5444:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 290, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 288, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 238, - 'src': '5916:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 261, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5474:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 289, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '5933:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 262, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '5916:38:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5474:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5886:68:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5444:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', - 'id': 292, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5956:31:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', - 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5514:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" }, - 'value': 'requiredPeriodSeconds Failure' + "value": "requiredPeriodSeconds Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', - 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" } ], - 'id': 284, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5877:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 293, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5877:113:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5435:113:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 294, - 'nodeType': 'ExpressionStatement', - 'src': '5877:113:1' + "id": 267, + "nodeType": "ExpressionStatement", + "src": "5435:113:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 302, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 298, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 296, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '6009:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5567:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 297, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6029:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5587:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '6009:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 301, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 299, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 240, - 'src': '6034:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 272, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5592:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 300, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '6046:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 273, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5604:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '6034:28:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5592:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '6009:53:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5567:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '72657175697265644761735072696365204661696c757265', - 'id': 303, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6064:26:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', - 'typeString': 'literal_string "requiredGasPrice Failure"' + "argumentTypes": null, + "hexValue": "72657175697265644761735072696365204661696c757265", + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5622:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" }, - 'value': 'requiredGasPrice Failure' + "value": "requiredGasPrice Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', - 'typeString': 'literal_string "requiredGasPrice Failure"' + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" } ], - 'id': 295, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 268, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '6000:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 304, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6000:93:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5558:93:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 305, - 'nodeType': 'ExpressionStatement', - 'src': '6000:93:1' + "id": 278, + "nodeType": "ExpressionStatement", + "src": "5558:93:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30783139', - 'id': 310, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6173:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_25_by_1', - 'typeString': 'int_const 25' + "argumentTypes": null, + "hexValue": "30783139", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5731:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - 'value': '0x19' + "value": "0x19" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_25_by_1', - 'typeString': 'int_const 25' + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" } ], - 'id': 309, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6168:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_bytes1_$', - 'typeString': 'type(bytes1)' + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - 'typeName': 'byte' + "typeName": "byte" }, - 'id': 311, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6168:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 313, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6201:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 312, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6196:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_bytes1_$', - 'typeString': 'type(bytes1)' + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5754:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - 'typeName': 'byte' + "typeName": "byte" }, - 'id': 314, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6196:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 316, - 'name': 'this', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1746, - 'src': '6229:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "argumentTypes": null, + "id": 289, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "5787:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } ], - 'id': 315, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6221:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5779:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 317, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6221:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5779:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { - 'argumentTypes': null, - 'id': 318, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 230, - 'src': '6252:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 291, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 319, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 232, - 'src': '6274:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 292, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5832:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 320, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 234, - 'src': '6294:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 293, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5852:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 321, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 236, - 'src': '6324:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 294, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 322, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 238, - 'src': '6353:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 295, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5911:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 323, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 240, - 'src': '6384:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 296, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5942:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 307, - 'name': 'abi', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1710, - 'src': '6134:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_abi', - 'typeString': 'abi' + "expression": { + "argumentTypes": null, + "id": 280, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "5692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" } }, - 'id': 308, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'memberName': 'encodePacked', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '6134:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', - 'typeString': 'function () pure returns (bytes memory)' + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5692:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - 'id': 324, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6134:268:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:268:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 306, - 'name': 'keccak256', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1717, - 'src': '6111:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_sha3_pure$__$returns$_t_bytes32_$', - 'typeString': 'function () pure returns (bytes32)' + "id": 279, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "5669:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - 'id': 325, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6111:292:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5669:292:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'functionReturnParameters': 246, - 'id': 326, - 'nodeType': 'Return', - 'src': '6104:299:1' + "functionReturnParameters": 219, + "id": 299, + "nodeType": "Return", + "src": "5662:299:1" } ] }, - 'documentation': null, - 'id': 328, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'getSubscriptionHash', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 243, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 230, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4900:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 229, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4900:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 203, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4458:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4458:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 232, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4939:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 231, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4939:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 205, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4497:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4497:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 234, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4975:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 233, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4975:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 207, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4533:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 236, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5047:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 235, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5047:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 209, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4605:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 238, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5117:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 237, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5117:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 211, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4675:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 240, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5189:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 239, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5189:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 213, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4747:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 242, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5273:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 241, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5273:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 215, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4831:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4890:462:1' + "src": "4448:462:1" }, - 'payable': false, - 'returnParameters': { - 'id': 246, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 245, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5398:7:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 244, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '5398:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 218, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4956:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '5397:9:1' + "src": "4955:9:1" }, - 'scope': 695, - 'src': '4862:1548:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "4420:1548:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 344, - 'nodeType': 'Block', - 'src': '6698:84:1', - 'statements': [ + "body": { + "id": 317, + "nodeType": "Block", + "src": "6263:84:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 341, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 332, - 'src': '6765:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "6330:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'expression': { - 'argumentTypes': null, - 'id': 337, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 330, - 'src': '6715:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 310, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "6280:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'id': 338, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'toEthSignedMessageHash', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 970, - 'src': '6715:39:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', - 'typeString': 'function (bytes32) pure returns (bytes32)' + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 755, + "src": "6280:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" } }, - 'id': 339, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6715:41:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'id': 340, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'recover', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 954, - 'src': '6715:49:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "6280:49:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 342, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6715:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:60:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'functionReturnParameters': 336, - 'id': 343, - 'nodeType': 'Return', - 'src': '6708:67:1' + "functionReturnParameters": 309, + "id": 316, + "nodeType": "Return", + "src": "6273:67:1" } ] }, - 'documentation': null, - 'id': 345, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'getSubscriptionSigner', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 333, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 330, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6511:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 329, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '6511:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 303, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6069:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 332, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6568:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 331, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '6568:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 305, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6126:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6126:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6501:138:1' + "src": "6059:145:1" }, - 'payable': false, - 'returnParameters': { - 'id': 336, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 335, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6685:7:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 334, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6685:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 308, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6250:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6684:9:1' + "src": "6249:9:1" }, - 'scope': 695, - 'src': '6471:311:1', - 'stateMutability': 'pure', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "6029:318:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 436, - 'nodeType': 'Block', - 'src': '7526:633:1', - 'statements': [ + "body": { + "id": 409, + "nodeType": "Block", + "src": "7098:633:1", + "statements": [ { - 'assignments': [ - 367 + "assignments": [ + 340 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 367, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7536:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 340, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7108:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 366, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '7536:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7108:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 377, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 350, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 369, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7596:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 342, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 370, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 349, - 'src': '7602:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 343, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7174:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 371, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7606:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 344, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7178:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 372, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '7620:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 345, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7192:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 373, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 355, - 'src': '7633:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 346, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "7205:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 374, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '7648:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 347, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7220:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 375, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 359, - 'src': '7658:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 348, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "7230:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 368, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '7563:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 341, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "7135:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 376, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7563:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7135:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7536:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "7108:137:1" }, { - 'assignments': [ - 379 + "assignments": [ + 352 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 379, - 'name': 'signer', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7683:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 352, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7255:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 378, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '7683:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7255:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 384, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 357, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 381, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 367, - 'src': '7722:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "argumentTypes": null, + "id": 354, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7294:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, { - 'argumentTypes': null, - 'id': 382, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 361, - 'src': '7740:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 355, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7312:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 380, - 'name': 'getSubscriptionSigner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 345, - 'src': '7700:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 353, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7272:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 383, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7700:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7272:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7683:67:1' + "nodeType": "VariableDeclarationStatement", + "src": "7255:67:1" }, { - 'assignments': [ - 386 + "assignments": [ + 359 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 386, - 'name': 'allowance', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7760:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 359, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7332:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 385, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7760:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 396, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 369, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 391, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7810:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 364, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7382:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 393, - 'name': 'this', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1746, - 'src': '7824:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "argumentTypes": null, + "id": 366, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "7396:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } ], - 'id': 392, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '7816:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 394, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7816:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7388:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 388, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7786:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 361, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7358:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 387, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '7780:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 360, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7352:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 389, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7780:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 390, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'allowance', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1156, - 'src': '7780:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address,address) view external returns (uint256)' + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "7352:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" } }, - 'id': 395, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7780:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7760:70:1' + "nodeType": "VariableDeclarationStatement", + "src": "7332:70:1" }, { - 'assignments': [ - 398 + "assignments": [ + 371 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 398, - 'name': 'balance', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7840:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 371, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7412:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 397, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7840:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7412:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 405, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 378, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 403, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7888:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 376, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7460:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 400, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7864:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 373, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7436:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 399, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '7858:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 372, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7430:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 401, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7858:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 402, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '7858:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "7430:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 404, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7858:35:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7840:53:1' + "nodeType": "VariableDeclarationStatement", + "src": "7412:53:1" }, { - 'expression': { - 'argumentTypes': null, - 'components': [ + "expression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 433, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 426, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 419, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 412, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 408, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 406, - 'name': 'signer', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 379, - 'src': '7925:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 379, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "7497:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 407, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7935:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 380, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7507:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '7925:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 411, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 409, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7955:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 382, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7527:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '!=', - 'rightExpression': { - 'argumentTypes': null, - 'id': 410, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 349, - 'src': '7963:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7535:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '7955:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7527:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:40:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 418, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 413, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '7981:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "7553:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 414, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '7981:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7553:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 415, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '8000:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "7572:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 417, - 'indexExpression': { - 'argumentTypes': null, - 'id': 416, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 367, - 'src': '8019:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7591:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '8000:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7572:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '7981:55:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7553:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:111:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:111:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 425, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 420, - 'name': 'allowance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 386, - 'src': '8052:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 393, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "7624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 423, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '8081:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 396, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7653:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 421, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '8065:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 394, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7637:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 422, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '8065:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7637:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 424, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '8065:25:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '8052:38:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7624:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:165:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:165:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 432, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 427, - 'name': 'balance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 398, - 'src': '8106:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 400, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "7678:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 430, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '8133:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 403, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7705:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 428, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '8117:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 401, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7689:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 429, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '8117:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7689:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 431, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '8117:25:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7689:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '8106:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7678:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:217:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:217:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'id': 434, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '7911:241:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7483:241:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 365, - 'id': 435, - 'nodeType': 'Return', - 'src': '7904:248:1' + "functionReturnParameters": 338, + "id": 408, + "nodeType": "Return", + "src": "7476:248:1" } ] }, - 'documentation': null, - 'id': 437, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'isSubscriptionReady', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 362, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionReady", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 347, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '6943:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 346, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6943:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 320, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 349, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '6982:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 348, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6982:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 322, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6547:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6547:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 351, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7018:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 350, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '7018:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 324, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6583:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6583:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 353, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7090:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 352, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7090:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 326, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6655:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 355, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7160:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 354, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7160:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 328, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6725:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 357, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7232:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 356, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7232:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 330, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6797:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6797:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 359, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7317:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 358, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7317:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 332, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6882:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6882:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 361, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7399:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 360, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '7399:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 334, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6964:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 333, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6964:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6933:537:1' + "src": "6498:544:1" }, - 'payable': false, - 'returnParameters': { - 'id': 365, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 364, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7516:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 363, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '7516:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 337, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "7088:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 336, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7088:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '7515:6:1' + "src": "7087:6:1" }, - 'scope': 695, - 'src': '6905:1254:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "6470:1261:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 513, - 'nodeType': 'Block', - 'src': '9029:802:1', - 'statements': [ + "body": { + "id": 486, + "nodeType": "Block", + "src": "8606:802:1", + "statements": [ { - 'assignments': [ - 459 + "assignments": [ + 432 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 459, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9039:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 432, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8616:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 458, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '9039:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 469, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 442, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 461, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9099:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 434, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 462, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 441, - 'src': '9105:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "8682:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 463, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 443, - 'src': '9109:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 436, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "8686:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 464, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 445, - 'src': '9123:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 437, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "8700:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 465, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 447, - 'src': '9136:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 438, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "8713:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 466, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 449, - 'src': '9151:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 439, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8728:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 467, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 451, - 'src': '9161:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 440, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8738:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 460, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '9066:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 433, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "8643:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 468, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9066:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8643:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '9039:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "8616:137:1" }, { - 'assignments': [ - 471 + "assignments": [ + 444 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 471, - 'name': 'signer', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9186:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 444, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8763:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 470, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '9186:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8763:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 476, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 449, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 473, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 459, - 'src': '9225:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "argumentTypes": null, + "id": 446, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "8802:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, { - 'argumentTypes': null, - 'id': 474, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 453, - 'src': '9243:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes calldata' + "argumentTypes": null, + "id": 447, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "8820:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes calldata' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 472, - 'name': 'getSubscriptionSigner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 345, - 'src': '9203:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 445, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8780:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 475, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9203:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8780:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '9186:67:1' + "nodeType": "VariableDeclarationStatement", + "src": "8763:67:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 480, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 478, - 'name': 'signer', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 471, - 'src': '9310:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 451, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8887:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 479, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9320:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 452, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '9310:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "8887:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', - 'id': 481, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9326:49:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', - 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + "argumentTypes": null, + "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8903:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" }, - 'value': 'Invalid Signature for subscription cancellation' + "value": "Invalid Signature for subscription cancellation" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', - 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" } ], - 'id': 477, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 450, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '9302:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "8879:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 482, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9302:74:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8879:74:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 483, - 'nodeType': 'ExpressionStatement', - 'src': '9302:74:1' + "id": 456, + "nodeType": "ExpressionStatement", + "src": "8879:74:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 488, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 485, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9435:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9012:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 486, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '9443:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "9020:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 487, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '9443:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9020:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '9435:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "9012:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', - 'id': 489, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9455:34:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', - 'typeString': 'literal_string "msg.sender is not the subscriber"' + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9032:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" }, - 'value': 'msg.sender is not the subscriber' + "value": "msg.sender is not the subscriber" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', - 'typeString': 'literal_string "msg.sender is not the subscriber"' + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" } ], - 'id': 484, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 457, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '9427:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "9004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 490, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9427:63:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9004:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 491, - 'nodeType': 'ExpressionStatement', - 'src': '9427:63:1' + "id": 464, + "nodeType": "ExpressionStatement", + "src": "9004:63:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 499, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 492, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '9629:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "9206:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 494, - 'indexExpression': { - 'argumentTypes': null, - 'id': 493, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 459, - 'src': '9648:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "9225:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '9629:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9206:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 497, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'UnaryOperation', - 'operator': '-', - 'prefix': true, - 'src': '9674:2:1', - 'subExpression': { - 'argumentTypes': null, - 'hexValue': '31', - 'id': 496, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9675:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_1_by_1', - 'typeString': 'int_const 1' + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9251:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9252:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - 'value': '1' + "value": "1" }, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } ], - 'id': 495, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '9666:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_uint256_$', - 'typeString': 'type(uint256)' + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9243:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - 'typeName': 'uint256' + "typeName": "uint256" }, - 'id': 498, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9666:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9243:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '9629:48:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "9206:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 500, - 'nodeType': 'ExpressionStatement', - 'src': '9629:48:1' + "id": 473, + "nodeType": "ExpressionStatement", + "src": "9206:48:1" }, { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ + "eventCall": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 502, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9725:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 475, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9302:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 503, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 441, - 'src': '9731:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 476, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "9308:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 504, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 443, - 'src': '9735:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 477, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "9312:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 505, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 445, - 'src': '9749:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 478, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "9326:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 506, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 447, - 'src': '9762:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 479, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "9339:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 507, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 449, - 'src': '9777:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 480, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "9354:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 508, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 451, - 'src': '9787:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 481, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "9364:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 501, - 'name': 'CancelSubscription', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 121, - 'src': '9693:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + "id": 474, + "name": "CancelSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "9270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" } }, - 'id': 509, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9693:109:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9270:109:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 510, - 'nodeType': 'EmitStatement', - 'src': '9688:114:1' + "id": 483, + "nodeType": "EmitStatement", + "src": "9265:114:1" }, { - 'expression': { - 'argumentTypes': null, - 'hexValue': '74727565', - 'id': 511, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9820:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9397:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'true' + "value": "true" }, - 'functionReturnParameters': 457, - 'id': 512, - 'nodeType': 'Return', - 'src': '9813:11:1' + "functionReturnParameters": 430, + "id": 485, + "nodeType": "Return", + "src": "9390:11:1" } ] }, - 'documentation': null, - 'id': 514, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'cancelSubscription', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 454, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cancelSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 439, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8450:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 438, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8450:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 412, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8022:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8022:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 441, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8489:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 440, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8489:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 414, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8061:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8061:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 443, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8525:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 442, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8525:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 416, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8097:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8097:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 445, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8597:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 444, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8597:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 418, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8169:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 447, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8667:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 446, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8667:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 420, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8239:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 449, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8739:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 448, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8739:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 422, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8311:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 451, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8823:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 450, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8823:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 424, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8395:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 453, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8905:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 452, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '8905:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 426, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8477:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8477:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '8440:536:1' + "src": "8012:543:1" }, - 'payable': false, - 'returnParameters': { - 'id': 457, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 456, - 'name': 'success', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9011:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 455, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '9011:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 429, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8588:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 428, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8588:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '9010:14:1' + "src": "8587:14:1" }, - 'scope': 695, - 'src': '8413:1418:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "7985:1423:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 656, - 'nodeType': 'Block', - 'src': '10605:2428:1', - 'statements': [ + "body": { + "id": 636, + "nodeType": "Block", + "src": "10189:2468:1", + "statements": [ { - 'assignments': [ - 536 + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "10221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10207:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "10199:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10199:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "10199:30:1" + }, + { + "assignments": [ + 516 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 536, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10615:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 516, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10239:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 535, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '10615:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 546, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 526, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 538, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '10675:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 518, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10299:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 539, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '10681:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 519, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10305:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 540, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '10685:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 520, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10309:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 541, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '10699:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 521, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10323:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 542, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '10712:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 522, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10336:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 543, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '10727:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 523, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 544, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '10737:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 524, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10361:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 537, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '10642:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 517, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "10266:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 545, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10642:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10266:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '10615:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "10239:137:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 549, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '10849:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 529, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 550, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '10855:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 530, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10479:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 551, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '10859:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 531, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10483:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 552, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '10873:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 532, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10497:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 553, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '10886:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 533, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10510:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 554, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '10901:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 534, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10525:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 555, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '10911:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 535, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10535:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 556, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 530, - 'src': '10918:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 536, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "10542:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 548, - 'name': 'isSubscriptionReady', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 437, - 'src': '10829:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' + "id": 528, + "name": "isSubscriptionReady", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "10453:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" } }, - 'id': 557, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10829:99:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10453:99:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', - 'id': 558, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '10930:67:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', - 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10554:67:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" }, - 'value': 'Subscription is not ready or conditions of transction are not met' + "value": "Subscription is not ready or conditions of transction are not met" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', - 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" } ], - 'id': 547, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 527, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '10820:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "10444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 559, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10820:179:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10444:179:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 560, - 'nodeType': 'ExpressionStatement', - 'src': '10820:179:1' + "id": 540, + "nodeType": "ExpressionStatement", + "src": "10444:179:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 569, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 561, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '11089:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "10713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 563, - 'indexExpression': { - 'argumentTypes': null, - 'id': 562, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 536, - 'src': '11108:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '11089:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10713:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 567, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '11148:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 547, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10772:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 564, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '11128:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "10752:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 565, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '11128:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10752:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 566, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '11128:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "10752:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 568, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11128:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10752:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11089:73:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "10713:73:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 570, - 'nodeType': 'ExpressionStatement', - 'src': '11089:73:1' + "id": 550, + "nodeType": "ExpressionStatement", + "src": "10713:73:1" }, { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 575, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 571, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11281:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10905:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>', - 'rightExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 572, - 'name': 'extraNonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 89, - 'src': '11289:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10913:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - 'id': 574, - 'indexExpression': { - 'argumentTypes': null, - 'id': 573, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11300:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10924:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '11289:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11281:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "10905:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 583, - 'nodeType': 'IfStatement', - 'src': '11278:75:1', - 'trueBody': { - 'id': 582, - 'nodeType': 'Block', - 'src': '11306:47:1', - 'statements': [ + "falseBody": null, + "id": 563, + "nodeType": "IfStatement", + "src": "10902:75:1", + "trueBody": { + "id": 562, + "nodeType": "Block", + "src": "10930:47:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'id': 580, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 576, - 'name': 'extraNonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 89, - 'src': '11318:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "expression": { + "argumentTypes": null, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 556, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10942:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - 'id': 578, - 'indexExpression': { - 'argumentTypes': null, - 'id': 577, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11329:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 558, + "indexExpression": { + "argumentTypes": null, + "id": 557, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10953:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '11318:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10942:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 579, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11337:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10961:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11318:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "10942:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 581, - 'nodeType': 'ExpressionStatement', - 'src': '11318:24:1' + "id": 561, + "nodeType": "ExpressionStatement", + "src": "10942:24:1" } ] } }, { - 'assignments': [ - 585 + "assignments": [ + 565 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 585, - 'name': 'startingBalance', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '11438:23:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 565, + "name": "startingBalance", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "11062:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 584, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '11438:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 592, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 572, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 590, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11494:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 570, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11118:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 587, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11470:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 567, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11094:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 586, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11464:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 566, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11088:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 588, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11464:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 589, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '11464:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11088:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 591, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11464:33:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '11438:59:1' + "nodeType": "VariableDeclarationStatement", + "src": "11062:59:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 597, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11540:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 577, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11164:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 598, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11545:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 578, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11169:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 599, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11548:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 579, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11172:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 594, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11513:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 574, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11137:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 593, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11507:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 573, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 595, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11507:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 596, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'transferFrom', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1338, - 'src': '11507:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', - 'typeString': 'function (address,address,uint256) external returns (bool)' + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "11131:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" } }, - 'id': 600, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11507:53:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'id': 601, - 'nodeType': 'ExpressionStatement', - 'src': '11507:53:1' + "id": 581, + "nodeType": "ExpressionStatement", + "src": "11131:53:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 613, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'components': [ + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 605, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 603, - 'name': 'startingBalance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 585, - 'src': '11590:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 583, + "name": "startingBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "11214:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '+', - 'rightExpression': { - 'argumentTypes': null, - 'id': 604, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11606:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 584, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11230:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11590:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "11214:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'id': 606, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '11589:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 586, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11213:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 611, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11652:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 591, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11276:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 608, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11628:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 588, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11252:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 607, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11622:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 587, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11246:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 609, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11622:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 610, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '11622:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11246:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 612, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11622:33:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11589:66:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "11213:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', - 'id': 614, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '11667:40:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', - 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + "argumentTypes": null, + "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11291:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" }, - 'value': 'ERC20 Balance did not change correctly' + "value": "ERC20 Balance did not change correctly" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', - 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" } ], - 'id': 602, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '11570:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "11194:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 615, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11570:147:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11194:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 616, - 'nodeType': 'ExpressionStatement', - 'src': '11570:147:1' + "id": 596, + "nodeType": "ExpressionStatement", + "src": "11194:147:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 618, - 'name': 'checkSuccess', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 672, - 'src': '11747:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', - 'typeString': 'function () pure returns (bool)' + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 598, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "11371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" } }, - 'id': 619, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11747:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11371:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', - 'id': 620, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '11773:55:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', - 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11397:55:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" }, - 'value': 'Subscription::executeSubscription TransferFrom failed' + "value": "Subscription::executeSubscription TransferFrom failed" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', - 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" } ], - 'id': 617, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 597, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '11728:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "11352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 621, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11728:112:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11352:112:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 622, - 'nodeType': 'ExpressionStatement', - 'src': '11728:112:1' + "id": 602, + "nodeType": "ExpressionStatement", + "src": "11352:112:1" }, { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ + "eventCall": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 624, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11890:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 604, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11514:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 625, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11896:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 605, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11520:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 626, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11900:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 606, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11524:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 627, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11914:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 607, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11538:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 628, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '11927:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 608, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "11551:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 629, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '11942:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 609, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11566:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 630, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11952:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 610, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "11576:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 623, - 'name': 'ExecuteSubscription', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 105, - 'src': '11857:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + "id": 603, + "name": "ExecuteSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "11481:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" } }, - 'id': 631, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11857:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11481:110:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 632, - 'nodeType': 'EmitStatement', - 'src': '11852:115:1' + "id": 612, + "nodeType": "EmitStatement", + "src": "11476:115:1" }, { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 635, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 633, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '12187:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 613, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11811:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 634, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '12198:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '12187:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "11811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 653, - 'nodeType': 'IfStatement', - 'src': '12183:822:1', - 'trueBody': { - 'id': 652, - 'nodeType': 'Block', - 'src': '12201:804:1', - 'statements': [ + "falseBody": null, + "id": 633, + "nodeType": "IfStatement", + "src": "11807:822:1", + "trueBody": { + "id": 632, + "nodeType": "Block", + "src": "11825:804:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 640, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '12813:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 620, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "12437:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 641, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '12819:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "12443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 642, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '12819:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { - 'argumentTypes': null, - 'id': 643, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '12831:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 623, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "12455:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 637, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '12786:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 617, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "12410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 636, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '12780:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 616, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "12404:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 638, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12780:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 639, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'transferFrom', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1338, - 'src': '12780:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', - 'typeString': 'function (address,address,uint256) external returns (bool)' + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "12404:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" } }, - 'id': 644, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12780:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'id': 645, - 'nodeType': 'ExpressionStatement', - 'src': '12780:60:1' + "id": 625, + "nodeType": "ExpressionStatement", + "src": "12404:60:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 647, - 'name': 'checkSuccess', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 672, - 'src': '12879:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', - 'typeString': 'function () pure returns (bool)' + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 627, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "12503:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" } }, - 'id': 648, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12879:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12503:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', - 'id': 649, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '12911:69:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', - 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12535:69:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" }, - 'value': 'Subscription::executeSubscription Failed to pay gas as from account' + "value": "Subscription::executeSubscription Failed to pay gas as from account" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', - 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" } ], - 'id': 646, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 626, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '12854:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "12478:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 650, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12854:140:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12478:140:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 651, - 'nodeType': 'ExpressionStatement', - 'src': '12854:140:1' + "id": 631, + "nodeType": "ExpressionStatement", + "src": "12478:140:1" } ] } }, { - 'expression': { - 'argumentTypes': null, - 'hexValue': '74727565', - 'id': 654, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '13022:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12646:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'true' + "value": "true" }, - 'functionReturnParameters': 534, - 'id': 655, - 'nodeType': 'Return', - 'src': '13015:11:1' + "functionReturnParameters": 507, + "id": 635, + "nodeType": "Return", + "src": "12639:11:1" } ] }, - 'documentation': null, - 'id': 657, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'executeSubscription', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 531, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 637, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "executeSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 516, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10027:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 515, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10027:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 489, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9604:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9604:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 518, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10066:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 517, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10066:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 491, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9643:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9643:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 520, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10102:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 519, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10102:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 493, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9679:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9679:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 522, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10174:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 521, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10174:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 495, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9751:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 524, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10244:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 523, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10244:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 497, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9821:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 526, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10316:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 525, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10316:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 499, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9893:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 528, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10400:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 527, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10400:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 501, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9977:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 530, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10483:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 529, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '10483:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 503, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10060:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10060:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '10017:537:1' + "src": "9594:544:1" }, - 'payable': false, - 'returnParameters': { - 'id': 534, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 533, - 'name': 'success', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10587:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 532, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '10587:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 506, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10171:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 505, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '10586:14:1' + "src": "10170:14:1" }, - 'scope': 695, - 'src': '9989:3044:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "9566:3091:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 671, - 'nodeType': 'Block', - 'src': '13533:770:1', - 'statements': [ + "body": { + "id": 651, + "nodeType": "Block", + "src": "13157:770:1", + "statements": [ { - 'assignments': [ - 663 + "assignments": [ + 643 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 663, - 'name': 'returnValue', - 'nodeType': 'VariableDeclaration', - 'scope': 672, - 'src': '13543:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 643, + "name": "returnValue", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "13167:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 662, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '13543:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 665, - 'initialValue': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 664, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '13565:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "id": 645, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13189:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '13543:23:1' + "nodeType": "VariableDeclarationStatement", + "src": "13167:23:1" }, { - 'externalReferences': [ + "externalReferences": [ { - 'returnValue': { - 'declaration': 663, - 'isOffset': false, - 'isSlot': false, - 'src': '14125:11:1', - 'valueSize': 1 + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13472:11:1", + "valueSize": 1 } }, { - 'returnValue': { - 'declaration': 663, - 'isOffset': false, - 'isSlot': false, - 'src': '13848:11:1', - 'valueSize': 1 + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13749:11:1", + "valueSize": 1 } } ], - 'id': 666, - 'nodeType': 'InlineAssembly', - 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', - 'src': '13644:635:1' + "id": 646, + "nodeType": "InlineAssembly", + "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", + "src": "13268:635:1" }, { - 'expression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 669, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 667, - 'name': 'returnValue', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 663, - 'src': '14280:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 647, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "13904:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '!=', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 668, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '14295:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13919:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '14280:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "13904:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 661, - 'id': 670, - 'nodeType': 'Return', - 'src': '14273:23:1' + "functionReturnParameters": 641, + "id": 650, + "nodeType": "Return", + "src": "13897:23:1" } ] }, - 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', - 'id': 672, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'checkSuccess', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 658, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '13469:7:1' + "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", + "id": 652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkSuccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [], + "src": "13093:7:1" }, - 'payable': false, - 'returnParameters': { - 'id': 661, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 660, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 672, - 'src': '13523:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 659, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '13523:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "13147:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13147:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '13522:6:1' + "src": "13146:6:1" }, - 'scope': 695, - 'src': '13448:855:1', - 'stateMutability': 'pure', - 'superFunction': null, - 'visibility': 'private' + "scope": 675, + "src": "13072:855:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" }, { - 'body': { - 'id': 686, - 'nodeType': 'Block', - 'src': '14476:68:1', - 'statements': [ + "body": { + "id": 666, + "nodeType": "Block", + "src": "14101:70:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, - 'id': 679, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 676, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '14492:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "14117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 677, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '14492:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 678, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '14504:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 658, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14129:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '14492:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "14117:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - 'id': 675, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 655, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1726, - 'src': '14484:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', - 'typeString': 'function (bool) pure' + "referencedDeclaration": 1354, + "src": "14109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - 'id': 680, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14484:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14109:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 681, - 'nodeType': 'ExpressionStatement', - 'src': '14484:26:1' + "id": 661, + "nodeType": "ExpressionStatement", + "src": "14109:27:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 683, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '14531:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 663, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14157:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - 'id': 682, - 'name': 'selfdestruct', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1731, - 'src': '14518:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_$returns$__$', - 'typeString': 'function (address)' + "id": 662, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "14144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" } }, - 'id': 684, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14518:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14144:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 685, - 'nodeType': 'ExpressionStatement', - 'src': '14518:19:1' + "id": 665, + "nodeType": "ExpressionStatement", + "src": "14144:20:1" } ] }, - 'documentation': null, - 'id': 687, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'endContract', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 673, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14452:2:1' + "documentation": null, + "id": 667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [], + "src": "14077:2:1" }, - 'payable': false, - 'returnParameters': { - 'id': 674, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14476:0:1' + "returnParameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [], + "src": "14101:0:1" }, - 'scope': 695, - 'src': '14432:112:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "14057:114:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" }, { - 'body': { - 'id': 693, - 'nodeType': 'Block', - 'src': '14647:24:1', - 'statements': [ + "body": { + "id": 673, + "nodeType": "Block", + "src": "14277:25:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 690, - 'name': 'revert', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1728, - 1729 + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 670, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1356, + 1357 ], - 'referencedDeclaration': 1728, - 'src': '14656:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_revert_pure$__$returns$__$', - 'typeString': 'function () pure' + "referencedDeclaration": 1356, + "src": "14286:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" } }, - 'id': 691, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14656:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14286:9:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 692, - 'nodeType': 'ExpressionStatement', - 'src': '14656:8:1' + "id": 672, + "nodeType": "ExpressionStatement", + "src": "14286:9:1" } ] }, - 'documentation': null, - 'id': 694, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': '', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 688, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14629:2:1' + "documentation": null, + "id": 674, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "14257:2:1" }, - 'payable': true, - 'returnParameters': { - 'id': 689, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14647:0:1' + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "14277:0:1" }, - 'scope': 695, - 'src': '14621:50:1', - 'stateMutability': 'payable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "14248:54:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" } ], - 'scope': 696, - 'src': '1097:13576:1' + "scope": 676, + "src": "1091:13213:1" } ], - 'src': '0:14674:1' + "src": "0:14305:1" }, - 'legacyAST': { - 'absolutePath': '/Users/kevinseagraves/Desktop/gitcoin/grants1337/contracts/Subscription.sol', - 'exportedSymbols': { - 'Subscription': [ - 695 + "legacyAST": { + "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", + "exportedSymbols": { + "Subscription": [ + 675 ] }, - 'id': 696, - 'nodeType': 'SourceUnit', - 'nodes': [ + "id": 676, + "nodeType": "SourceUnit", + "nodes": [ { - 'id': 58, - 'literals': [ - 'solidity', - '^', - '0.4', - '.24' + "id": 58, + "literals": [ + "solidity", + "^", + "0.5", + ".2" ], - 'nodeType': 'PragmaDirective', - 'src': '0:24:1' + "nodeType": "PragmaDirective", + "src": "0:23:1" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', - 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', - 'id': 59, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 972, - 'src': '906:64:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", + "id": 59, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 757, + "src": "900:64:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', - 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', - 'id': 60, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 1100, - 'src': '971:59:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", + "id": 60, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 885, + "src": "965:59:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', - 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', - 'id': 61, - 'nodeType': 'ImportDirective', - 'scope': 696, - 'sourceUnit': 1569, - 'src': '1031:63:1', - 'symbolAliases': [], - 'unitAlias': '' + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 61, + "nodeType": "ImportDirective", + "scope": 676, + "sourceUnit": 1268, + "src": "1025:63:1", + "symbolAliases": [], + "unitAlias": "" }, { - 'baseContracts': [], - 'contractDependencies': [], - 'contractKind': 'contract', - 'documentation': null, - 'fullyImplemented': true, - 'id': 695, - 'linearizedBaseContracts': [ - 695 + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 675, + "linearizedBaseContracts": [ + 675 ], - 'name': 'Subscription', - 'nodeType': 'ContractDefinition', - 'nodes': [ + "name": "Subscription", + "nodeType": "ContractDefinition", + "nodes": [ { - 'id': 64, - 'libraryName': { - 'contractScope': null, - 'id': 62, - 'name': 'ECDSA', - 'nodeType': 'UserDefinedTypeName', - 'referencedDeclaration': 971, - 'src': '1131:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ECDSA_$971', - 'typeString': 'library ECDSA' + "id": 64, + "libraryName": { + "contractScope": null, + "id": 62, + "name": "ECDSA", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 756, + "src": "1125:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ECDSA_$756", + "typeString": "library ECDSA" } }, - 'nodeType': 'UsingForDirective', - 'src': '1125:24:1', - 'typeName': { - 'id': 63, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '1141:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "nodeType": "UsingForDirective", + "src": "1119:24:1", + "typeName": { + "id": 63, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } } }, { - 'id': 67, - 'libraryName': { - 'contractScope': null, - 'id': 65, - 'name': 'SafeMath', - 'nodeType': 'UserDefinedTypeName', - 'referencedDeclaration': 1099, - 'src': '1160:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_SafeMath_$1099', - 'typeString': 'library SafeMath' + "id": 67, + "libraryName": { + "contractScope": null, + "id": 65, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 884, + "src": "1154:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$884", + "typeString": "library SafeMath" } }, - 'nodeType': 'UsingForDirective', - 'src': '1154:27:1', - 'typeName': { - 'id': 66, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1173:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "UsingForDirective", + "src": "1148:27:1", + "typeName": { + "id": 66, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, { - 'constant': false, - 'id': 69, - 'name': 'owner', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1218:20:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 69, + "name": "author", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1212:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, - 'typeName': { - 'id': 68, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1218:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 68, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1212:15:1", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 71, - 'name': 'contractVersion', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1244:28:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "constant": false, + "id": 71, + "name": "relayer", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1288:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 70, - 'name': 'uint8', - 'nodeType': 'ElementaryTypeName', - 'src': '1244:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1288:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 73, - 'name': 'requiredToAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1433:32:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 73, + "name": "requiredToAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1470:32:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 72, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1433:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 72, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1470:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 75, - 'name': 'requiredTokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1471:35:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 75, + "name": "requiredTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1508:35:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 74, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '1471:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 74, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 77, - 'name': 'requiredTokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1512:34:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 77, + "name": "requiredTokenAmount", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1549:34:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 76, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1512:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 76, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 79, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1552:36:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 79, + "name": "requiredPeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1589:36:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 78, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1552:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 81, - 'name': 'requiredGasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1594:31:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 81, + "name": "requiredGasPrice", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1631:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 80, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1594:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 80, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 85, - 'name': 'nextValidTimestamp', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '1817:53:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "constant": false, + "id": 85, + "name": "nextValidTimestamp", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "1854:53:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" }, - 'typeName': { - 'id': 84, - 'keyType': { - 'id': 82, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '1825:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 84, + "keyType": { + "id": 82, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1862:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'Mapping', - 'src': '1817:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "nodeType": "Mapping", + "src": "1854:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" }, - 'valueType': { - 'id': 83, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '1836:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "valueType": { + "id": 83, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1873:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'constant': false, - 'id': 89, - 'name': 'extraNonce', - 'nodeType': 'VariableDeclaration', - 'scope': 695, - 'src': '2051:45:1', - 'stateVariable': true, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "constant": false, + "id": 89, + "name": "extraNonce", + "nodeType": "VariableDeclaration", + "scope": 675, + "src": "2088:45:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, - 'typeName': { - 'id': 88, - 'keyType': { - 'id': 86, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2059:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 88, + "keyType": { + "id": 86, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2096:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Mapping', - 'src': '2051:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "nodeType": "Mapping", + "src": "2088:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, - 'valueType': { - 'id': 87, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2070:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "valueType": { + "id": 87, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2107:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } }, - 'value': null, - 'visibility': 'public' + "value": null, + "visibility": "public" }, { - 'anonymous': false, - 'documentation': null, - 'id': 105, - 'name': 'ExecuteSubscription', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 104, - 'nodeType': 'ParameterList', - 'parameters': [ + "anonymous": false, + "documentation": null, + "id": 105, + "name": "ExecuteSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 91, - 'indexed': true, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2138:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 90, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2138:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 91, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2175:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2175:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 93, - 'indexed': true, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2185:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 92, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2185:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 93, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2222:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2222:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 95, - 'indexed': false, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2229:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 94, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2229:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 95, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2266:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 94, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2266:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 97, - 'indexed': false, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2301:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 96, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2301:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 97, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2338:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2338:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 99, - 'indexed': false, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2371:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 98, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2371:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 99, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2408:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2408:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 101, - 'indexed': false, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2443:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 100, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2443:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 101, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2480:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2480:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 103, - 'indexed': false, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 105, - 'src': '2520:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 102, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2520:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 103, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 105, + "src": "2557:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2557:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '2128:471:1' + "src": "2165:471:1" }, - 'src': '2103:497:1' + "src": "2140:497:1" }, { - 'anonymous': false, - 'documentation': null, - 'id': 121, - 'name': 'CancelSubscription', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 120, - 'nodeType': 'ParameterList', - 'parameters': [ + "anonymous": false, + "documentation": null, + "id": 121, + "name": "CancelSubscription", + "nodeType": "EventDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 107, - 'indexed': true, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2640:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 106, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2640:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 107, + "indexed": true, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2677:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 109, - 'indexed': true, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2687:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 108, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2687:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 109, + "indexed": true, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2724:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2724:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 111, - 'indexed': false, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2731:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 110, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '2731:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 111, + "indexed": false, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2768:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2768:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 113, - 'indexed': false, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2803:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 112, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2803:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 113, + "indexed": false, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2840:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 112, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2840:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 115, - 'indexed': false, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2873:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 114, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2873:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 115, + "indexed": false, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2910:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2910:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 117, - 'indexed': false, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '2945:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 116, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '2945:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 117, + "indexed": false, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "2982:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2982:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 119, - 'indexed': false, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 121, - 'src': '3022:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 118, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3022:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 119, + "indexed": false, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 121, + "src": "3059:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 118, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3059:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '2630:471:1' + "src": "2667:471:1" }, - 'src': '2606:496:1' + "src": "2643:496:1" }, { - 'anonymous': false, - 'documentation': null, - 'id': 127, - 'name': 'ownershipChanged', - 'nodeType': 'EventDefinition', - 'parameters': { - 'id': 126, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 123, - 'indexed': false, - 'name': 'oldOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 127, - 'src': '3140:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 122, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3140:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' - }, + "body": { + "id": 167, + "nodeType": "Block", + "src": "3368:266:1", + "statements": [ { - 'constant': false, - 'id': 125, - 'indexed': false, - 'name': 'newOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 127, - 'src': '3166:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 124, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3166:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' - } - ], - 'src': '3130:58:1' - }, - 'src': '3108:81:1' - }, - { - 'body': { - 'id': 171, - 'nodeType': 'Block', - 'src': '3392:273:1', - 'statements': [ - { - 'expression': { - 'argumentTypes': null, - 'id': 144, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 142, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '3402:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 138, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3378:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 143, - 'name': '_toAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 129, - 'src': '3420:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 139, + "name": "_toAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "3396:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3402:28:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3378:28:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 145, - 'nodeType': 'ExpressionStatement', - 'src': '3402:28:1' + "id": 141, + "nodeType": "ExpressionStatement", + "src": "3378:28:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 148, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 146, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '3440:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 142, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "3416:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 147, - 'name': '_tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 131, - 'src': '3461:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 143, + "name": "_tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "3437:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3440:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3416:34:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 149, - 'nodeType': 'ExpressionStatement', - 'src': '3440:34:1' + "id": 145, + "nodeType": "ExpressionStatement", + "src": "3416:34:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 152, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 150, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '3484:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 146, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "3460:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 151, - 'name': '_tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 133, - 'src': '3504:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 147, + "name": "_tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "3480:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3484:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3460:32:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 153, - 'nodeType': 'ExpressionStatement', - 'src': '3484:32:1' + "id": 149, + "nodeType": "ExpressionStatement", + "src": "3460:32:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 156, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 154, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '3526:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 150, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "3502:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 155, - 'name': '_periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 135, - 'src': '3548:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 151, + "name": "_periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "3524:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3526:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3502:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 157, - 'nodeType': 'ExpressionStatement', - 'src': '3526:36:1' + "id": 153, + "nodeType": "ExpressionStatement", + "src": "3502:36:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 160, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 158, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '3572:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 154, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "3548:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 159, - 'name': '_gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 137, - 'src': '3589:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 155, + "name": "_gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 131, + "src": "3565:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '3572:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "3548:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 161, - 'nodeType': 'ExpressionStatement', - 'src': '3572:26:1' + "id": 157, + "nodeType": "ExpressionStatement", + "src": "3548:26:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 165, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 162, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '3608:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "expression": { + "argumentTypes": null, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 158, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3584:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 163, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '3614:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 159, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "3591:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 164, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '3614:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3591:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '3608:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "src": "3584:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'id': 166, - 'nodeType': 'ExpressionStatement', - 'src': '3608:16:1' + "id": 162, + "nodeType": "ExpressionStatement", + "src": "3584:17:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 169, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 167, - 'name': 'contractVersion', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 71, - 'src': '3634:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "expression": { + "argumentTypes": null, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 163, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3611:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 168, - 'name': '_version', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 139, - 'src': '3650:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 164, + "name": "_relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 135, + "src": "3619:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '3634:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' + "src": "3611:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 170, - 'nodeType': 'ExpressionStatement', - 'src': '3634:24:1' + "id": 166, + "nodeType": "ExpressionStatement", + "src": "3611:16:1" } ] }, - 'documentation': null, - 'id': 172, - 'implemented': true, - 'isConstructor': true, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': '', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 140, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 129, - 'name': '_toAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3216:18:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 128, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3216:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' - }, + "documentation": null, + "id": 168, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 131, - 'name': '_tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3244:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 130, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3244:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 123, + "name": "_toAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3166:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3166:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 133, - 'name': '_tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3275:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 132, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3275:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 125, + "name": "_tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3194:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3194:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 135, - 'name': '_periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3305:22:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 134, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3305:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 127, + "name": "_tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3225:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 137, - 'name': '_gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3337:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 136, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '3337:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 129, + "name": "_periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3255:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3255:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 139, - 'name': '_version', - 'nodeType': 'VariableDeclaration', - 'scope': 172, - 'src': '3364:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' - }, - 'typeName': { - 'id': 138, - 'name': 'uint8', - 'nodeType': 'ElementaryTypeName', - 'src': '3364:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint8', - 'typeString': 'uint8' - } - }, - 'value': null, - 'visibility': 'internal' - } - ], - 'src': '3206:178:1' - }, - 'payable': false, - 'returnParameters': { - 'id': 141, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '3392:0:1' - }, - 'scope': 695, - 'src': '3195:470:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' - }, - { - 'body': { - 'id': 194, - 'nodeType': 'Block', - 'src': '3962:114:1', - 'statements': [ - { - 'expression': { - 'argumentTypes': null, - 'arguments': [ - { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'id': 181, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 178, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '3978:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' - } - }, - 'id': 179, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '3978:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 180, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '3990:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'src': '3978:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - } - } - ], - 'expression': { - 'argumentTypes': [ - { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - } - ], - 'id': 177, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 - ], - 'referencedDeclaration': 1726, - 'src': '3970:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', - 'typeString': 'function (bool) pure' - } - }, - 'id': 182, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '3970:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "constant": false, + "id": 131, + "name": "_gasPrice", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3287:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3287:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 183, - 'nodeType': 'ExpressionStatement', - 'src': '3970:26:1' + "value": null, + "visibility": "internal" }, { - 'expression': { - 'argumentTypes': null, - 'id': 186, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'id': 184, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '4004:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 185, - 'name': '_newOwner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 174, - 'src': '4012:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'src': '4004:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 133, + "name": "_version", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3314:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 132, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3314:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, - 'id': 187, - 'nodeType': 'ExpressionStatement', - 'src': '4004:17:1' + "value": null, + "visibility": "internal" }, { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ - { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 189, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '4051:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' - } - }, - 'id': 190, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '4051:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - { - 'argumentTypes': null, - 'id': 191, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '4063:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - } - ], - 'expression': { - 'argumentTypes': [ - { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - ], - 'id': 188, - 'name': 'ownershipChanged', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 127, - 'src': '4034:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$returns$__$', - 'typeString': 'function (address,address)' - } - }, - 'id': 192, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4034:35:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "constant": false, + "id": 135, + "name": "_relayer", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "3338:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3338:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'id': 193, - 'nodeType': 'EmitStatement', - 'src': '4029:40:1' - } - ] - }, - 'documentation': null, - 'id': 195, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'changeOwnership', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 175, - 'nodeType': 'ParameterList', - 'parameters': [ - { - 'constant': false, - 'id': 174, - 'name': '_newOwner', - 'nodeType': 'VariableDeclaration', - 'scope': 195, - 'src': '3926:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 173, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '3926:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - } - }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '3925:19:1' + "src": "3156:204:1" }, - 'payable': false, - 'returnParameters': { - 'id': 176, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '3962:0:1' + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [], + "src": "3368:0:1" }, - 'scope': 695, - 'src': '3901:175:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "3145:489:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 227, - 'nodeType': 'Block', - 'src': '4479:227:1', - 'statements': [ + "body": { + "id": 200, + "nodeType": "Block", + "src": "4037:227:1", + "statements": [ { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 211, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 204, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '4492:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 177, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4050:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 206, - 'indexExpression': { - 'argumentTypes': null, - 'id': 205, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 197, - 'src': '4511:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 179, + "indexExpression": { + "argumentTypes": null, + "id": 178, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4069:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '4492:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4050:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 209, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'UnaryOperation', - 'operator': '-', - 'prefix': true, - 'src': '4538:2:1', - 'subExpression': { - 'argumentTypes': null, - 'hexValue': '31', - 'id': 208, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '4539:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_1_by_1', - 'typeString': 'int_const 1' + "argumentTypes": null, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "4096:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4097:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - 'value': '1' + "value": "1" }, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } ], - 'id': 207, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '4530:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_uint256_$', - 'typeString': 'type(uint256)' + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4088:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - 'typeName': 'uint256' + "typeName": "uint256" }, - 'id': 210, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4530:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4088:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '4492:49:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "4050:49:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 215, - 'nodeType': 'IfStatement', - 'src': '4489:88:1', - 'trueBody': { - 'id': 214, - 'nodeType': 'Block', - 'src': '4542:35:1', - 'statements': [ + "falseBody": null, + "id": 188, + "nodeType": "IfStatement", + "src": "4047:88:1", + "trueBody": { + "id": 187, + "nodeType": "Block", + "src": "4100:35:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'hexValue': '66616c7365', - 'id': 212, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '4561:5:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'false' + "value": "false" }, - 'functionReturnParameters': 203, - 'id': 213, - 'nodeType': 'Return', - 'src': '4554:12:1' + "functionReturnParameters": 176, + "id": 186, + "nodeType": "Return", + "src": "4112:12:1" } ] } }, { - 'expression': { - 'argumentTypes': null, - 'components': [ + "expression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 224, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 216, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '4594:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 189, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "4152:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 217, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '4594:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4152:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '<=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 222, - 'name': 'gracePeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 199, - 'src': '4670:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 195, + "name": "gracePeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "4228:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 218, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '4629:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 191, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "4187:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 220, - 'indexExpression': { - 'argumentTypes': null, - 'id': 219, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 197, - 'src': '4648:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 193, + "indexExpression": { + "argumentTypes": null, + "id": 192, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "4206:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '4629:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4187:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 221, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '4629:40:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "4187:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 223, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '4629:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:60:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '4594:95:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "4152:95:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'id': 225, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '4593:106:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 198, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4151:106:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 203, - 'id': 226, - 'nodeType': 'Return', - 'src': '4586:113:1' + "functionReturnParameters": 176, + "id": 199, + "nodeType": "Return", + "src": "4144:113:1" } ] }, - 'documentation': null, - 'id': 228, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'isSubscriptionActive', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 200, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 201, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionActive", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 197, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4355:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 196, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '4355:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 170, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3913:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 169, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3913:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 199, - 'name': 'gracePeriodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4389:26:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 198, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '4389:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 172, + "name": "gracePeriodSeconds", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "3947:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3947:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4345:76:1' + "src": "3903:76:1" }, - 'payable': false, - 'returnParameters': { - 'id': 203, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 202, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 228, - 'src': '4469:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 201, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '4469:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 175, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 201, + "src": "4027:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 174, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4027:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4468:6:1' + "src": "4026:6:1" }, - 'scope': 695, - 'src': '4316:390:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "3874:390:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" }, { - 'body': { - 'id': 327, - 'nodeType': 'Block', - 'src': '5411:999:1', - 'statements': [ + "body": { + "id": 300, + "nodeType": "Block", + "src": "4969:999:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 256, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 252, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 248, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '5535:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 221, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5093:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 250, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5564:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5122:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 249, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '5556:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5114:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 251, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5556:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5114:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '5535:31:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5093:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 255, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 253, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 232, - 'src': '5570:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 226, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5128:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 254, - 'name': 'requiredToAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 73, - 'src': '5576:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 227, + "name": "requiredToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "5134:17:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '5570:23:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5128:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5535:58:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5093:58:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f41646472657373204661696c757265', - 'id': 257, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5595:27:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', - 'typeString': 'literal_string "requiredToAddress Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f41646472657373204661696c757265", + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5153:27:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" }, - 'value': 'requiredToAddress Failure' + "value": "requiredToAddress Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', - 'typeString': 'literal_string "requiredToAddress Failure"' + "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", + "typeString": "literal_string \"requiredToAddress Failure\"" } ], - 'id': 247, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 220, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5526:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5084:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 258, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5526:98:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5084:98:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 259, - 'nodeType': 'ExpressionStatement', - 'src': '5526:98:1' + "id": 232, + "nodeType": "ExpressionStatement", + "src": "5084:98:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 269, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 265, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 261, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '5643:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 234, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5201:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 263, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5675:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 262, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '5667:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 264, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5667:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '5643:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5201:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 268, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 266, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 234, - 'src': '5681:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 239, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5239:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 267, - 'name': 'requiredTokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 75, - 'src': '5697:20:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 240, + "name": "requiredTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "5255:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '5681:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5239:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5643:74:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5201:74:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', - 'id': 270, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5719:30:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', - 'typeString': 'literal_string "requiredTokenAddress Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5277:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" }, - 'value': 'requiredTokenAddress Failure' + "value": "requiredTokenAddress Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', - 'typeString': 'literal_string "requiredTokenAddress Failure"' + "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", + "typeString": "literal_string \"requiredTokenAddress Failure\"" } ], - 'id': 260, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 233, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5634:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5192:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 271, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5634:118:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5192:118:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 272, - 'nodeType': 'ExpressionStatement', - 'src': '5634:118:1' + "id": 245, + "nodeType": "ExpressionStatement", + "src": "5192:118:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 280, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 276, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 274, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '5771:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 247, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5329:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 275, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5794:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5352:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '5771:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5329:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 279, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 277, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 236, - 'src': '5799:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 250, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5357:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 278, - 'name': 'requiredTokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 77, - 'src': '5814:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 251, + "name": "requiredTokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "5372:19:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '5799:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5357:34:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5771:62:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5329:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', - 'id': 281, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5835:29:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', - 'typeString': 'literal_string "requiredTokenAmount Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5393:29:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" }, - 'value': 'requiredTokenAmount Failure' + "value": "requiredTokenAmount Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', - 'typeString': 'literal_string "requiredTokenAmount Failure"' + "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", + "typeString": "literal_string \"requiredTokenAmount Failure\"" } ], - 'id': 273, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 246, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5762:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5320:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 282, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5762:105:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5320:105:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 283, - 'nodeType': 'ExpressionStatement', - 'src': '5762:105:1' + "id": 256, + "nodeType": "ExpressionStatement", + "src": "5320:105:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 291, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 287, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 285, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '5886:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 258, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5444:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 286, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5911:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5469:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '5886:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5444:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 290, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 288, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 238, - 'src': '5916:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 261, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5474:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 289, - 'name': 'requiredPeriodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 79, - 'src': '5933:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 262, + "name": "requiredPeriodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 79, + "src": "5491:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '5916:38:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5474:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '5886:68:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5444:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', - 'id': 292, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '5956:31:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', - 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + "argumentTypes": null, + "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5514:31:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" }, - 'value': 'requiredPeriodSeconds Failure' + "value": "requiredPeriodSeconds Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', - 'typeString': 'literal_string "requiredPeriodSeconds Failure"' + "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", + "typeString": "literal_string \"requiredPeriodSeconds Failure\"" } ], - 'id': 284, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 257, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '5877:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5435:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 293, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '5877:113:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5435:113:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 294, - 'nodeType': 'ExpressionStatement', - 'src': '5877:113:1' + "id": 267, + "nodeType": "ExpressionStatement", + "src": "5435:113:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 302, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 298, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 296, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '6009:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 269, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5567:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 297, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6029:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5587:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '6009:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5567:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '||', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 301, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 299, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 240, - 'src': '6034:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 272, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5592:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 300, - 'name': 'requiredGasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 81, - 'src': '6046:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 273, + "name": "requiredGasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "5604:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '6034:28:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5592:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '6009:53:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "5567:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '72657175697265644761735072696365204661696c757265', - 'id': 303, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6064:26:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', - 'typeString': 'literal_string "requiredGasPrice Failure"' + "argumentTypes": null, + "hexValue": "72657175697265644761735072696365204661696c757265", + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5622:26:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" }, - 'value': 'requiredGasPrice Failure' + "value": "requiredGasPrice Failure" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', - 'typeString': 'literal_string "requiredGasPrice Failure"' + "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", + "typeString": "literal_string \"requiredGasPrice Failure\"" } ], - 'id': 295, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 268, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '6000:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "5558:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 304, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6000:93:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5558:93:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 305, - 'nodeType': 'ExpressionStatement', - 'src': '6000:93:1' + "id": 278, + "nodeType": "ExpressionStatement", + "src": "5558:93:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30783139', - 'id': 310, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6173:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_25_by_1', - 'typeString': 'int_const 25' + "argumentTypes": null, + "hexValue": "30783139", + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5731:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - 'value': '0x19' + "value": "0x19" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_25_by_1', - 'typeString': 'int_const 25' + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" } ], - 'id': 309, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6168:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_bytes1_$', - 'typeString': 'type(bytes1)' + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5726:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - 'typeName': 'byte' + "typeName": "byte" }, - 'id': 311, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6168:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 313, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '6201:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "argumentTypes": null, + "hexValue": "30", + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5759:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" } ], - 'id': 312, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6196:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_bytes1_$', - 'typeString': 'type(bytes1)' + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5754:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - 'typeName': 'byte' + "typeName": "byte" }, - 'id': 314, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6196:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5754:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 316, - 'name': 'this', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1746, - 'src': '6229:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "argumentTypes": null, + "id": 289, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "5787:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } ], - 'id': 315, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '6221:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5779:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 317, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6221:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5779:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { - 'argumentTypes': null, - 'id': 318, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 230, - 'src': '6252:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 291, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 203, + "src": "5810:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 319, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 232, - 'src': '6274:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 292, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "5832:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 320, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 234, - 'src': '6294:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 293, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 207, + "src": "5852:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 321, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 236, - 'src': '6324:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 294, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "5882:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 322, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 238, - 'src': '6353:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 295, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "5911:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 323, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 240, - 'src': '6384:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 296, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "5942:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, { - 'typeIdentifier': 't_bytes1', - 'typeString': 'bytes1' + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 307, - 'name': 'abi', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1710, - 'src': '6134:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_abi', - 'typeString': 'abi' + "expression": { + "argumentTypes": null, + "id": 280, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "5692:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" } }, - 'id': 308, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'memberName': 'encodePacked', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '6134:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', - 'typeString': 'function () pure returns (bytes memory)' + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5692:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - 'id': 324, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6134:268:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5692:268:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 306, - 'name': 'keccak256', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1717, - 'src': '6111:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_sha3_pure$__$returns$_t_bytes32_$', - 'typeString': 'function () pure returns (bytes32)' + "id": 279, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "5669:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - 'id': 325, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6111:292:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5669:292:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'functionReturnParameters': 246, - 'id': 326, - 'nodeType': 'Return', - 'src': '6104:299:1' + "functionReturnParameters": 219, + "id": 299, + "nodeType": "Return", + "src": "5662:299:1" } ] }, - 'documentation': null, - 'id': 328, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'getSubscriptionHash', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 243, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 301, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 230, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4900:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 229, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4900:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 203, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4458:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4458:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 232, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4939:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 231, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4939:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 205, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4497:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 204, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4497:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 234, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '4975:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 233, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '4975:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 207, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4533:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4533:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 236, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5047:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 235, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5047:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 209, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4605:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4605:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 238, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5117:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 237, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5117:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 211, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4675:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4675:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 240, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5189:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 239, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5189:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 213, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4747:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 212, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 242, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5273:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 241, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '5273:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 215, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4831:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4831:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '4890:462:1' + "src": "4448:462:1" }, - 'payable': false, - 'returnParameters': { - 'id': 246, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 219, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 245, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 328, - 'src': '5398:7:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 244, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '5398:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 218, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 301, + "src": "4956:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 217, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4956:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '5397:9:1' + "src": "4955:9:1" }, - 'scope': 695, - 'src': '4862:1548:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "4420:1548:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 344, - 'nodeType': 'Block', - 'src': '6698:84:1', - 'statements': [ + "body": { + "id": 317, + "nodeType": "Block", + "src": "6263:84:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 341, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 332, - 'src': '6765:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 314, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "6330:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'expression': { - 'argumentTypes': null, - 'id': 337, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 330, - 'src': '6715:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 310, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 303, + "src": "6280:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'id': 338, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'toEthSignedMessageHash', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 970, - 'src': '6715:39:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', - 'typeString': 'function (bytes32) pure returns (bytes32)' + "id": 311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toEthSignedMessageHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 755, + "src": "6280:39:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32) pure returns (bytes32)" } }, - 'id': 339, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6715:41:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:41:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'id': 340, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'recover', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 954, - 'src': '6715:49:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 739, + "src": "6280:49:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 342, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '6715:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:60:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'functionReturnParameters': 336, - 'id': 343, - 'nodeType': 'Return', - 'src': '6708:67:1' + "functionReturnParameters": 309, + "id": 316, + "nodeType": "Return", + "src": "6273:67:1" } ] }, - 'documentation': null, - 'id': 345, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'getSubscriptionSigner', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 333, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 318, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSubscriptionSigner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 306, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 330, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6511:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' - }, - 'typeName': { - 'id': 329, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '6511:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 303, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6069:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 302, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6069:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 332, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6568:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 331, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '6568:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 305, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6126:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 304, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6126:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6501:138:1' + "src": "6059:145:1" }, - 'payable': false, - 'returnParameters': { - 'id': 336, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 309, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 335, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 345, - 'src': '6685:7:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 334, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6685:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 308, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "6250:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 307, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6250:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6684:9:1' + "src": "6249:9:1" }, - 'scope': 695, - 'src': '6471:311:1', - 'stateMutability': 'pure', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "6029:318:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 436, - 'nodeType': 'Block', - 'src': '7526:633:1', - 'statements': [ + "body": { + "id": 409, + "nodeType": "Block", + "src": "7098:633:1", + "statements": [ { - 'assignments': [ - 367 + "assignments": [ + 340 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 367, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7536:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 340, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7108:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 366, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '7536:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 339, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7108:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 377, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 350, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 369, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7596:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 342, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7168:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 370, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 349, - 'src': '7602:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 343, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7174:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 371, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7606:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 344, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7178:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 372, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '7620:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 345, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7192:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 373, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 355, - 'src': '7633:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 346, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 328, + "src": "7205:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 374, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '7648:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 347, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7220:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 375, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 359, - 'src': '7658:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 348, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 332, + "src": "7230:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 368, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '7563:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 341, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "7135:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 376, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7563:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7135:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7536:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "7108:137:1" }, { - 'assignments': [ - 379 + "assignments": [ + 352 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 379, - 'name': 'signer', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7683:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 352, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7255:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 378, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '7683:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 351, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7255:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 384, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 357, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 381, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 367, - 'src': '7722:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "argumentTypes": null, + "id": 354, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7294:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, { - 'argumentTypes': null, - 'id': 382, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 361, - 'src': '7740:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 355, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 334, + "src": "7312:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 380, - 'name': 'getSubscriptionSigner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 345, - 'src': '7700:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 353, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "7272:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 383, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7700:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7272:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7683:67:1' + "nodeType": "VariableDeclarationStatement", + "src": "7255:67:1" }, { - 'assignments': [ - 386 + "assignments": [ + 359 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 386, - 'name': 'allowance', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7760:17:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 359, + "name": "allowance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7332:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 385, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7760:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 358, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 396, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 369, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 391, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7810:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 364, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7382:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 393, - 'name': 'this', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1746, - 'src': '7824:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "argumentTypes": null, + "id": 366, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1374, + "src": "7396:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_contract$_Subscription_$695', - 'typeString': 'contract Subscription' + "typeIdentifier": "t_contract$_Subscription_$675", + "typeString": "contract Subscription" } ], - 'id': 392, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '7816:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_address_$', - 'typeString': 'type(address)' + "id": 365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7388:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" }, - 'typeName': 'address' + "typeName": "address" }, - 'id': 394, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7816:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7388:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 388, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7786:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 361, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7358:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 387, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '7780:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 360, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7352:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 389, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7780:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 390, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'allowance', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1156, - 'src': '7780:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address,address) view external returns (uint256)' + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 941, + "src": "7352:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" } }, - 'id': 395, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7780:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7352:50:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7760:70:1' + "nodeType": "VariableDeclarationStatement", + "src": "7332:70:1" }, { - 'assignments': [ - 398 + "assignments": [ + 371 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 398, - 'name': 'balance', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7840:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 371, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 409, + "src": "7412:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 397, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7840:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7412:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 405, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 378, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 403, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7888:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 376, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7460:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 400, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 351, - 'src': '7864:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 373, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 324, + "src": "7436:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 399, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '7858:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 372, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "7430:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 401, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7858:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 402, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '7858:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "7430:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 404, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '7858:35:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7430:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '7840:53:1' + "nodeType": "VariableDeclarationStatement", + "src": "7412:53:1" }, { - 'expression': { - 'argumentTypes': null, - 'components': [ + "expression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 433, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 426, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 419, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'id': 412, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 408, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 406, - 'name': 'signer', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 379, - 'src': '7925:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 379, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "7497:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 407, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7935:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 380, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7507:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '7925:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 411, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 409, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 347, - 'src': '7955:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 382, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "7527:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '!=', - 'rightExpression': { - 'argumentTypes': null, - 'id': 410, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 349, - 'src': '7963:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 322, + "src": "7535:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '7955:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7527:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:40:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 418, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 413, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '7981:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "id": 391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 386, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "7553:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 414, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '7981:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7553:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 415, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '8000:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 388, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "7572:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 417, - 'indexExpression': { - 'argumentTypes': null, - 'id': 416, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 367, - 'src': '8019:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 390, + "indexExpression": { + "argumentTypes": null, + "id": 389, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 340, + "src": "7591:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '8000:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7572:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '7981:55:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7553:55:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:111:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:111:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 425, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 420, - 'name': 'allowance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 386, - 'src': '8052:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 393, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 359, + "src": "7624:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 423, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '8081:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 396, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7653:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 421, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '8065:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 394, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7637:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 422, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '8065:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7637:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 424, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '8065:25:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7637:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '8052:38:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7624:38:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:165:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:165:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'nodeType': 'BinaryOperation', - 'operator': '&&', - 'rightExpression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 432, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 427, - 'name': 'balance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 398, - 'src': '8106:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 400, + "name": "balance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 371, + "src": "7678:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>=', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 430, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 357, - 'src': '8133:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 403, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 330, + "src": "7705:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'id': 428, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 353, - 'src': '8117:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "id": 401, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 326, + "src": "7689:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 429, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '8117:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "7689:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 431, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '8117:25:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7689:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '8106:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7678:36:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'src': '7925:217:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "7497:217:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'id': 434, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '7911:241:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 407, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7483:241:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 365, - 'id': 435, - 'nodeType': 'Return', - 'src': '7904:248:1' + "functionReturnParameters": 338, + "id": 408, + "nodeType": "Return", + "src": "7476:248:1" } ] }, - 'documentation': null, - 'id': 437, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'isSubscriptionReady', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 362, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 410, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isSubscriptionReady", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 347, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '6943:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 346, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6943:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 320, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6508:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6508:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 349, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '6982:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 348, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '6982:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 322, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6547:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6547:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 351, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7018:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 350, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '7018:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 324, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6583:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6583:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 353, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7090:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 352, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7090:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 326, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6655:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6655:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 355, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7160:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 354, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7160:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 328, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6725:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6725:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 357, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7232:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 356, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7232:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 330, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6797:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6797:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 359, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7317:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 358, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '7317:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 332, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6882:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6882:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 361, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7399:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 360, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '7399:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 334, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "6964:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 333, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6964:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '6933:537:1' + "src": "6498:544:1" }, - 'payable': false, - 'returnParameters': { - 'id': 365, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 364, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 437, - 'src': '7516:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 363, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '7516:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 337, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "7088:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 336, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7088:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '7515:6:1' + "src": "7087:6:1" }, - 'scope': 695, - 'src': '6905:1254:1', - 'stateMutability': 'view', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "6470:1261:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 513, - 'nodeType': 'Block', - 'src': '9029:802:1', - 'statements': [ + "body": { + "id": 486, + "nodeType": "Block", + "src": "8606:802:1", + "statements": [ { - 'assignments': [ - 459 + "assignments": [ + 432 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 459, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9039:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 432, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8616:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 458, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '9039:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 469, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 442, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 461, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9099:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 434, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8676:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 462, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 441, - 'src': '9105:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 435, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "8682:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 463, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 443, - 'src': '9109:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 436, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "8686:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 464, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 445, - 'src': '9123:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 437, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "8700:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 465, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 447, - 'src': '9136:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 438, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "8713:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 466, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 449, - 'src': '9151:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 439, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "8728:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 467, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 451, - 'src': '9161:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 440, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "8738:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 460, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '9066:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 433, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "8643:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 468, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9066:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8643:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '9039:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "8616:137:1" }, { - 'assignments': [ - 471 + "assignments": [ + 444 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 471, - 'name': 'signer', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9186:14:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 444, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "8763:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'typeName': { - 'id': 470, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '9186:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeName": { + "id": 443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8763:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 476, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 449, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 473, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 459, - 'src': '9225:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "argumentTypes": null, + "id": 446, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "8802:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, { - 'argumentTypes': null, - 'id': 474, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 453, - 'src': '9243:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes calldata' + "argumentTypes": null, + "id": 447, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 426, + "src": "8820:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes calldata' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 472, - 'name': 'getSubscriptionSigner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 345, - 'src': '9203:21:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', - 'typeString': 'function (bytes32,bytes memory) pure returns (address)' + "id": 445, + "name": "getSubscriptionSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8780:21:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" } }, - 'id': 475, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9203:50:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 448, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8780:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '9186:67:1' + "nodeType": "VariableDeclarationStatement", + "src": "8763:67:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 480, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 478, - 'name': 'signer', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 471, - 'src': '9310:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 451, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 444, + "src": "8887:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 479, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9320:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 452, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "8897:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'src': '9310:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "8887:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', - 'id': 481, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9326:49:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', - 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + "argumentTypes": null, + "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8903:49:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" }, - 'value': 'Invalid Signature for subscription cancellation' + "value": "Invalid Signature for subscription cancellation" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', - 'typeString': 'literal_string "Invalid Signature for subscription cancellation"' + "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", + "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" } ], - 'id': 477, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 450, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '9302:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "8879:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 482, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9302:74:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8879:74:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 483, - 'nodeType': 'ExpressionStatement', - 'src': '9302:74:1' + "id": 456, + "nodeType": "ExpressionStatement", + "src": "8879:74:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - 'id': 488, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 485, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9435:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9012:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 486, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '9443:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "9020:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 487, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '9443:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9020:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '9435:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "9012:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', - 'id': 489, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9455:34:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', - 'typeString': 'literal_string "msg.sender is not the subscriber"' + "argumentTypes": null, + "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9032:34:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" }, - 'value': 'msg.sender is not the subscriber' + "value": "msg.sender is not the subscriber" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', - 'typeString': 'literal_string "msg.sender is not the subscriber"' + "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", + "typeString": "literal_string \"msg.sender is not the subscriber\"" } ], - 'id': 484, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 457, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '9427:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "9004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 490, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9427:63:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9004:63:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 491, - 'nodeType': 'ExpressionStatement', - 'src': '9427:63:1' + "id": 464, + "nodeType": "ExpressionStatement", + "src": "9004:63:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 499, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 492, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '9629:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 465, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "9206:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 494, - 'indexExpression': { - 'argumentTypes': null, - 'id': 493, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 459, - 'src': '9648:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 467, + "indexExpression": { + "argumentTypes": null, + "id": 466, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "9225:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '9629:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9206:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 497, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'UnaryOperation', - 'operator': '-', - 'prefix': true, - 'src': '9674:2:1', - 'subExpression': { - 'argumentTypes': null, - 'hexValue': '31', - 'id': 496, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9675:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_1_by_1', - 'typeString': 'int_const 1' + "argumentTypes": null, + "id": 470, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "9251:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9252:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - 'value': '1' + "value": "1" }, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_rational_-1_by_1', - 'typeString': 'int_const -1' + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" } ], - 'id': 495, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'lValueRequested': false, - 'nodeType': 'ElementaryTypeNameExpression', - 'src': '9666:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_uint256_$', - 'typeString': 'type(uint256)' + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9243:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" }, - 'typeName': 'uint256' + "typeName": "uint256" }, - 'id': 498, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9666:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9243:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '9629:48:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "9206:48:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 500, - 'nodeType': 'ExpressionStatement', - 'src': '9629:48:1' + "id": 473, + "nodeType": "ExpressionStatement", + "src": "9206:48:1" }, { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ + "eventCall": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 502, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 439, - 'src': '9725:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 475, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 412, + "src": "9302:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 503, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 441, - 'src': '9731:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 476, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 414, + "src": "9308:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 504, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 443, - 'src': '9735:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 477, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "9312:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 505, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 445, - 'src': '9749:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 478, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 418, + "src": "9326:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 506, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 447, - 'src': '9762:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 479, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 420, + "src": "9339:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 507, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 449, - 'src': '9777:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 480, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "9354:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 508, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 451, - 'src': '9787:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 481, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "9364:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 501, - 'name': 'CancelSubscription', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 121, - 'src': '9693:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + "id": 474, + "name": "CancelSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 121, + "src": "9270:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" } }, - 'id': 509, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '9693:109:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9270:109:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 510, - 'nodeType': 'EmitStatement', - 'src': '9688:114:1' + "id": 483, + "nodeType": "EmitStatement", + "src": "9265:114:1" }, { - 'expression': { - 'argumentTypes': null, - 'hexValue': '74727565', - 'id': 511, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '9820:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 484, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9397:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'true' + "value": "true" }, - 'functionReturnParameters': 457, - 'id': 512, - 'nodeType': 'Return', - 'src': '9813:11:1' + "functionReturnParameters": 430, + "id": 485, + "nodeType": "Return", + "src": "9390:11:1" } ] }, - 'documentation': null, - 'id': 514, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'cancelSubscription', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 454, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 487, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cancelSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 427, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 439, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8450:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 438, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8450:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 412, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8022:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8022:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 441, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8489:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 440, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8489:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 414, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8061:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8061:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 443, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8525:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 442, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '8525:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 416, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8097:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 415, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8097:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 445, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8597:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 444, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8597:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 418, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8169:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 417, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8169:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 447, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8667:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 446, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8667:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 420, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8239:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 419, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 449, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8739:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 448, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8739:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 422, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8311:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8311:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 451, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8823:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 450, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '8823:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 424, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8395:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8395:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 453, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '8905:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_calldata_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 452, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '8905:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 426, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8477:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8477:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '8440:536:1' + "src": "8012:543:1" }, - 'payable': false, - 'returnParameters': { - 'id': 457, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 430, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 456, - 'name': 'success', - 'nodeType': 'VariableDeclaration', - 'scope': 514, - 'src': '9011:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 455, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '9011:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 429, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 487, + "src": "8588:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 428, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8588:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '9010:14:1' + "src": "8587:14:1" }, - 'scope': 695, - 'src': '8413:1418:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "7985:1423:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 656, - 'nodeType': 'Block', - 'src': '10605:2428:1', - 'statements': [ + "body": { + "id": 636, + "nodeType": "Block", + "src": "10189:2468:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 509, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 511, + "name": "relayer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "10221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10207:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 508, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 + ], + "referencedDeclaration": 1354, + "src": "10199:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10199:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 514, + "nodeType": "ExpressionStatement", + "src": "10199:30:1" + }, { - 'assignments': [ - 536 + "assignments": [ + 516 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 536, - 'name': 'subscriptionHash', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10615:24:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "constant": false, + "id": 516, + "name": "subscriptionHash", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "10239:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - 'typeName': { - 'id': 535, - 'name': 'bytes32', - 'nodeType': 'ElementaryTypeName', - 'src': '10615:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "typeName": { + "id": 515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 546, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 526, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 538, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '10675:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 518, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10299:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 539, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '10681:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 519, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10305:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 540, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '10685:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 520, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10309:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 541, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '10699:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 521, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10323:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 542, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '10712:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 522, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10336:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 543, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '10727:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 523, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10351:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 544, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '10737:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 524, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10361:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 537, - 'name': 'getSubscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 328, - 'src': '10642:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' + "id": 517, + "name": "getSubscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 301, + "src": "10266:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" } }, - 'id': 545, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10642:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10266:110:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '10615:137:1' + "nodeType": "VariableDeclarationStatement", + "src": "10239:137:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [ + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 549, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '10849:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 529, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10473:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 550, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '10855:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 530, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "10479:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 551, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '10859:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 531, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "10483:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 552, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '10873:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 532, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "10497:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 553, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '10886:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 533, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10510:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 554, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '10901:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 534, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "10525:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 555, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '10911:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 535, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10535:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 556, - 'name': 'signature', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 530, - 'src': '10918:9:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "argumentTypes": null, + "id": 536, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 503, + "src": "10542:9:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes memory' + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } ], - 'id': 548, - 'name': 'isSubscriptionReady', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 437, - 'src': '10829:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' + "id": 528, + "name": "isSubscriptionReady", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 410, + "src": "10453:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" } }, - 'id': 557, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10829:99:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10453:99:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', - 'id': 558, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '10930:67:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', - 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10554:67:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" }, - 'value': 'Subscription is not ready or conditions of transction are not met' + "value": "Subscription is not ready or conditions of transction are not met" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', - 'typeString': 'literal_string "Subscription is not ready or conditions of transction are not met"' + "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", + "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" } ], - 'id': 547, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 527, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '10820:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "10444:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 559, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '10820:179:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10444:179:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 560, - 'nodeType': 'ExpressionStatement', - 'src': '10820:179:1' + "id": 540, + "nodeType": "ExpressionStatement", + "src": "10444:179:1" }, { - 'expression': { - 'argumentTypes': null, - 'id': 569, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 561, - 'name': 'nextValidTimestamp', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 85, - 'src': '11089:18:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', - 'typeString': 'mapping(bytes32 => uint256)' + "expression": { + "argumentTypes": null, + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 541, + "name": "nextValidTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "10713:18:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" } }, - 'id': 563, - 'indexExpression': { - 'argumentTypes': null, - 'id': 562, - 'name': 'subscriptionHash', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 536, - 'src': '11108:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes32', - 'typeString': 'bytes32' + "id": 543, + "indexExpression": { + "argumentTypes": null, + "id": 542, + "name": "subscriptionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10732:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '11089:36:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10713:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 567, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '11148:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 547, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "10772:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 564, - 'name': 'block', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1713, - 'src': '11128:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_block', - 'typeString': 'block' + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 544, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1341, + "src": "10752:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" } }, - 'id': 565, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'timestamp', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '11128:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10752:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 566, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'add', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1078, - 'src': '11128:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', - 'typeString': 'function (uint256,uint256) pure returns (uint256)' + "id": 546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 863, + "src": "10752:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - 'id': 568, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11128:34:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10752:34:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11089:73:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "10713:73:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 570, - 'nodeType': 'ExpressionStatement', - 'src': '11089:73:1' + "id": 550, + "nodeType": "ExpressionStatement", + "src": "10713:73:1" }, { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 575, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 571, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11281:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 551, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10905:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>', - 'rightExpression': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 572, - 'name': 'extraNonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 89, - 'src': '11289:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 552, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10913:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - 'id': 574, - 'indexExpression': { - 'argumentTypes': null, - 'id': 573, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11300:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 554, + "indexExpression": { + "argumentTypes": null, + "id": 553, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10924:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'IndexAccess', - 'src': '11289:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10913:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11281:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "10905:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 583, - 'nodeType': 'IfStatement', - 'src': '11278:75:1', - 'trueBody': { - 'id': 582, - 'nodeType': 'Block', - 'src': '11306:47:1', - 'statements': [ + "falseBody": null, + "id": 563, + "nodeType": "IfStatement", + "src": "10902:75:1", + "trueBody": { + "id": 562, + "nodeType": "Block", + "src": "10930:47:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'id': 580, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftHandSide': { - 'argumentTypes': null, - 'baseExpression': { - 'argumentTypes': null, - 'id': 576, - 'name': 'extraNonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 89, - 'src': '11318:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', - 'typeString': 'mapping(address => uint256)' + "expression": { + "argumentTypes": null, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 556, + "name": "extraNonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "10942:10:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - 'id': 578, - 'indexExpression': { - 'argumentTypes': null, - 'id': 577, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11329:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 558, + "indexExpression": { + "argumentTypes": null, + "id": 557, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "10953:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'isConstant': false, - 'isLValue': true, - 'isPure': false, - 'lValueRequested': true, - 'nodeType': 'IndexAccess', - 'src': '11318:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10942:16:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'Assignment', - 'operator': '=', - 'rightHandSide': { - 'argumentTypes': null, - 'id': 579, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11337:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 559, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "10961:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11318:24:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "10942:24:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'id': 581, - 'nodeType': 'ExpressionStatement', - 'src': '11318:24:1' + "id": 561, + "nodeType": "ExpressionStatement", + "src": "10942:24:1" } ] } }, { - 'assignments': [ - 585 + "assignments": [ + 565 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 585, - 'name': 'startingBalance', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '11438:23:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 565, + "name": "startingBalance", + "nodeType": "VariableDeclaration", + "scope": 636, + "src": "11062:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 584, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '11438:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11062:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 592, - 'initialValue': { - 'argumentTypes': null, - 'arguments': [ + "id": 572, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 590, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11494:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 570, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11118:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 587, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11470:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 567, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11094:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 586, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11464:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 566, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11088:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 588, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11464:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 589, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '11464:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11088:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 591, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11464:33:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11088:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '11438:59:1' + "nodeType": "VariableDeclarationStatement", + "src": "11062:59:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 597, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11540:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 577, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11164:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 598, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11545:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 578, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11169:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 599, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11548:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 579, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11172:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 594, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11513:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 574, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11137:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 593, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11507:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 573, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 595, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11507:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 596, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'transferFrom', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1338, - 'src': '11507:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', - 'typeString': 'function (address,address,uint256) external returns (bool)' + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "11131:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" } }, - 'id': 600, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11507:53:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11131:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'id': 601, - 'nodeType': 'ExpressionStatement', - 'src': '11507:53:1' + "id": 581, + "nodeType": "ExpressionStatement", + "src": "11131:53:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 613, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'components': [ + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 605, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 603, - 'name': 'startingBalance', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 585, - 'src': '11590:15:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 583, + "name": "startingBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 565, + "src": "11214:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '+', - 'rightExpression': { - 'argumentTypes': null, - 'id': 604, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11606:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 584, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11230:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11590:27:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "src": "11214:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'id': 606, - 'isConstant': false, - 'isInlineArray': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'nodeType': 'TupleExpression', - 'src': '11589:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 586, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11213:29:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'arguments': [ + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 611, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11652:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 591, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11276:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 608, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11628:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 588, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11252:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 607, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '11622:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 587, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "11246:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 609, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11622:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 610, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'balanceOf', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1140, - 'src': '11622:29:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', - 'typeString': 'function (address) view external returns (uint256)' + "id": 590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balanceOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 925, + "src": "11246:29:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" } }, - 'id': 612, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11622:33:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11246:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'src': '11589:66:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "11213:66:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', - 'id': 614, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '11667:40:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', - 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + "argumentTypes": null, + "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", + "id": 594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11291:40:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" }, - 'value': 'ERC20 Balance did not change correctly' + "value": "ERC20 Balance did not change correctly" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', - 'typeString': 'literal_string "ERC20 Balance did not change correctly"' + "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", + "typeString": "literal_string \"ERC20 Balance did not change correctly\"" } ], - 'id': 602, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '11570:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "11194:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 615, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11570:147:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11194:147:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 616, - 'nodeType': 'ExpressionStatement', - 'src': '11570:147:1' + "id": 596, + "nodeType": "ExpressionStatement", + "src": "11194:147:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 618, - 'name': 'checkSuccess', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 672, - 'src': '11747:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', - 'typeString': 'function () pure returns (bool)' + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 598, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "11371:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" } }, - 'id': 619, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11747:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11371:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', - 'id': 620, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '11773:55:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', - 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11397:55:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" }, - 'value': 'Subscription::executeSubscription TransferFrom failed' + "value": "Subscription::executeSubscription TransferFrom failed" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', - 'typeString': 'literal_string "Subscription::executeSubscription TransferFrom failed"' + "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", + "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" } ], - 'id': 617, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 597, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '11728:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "11352:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 621, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11728:112:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11352:112:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 622, - 'nodeType': 'ExpressionStatement', - 'src': '11728:112:1' + "id": 602, + "nodeType": "ExpressionStatement", + "src": "11352:112:1" }, { - 'eventCall': { - 'argumentTypes': null, - 'arguments': [ + "eventCall": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 624, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '11890:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 604, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "11514:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 625, - 'name': 'to', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 518, - 'src': '11896:2:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 605, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "11520:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 626, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '11900:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 606, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "11524:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'id': 627, - 'name': 'tokenAmount', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 522, - 'src': '11914:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 607, + "name": "tokenAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 495, + "src": "11538:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 628, - 'name': 'periodSeconds', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 524, - 'src': '11927:13:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 608, + "name": "periodSeconds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 497, + "src": "11551:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 629, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '11942:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 609, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11566:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, { - 'argumentTypes': null, - 'id': 630, - 'name': 'nonce', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 528, - 'src': '11952:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 610, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 501, + "src": "11576:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'id': 623, - 'name': 'ExecuteSubscription', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 105, - 'src': '11857:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', - 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' + "id": 603, + "name": "ExecuteSubscription", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "11481:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" } }, - 'id': 631, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '11857:110:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 611, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11481:110:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 632, - 'nodeType': 'EmitStatement', - 'src': '11852:115:1' + "id": 612, + "nodeType": "EmitStatement", + "src": "11476:115:1" }, { - 'condition': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 635, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 633, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '12187:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 613, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "11811:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '>', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 634, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '12198:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '12187:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "11811:12:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'falseBody': null, - 'id': 653, - 'nodeType': 'IfStatement', - 'src': '12183:822:1', - 'trueBody': { - 'id': 652, - 'nodeType': 'Block', - 'src': '12201:804:1', - 'statements': [ + "falseBody": null, + "id": 633, + "nodeType": "IfStatement", + "src": "11807:822:1", + "trueBody": { + "id": 632, + "nodeType": "Block", + "src": "11825:804:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 640, - 'name': 'from', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 516, - 'src': '12813:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 620, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "12437:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 641, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '12819:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "12443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 642, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '12819:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, { - 'argumentTypes': null, - 'id': 643, - 'name': 'gasPrice', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 526, - 'src': '12831:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "argumentTypes": null, + "id": 623, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 499, + "src": "12455:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" }, { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 637, - 'name': 'tokenAddress', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 520, - 'src': '12786:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 617, + "name": "tokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "12410:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address", + "typeString": "address" } ], - 'id': 636, - 'name': 'ERC20', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1568, - 'src': '12780:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_type$_t_contract$_ERC20_$1568_$', - 'typeString': 'type(contract ERC20)' + "id": 616, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1267, + "src": "12404:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", + "typeString": "type(contract ERC20)" } }, - 'id': 638, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'typeConversion', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12780:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_contract$_ERC20_$1568', - 'typeString': 'contract ERC20' + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:19:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$1267", + "typeString": "contract ERC20" } }, - 'id': 639, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'transferFrom', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': 1338, - 'src': '12780:32:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', - 'typeString': 'function (address,address,uint256) external returns (bool)' + "id": 619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1014, + "src": "12404:32:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" } }, - 'id': 644, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12780:60:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12404:60:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'id': 645, - 'nodeType': 'ExpressionStatement', - 'src': '12780:60:1' + "id": 625, + "nodeType": "ExpressionStatement", + "src": "12404:60:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 647, - 'name': 'checkSuccess', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 672, - 'src': '12879:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', - 'typeString': 'function () pure returns (bool)' + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 627, + "name": "checkSuccess", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 652, + "src": "12503:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", + "typeString": "function () pure returns (bool)" } }, - 'id': 648, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12879:14:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12503:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, { - 'argumentTypes': null, - 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', - 'id': 649, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'string', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '12911:69:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', - 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + "argumentTypes": null, + "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12535:69:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" }, - 'value': 'Subscription::executeSubscription Failed to pay gas as from account' + "value": "Subscription::executeSubscription Failed to pay gas as from account" } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" }, { - 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', - 'typeString': 'literal_string "Subscription::executeSubscription Failed to pay gas as from account"' + "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", + "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" } ], - 'id': 646, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 626, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1727, - 'src': '12854:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', - 'typeString': 'function (bool,string memory) pure' + "referencedDeclaration": 1355, + "src": "12478:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - 'id': 650, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '12854:140:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12478:140:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 651, - 'nodeType': 'ExpressionStatement', - 'src': '12854:140:1' + "id": 631, + "nodeType": "ExpressionStatement", + "src": "12478:140:1" } ] } }, { - 'expression': { - 'argumentTypes': null, - 'hexValue': '74727565', - 'id': 654, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'bool', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '13022:4:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12646:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" }, - 'value': 'true' + "value": "true" }, - 'functionReturnParameters': 534, - 'id': 655, - 'nodeType': 'Return', - 'src': '13015:11:1' + "functionReturnParameters": 507, + "id": 635, + "nodeType": "Return", + "src": "12639:11:1" } ] }, - 'documentation': null, - 'id': 657, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'executeSubscription', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 531, - 'nodeType': 'ParameterList', - 'parameters': [ + "documentation": null, + "id": 637, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "executeSubscription", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 504, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 516, - 'name': 'from', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10027:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 515, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10027:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 489, + "name": "from", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9604:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9604:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 518, - 'name': 'to', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10066:10:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 517, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10066:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 491, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9643:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 490, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9643:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 520, - 'name': 'tokenAddress', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10102:20:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' - }, - 'typeName': { - 'id': 519, - 'name': 'address', - 'nodeType': 'ElementaryTypeName', - 'src': '10102:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "constant": false, + "id": 493, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9679:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9679:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 522, - 'name': 'tokenAmount', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10174:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 521, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10174:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 495, + "name": "tokenAmount", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9751:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9751:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 524, - 'name': 'periodSeconds', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10244:21:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 523, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10244:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 497, + "name": "periodSeconds", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9821:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 496, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9821:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 526, - 'name': 'gasPrice', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10316:16:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 525, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10316:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 499, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9893:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 528, - 'name': 'nonce', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10400:13:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' - }, - 'typeName': { - 'id': 527, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '10400:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 501, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "9977:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9977:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" }, { - 'constant': false, - 'id': 530, - 'name': 'signature', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10483:15:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_memory_ptr', - 'typeString': 'bytes' - }, - 'typeName': { - 'id': 529, - 'name': 'bytes', - 'nodeType': 'ElementaryTypeName', - 'src': '10483:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bytes_storage_ptr', - 'typeString': 'bytes' + "constant": false, + "id": 503, + "name": "signature", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10060:22:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 502, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10060:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '10017:537:1' + "src": "9594:544:1" }, - 'payable': false, - 'returnParameters': { - 'id': 534, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 533, - 'name': 'success', - 'nodeType': 'VariableDeclaration', - 'scope': 657, - 'src': '10587:12:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 532, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '10587:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 506, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 637, + "src": "10171:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 505, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10171:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '10586:14:1' + "src": "10170:14:1" }, - 'scope': 695, - 'src': '9989:3044:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "9566:3091:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - 'body': { - 'id': 671, - 'nodeType': 'Block', - 'src': '13533:770:1', - 'statements': [ + "body": { + "id": 651, + "nodeType": "Block", + "src": "13157:770:1", + "statements": [ { - 'assignments': [ - 663 + "assignments": [ + 643 ], - 'declarations': [ + "declarations": [ { - 'constant': false, - 'id': 663, - 'name': 'returnValue', - 'nodeType': 'VariableDeclaration', - 'scope': 672, - 'src': '13543:19:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "constant": false, + "id": 643, + "name": "returnValue", + "nodeType": "VariableDeclaration", + "scope": 651, + "src": "13167:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'typeName': { - 'id': 662, - 'name': 'uint256', - 'nodeType': 'ElementaryTypeName', - 'src': '13543:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13167:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'id': 665, - 'initialValue': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 664, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '13565:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "id": 645, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13189:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'nodeType': 'VariableDeclarationStatement', - 'src': '13543:23:1' + "nodeType": "VariableDeclarationStatement", + "src": "13167:23:1" }, { - 'externalReferences': [ + "externalReferences": [ { - 'returnValue': { - 'declaration': 663, - 'isOffset': false, - 'isSlot': false, - 'src': '14125:11:1', - 'valueSize': 1 + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13472:11:1", + "valueSize": 1 } }, { - 'returnValue': { - 'declaration': 663, - 'isOffset': false, - 'isSlot': false, - 'src': '13848:11:1', - 'valueSize': 1 + "returnValue": { + "declaration": 643, + "isOffset": false, + "isSlot": false, + "src": "13749:11:1", + "valueSize": 1 } } ], - 'id': 666, - 'nodeType': 'InlineAssembly', - 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', - 'src': '13644:635:1' + "id": 646, + "nodeType": "InlineAssembly", + "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", + "src": "13268:635:1" }, { - 'expression': { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - 'id': 669, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'id': 667, - 'name': 'returnValue', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 663, - 'src': '14280:11:1', - 'typeDescriptions': { - 'typeIdentifier': 't_uint256', - 'typeString': 'uint256' + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 647, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "13904:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - 'nodeType': 'BinaryOperation', - 'operator': '!=', - 'rightExpression': { - 'argumentTypes': null, - 'hexValue': '30', - 'id': 668, - 'isConstant': false, - 'isLValue': false, - 'isPure': true, - 'kind': 'number', - 'lValueRequested': false, - 'nodeType': 'Literal', - 'src': '14295:1:1', - 'subdenomination': null, - 'typeDescriptions': { - 'typeIdentifier': 't_rational_0_by_1', - 'typeString': 'int_const 0' + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13919:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - 'value': '0' + "value": "0" }, - 'src': '14280:16:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "13904:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'functionReturnParameters': 661, - 'id': 670, - 'nodeType': 'Return', - 'src': '14273:23:1' + "functionReturnParameters": 641, + "id": 650, + "nodeType": "Return", + "src": "13897:23:1" } ] }, - 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', - 'id': 672, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': true, - 'modifiers': [], - 'name': 'checkSuccess', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 658, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '13469:7:1' + "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", + "id": 652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkSuccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [], + "src": "13093:7:1" }, - 'payable': false, - 'returnParameters': { - 'id': 661, - 'nodeType': 'ParameterList', - 'parameters': [ + "returnParameters": { + "id": 641, + "nodeType": "ParameterList", + "parameters": [ { - 'constant': false, - 'id': 660, - 'name': '', - 'nodeType': 'VariableDeclaration', - 'scope': 672, - 'src': '13523:4:1', - 'stateVariable': false, - 'storageLocation': 'default', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' - }, - 'typeName': { - 'id': 659, - 'name': 'bool', - 'nodeType': 'ElementaryTypeName', - 'src': '13523:4:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "constant": false, + "id": 640, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 652, + "src": "13147:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13147:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - 'value': null, - 'visibility': 'internal' + "value": null, + "visibility": "internal" } ], - 'src': '13522:6:1' + "src": "13146:6:1" }, - 'scope': 695, - 'src': '13448:855:1', - 'stateMutability': 'pure', - 'superFunction': null, - 'visibility': 'private' + "scope": 675, + "src": "13072:855:1", + "stateMutability": "pure", + "superFunction": null, + "visibility": "private" }, { - 'body': { - 'id': 686, - 'nodeType': 'Block', - 'src': '14476:68:1', - 'statements': [ + "body": { + "id": 666, + "nodeType": "Block", + "src": "14101:70:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'commonType': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" }, - 'id': 679, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'leftExpression': { - 'argumentTypes': null, - 'expression': { - 'argumentTypes': null, - 'id': 676, - 'name': 'msg', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1723, - 'src': '14492:3:1', - 'typeDescriptions': { - 'typeIdentifier': 't_magic_message', - 'typeString': 'msg' + "id": 659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 656, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1351, + "src": "14117:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - 'id': 677, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'lValueRequested': false, - 'memberName': 'sender', - 'nodeType': 'MemberAccess', - 'referencedDeclaration': null, - 'src': '14492:10:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14117:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'nodeType': 'BinaryOperation', - 'operator': '==', - 'rightExpression': { - 'argumentTypes': null, - 'id': 678, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '14504:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 658, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14129:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } }, - 'src': '14492:17:1', - 'typeDescriptions': { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "src": "14117:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_bool', - 'typeString': 'bool' + "typeIdentifier": "t_bool", + "typeString": "bool" } ], - 'id': 675, - 'name': 'require', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1726, - 1727 + "id": 655, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1354, + 1355 ], - 'referencedDeclaration': 1726, - 'src': '14484:7:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', - 'typeString': 'function (bool) pure' + "referencedDeclaration": 1354, + "src": "14109:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - 'id': 680, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14484:26:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14109:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 681, - 'nodeType': 'ExpressionStatement', - 'src': '14484:26:1' + "id": 661, + "nodeType": "ExpressionStatement", + "src": "14109:27:1" }, { - 'expression': { - 'argumentTypes': null, - 'arguments': [ + "expression": { + "argumentTypes": null, + "arguments": [ { - 'argumentTypes': null, - 'id': 683, - 'name': 'owner', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 69, - 'src': '14531:5:1', - 'typeDescriptions': { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "argumentTypes": null, + "id": 663, + "name": "author", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "14157:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } } ], - 'expression': { - 'argumentTypes': [ + "expression": { + "argumentTypes": [ { - 'typeIdentifier': 't_address', - 'typeString': 'address' + "typeIdentifier": "t_address_payable", + "typeString": "address payable" } ], - 'id': 682, - 'name': 'selfdestruct', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [], - 'referencedDeclaration': 1731, - 'src': '14518:12:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_$returns$__$', - 'typeString': 'function (address)' + "id": 662, + "name": "selfdestruct", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1359, + "src": "14144:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", + "typeString": "function (address payable)" } }, - 'id': 684, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14518:19:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14144:20:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 685, - 'nodeType': 'ExpressionStatement', - 'src': '14518:19:1' + "id": 665, + "nodeType": "ExpressionStatement", + "src": "14144:20:1" } ] }, - 'documentation': null, - 'id': 687, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': 'endContract', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 673, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14452:2:1' + "documentation": null, + "id": 667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "endContract", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 653, + "nodeType": "ParameterList", + "parameters": [], + "src": "14077:2:1" }, - 'payable': false, - 'returnParameters': { - 'id': 674, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14476:0:1' + "returnParameters": { + "id": 654, + "nodeType": "ParameterList", + "parameters": [], + "src": "14101:0:1" }, - 'scope': 695, - 'src': '14432:112:1', - 'stateMutability': 'nonpayable', - 'superFunction': null, - 'visibility': 'external' + "scope": 675, + "src": "14057:114:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" }, { - 'body': { - 'id': 693, - 'nodeType': 'Block', - 'src': '14647:24:1', - 'statements': [ + "body": { + "id": 673, + "nodeType": "Block", + "src": "14277:25:1", + "statements": [ { - 'expression': { - 'argumentTypes': null, - 'arguments': [], - 'expression': { - 'argumentTypes': [], - 'id': 690, - 'name': 'revert', - 'nodeType': 'Identifier', - 'overloadedDeclarations': [ - 1728, - 1729 + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 670, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1356, + 1357 ], - 'referencedDeclaration': 1728, - 'src': '14656:6:1', - 'typeDescriptions': { - 'typeIdentifier': 't_function_revert_pure$__$returns$__$', - 'typeString': 'function () pure' + "referencedDeclaration": 1356, + "src": "14286:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" } }, - 'id': 691, - 'isConstant': false, - 'isLValue': false, - 'isPure': false, - 'kind': 'functionCall', - 'lValueRequested': false, - 'names': [], - 'nodeType': 'FunctionCall', - 'src': '14656:8:1', - 'typeDescriptions': { - 'typeIdentifier': 't_tuple$__$', - 'typeString': 'tuple()' + "id": 671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14286:9:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - 'id': 692, - 'nodeType': 'ExpressionStatement', - 'src': '14656:8:1' + "id": 672, + "nodeType": "ExpressionStatement", + "src": "14286:9:1" } ] }, - 'documentation': null, - 'id': 694, - 'implemented': true, - 'isConstructor': false, - 'isDeclaredConst': false, - 'modifiers': [], - 'name': '', - 'nodeType': 'FunctionDefinition', - 'parameters': { - 'id': 688, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14629:2:1' + "documentation": null, + "id": 674, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 668, + "nodeType": "ParameterList", + "parameters": [], + "src": "14257:2:1" }, - 'payable': true, - 'returnParameters': { - 'id': 689, - 'nodeType': 'ParameterList', - 'parameters': [], - 'src': '14647:0:1' + "returnParameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [], + "src": "14277:0:1" }, - 'scope': 695, - 'src': '14621:50:1', - 'stateMutability': 'payable', - 'superFunction': null, - 'visibility': 'public' + "scope": 675, + "src": "14248:54:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" } ], - 'scope': 696, - 'src': '1097:13576:1' + "scope": 676, + "src": "1091:13213:1" } ], - 'src': '0:14674:1' + "src": "0:14305:1" + }, + "compiler": { + "name": "solc", + "version": "0.5.2+commit.1df8f40c.Emscripten.clang" }, - 'compiler': { - 'name': 'solc', - 'version': '0.4.24+commit.e67f0147.Emscripten.clang' + "networks": {}, + "schemaVersion": "3.0.6", + "updatedAt": "2019-05-12T15:53:10.470Z", + "devdoc": { + "methods": {} }, - 'networks': {}, - 'schemaVersion': '2.0.0', - 'updatedAt': '2018-12-17T20:06:15.555Z' + "userdoc": { + "methods": {} + } }; diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 0b735e17fea..7e8641c61fa 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -1,12 +1,16 @@ /* eslint-disable no-console */ let deployedToken; +let deployedSubscription; let tokenAddress; let redirectURL; let realPeriodSeconds = 0; let selected_token; $(document).ready(function() { - let gitcoinDonationAddress = '0x00De4B13153673BCAE2616b67bf822500d325Fc3'; + //let gitcoinDonationAddress = '0x00De4B13153673BCAE2616b67bf822500d325Fc3'; + // for testing + let gitcoinDonationAddress = '0x16101fA7bAd6788bcDff881c8e56779c9733407A'; + $('.js-select2').each(function() { $(this).select2(); @@ -119,7 +123,6 @@ $(document).ready(function() { } } - let deployedSubscription; if (data.contract_version == 0) { deployedSubscription = new web3.eth.Contract(compiledSubscription0.abi, data.contract_address); @@ -130,10 +133,14 @@ $(document).ready(function() { if (data.token_address != '0x0000000000000000000000000000000000000000') { selected_token = data.token_address; deployedToken = new web3.eth.Contract(compiledToken.abi, data.token_address); + console.log('data.token_address is set, skipping denomination ' + data.token_address); } else { selected_token = data.denomination; deployedToken = new web3.eth.Contract(compiledToken.abi, data.denomination); + console.log('data.token_address is 0x0, denomination is ' + selected_token); $('#token_symbol').val($('#js-token option:selected').text()); + $('#token_address').val(selected_token); + data.token_address = selected_token; } if (!selected_token) { @@ -142,6 +149,7 @@ $(document).ready(function() { } tokenAddress = data.token_address; + console.log('tokenAddress: ' + tokenAddress); deployedToken.methods.decimals().call(function(err, decimals) { if (err) { @@ -149,14 +157,9 @@ $(document).ready(function() { return; } - let realGasPrice = 0; // zero cost metatxs - if (realPeriodSeconds < 2592000) { - // charge gas for intervals less than a month - realGasPrice = Math.ceil($('#gasPrice').val() * Math.pow(10, 9)); - } - $('#gas_price').val(realGasPrice); + let realTokenAmount = Number(data.amount_per_period * Math.pow(10, decimals)); let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); @@ -164,11 +167,25 @@ $(document).ready(function() { if (data.contract_version == 0) { // version 0 of the contract has no fee + console.log('feeless'); realApproval = Number((grant_amount * data.num_periods * Math.pow(10, decimals)) + 1); } else if (data.contract_version == 1) { + console.log('feefull'); + console.log('gitcoin amt:' + gitcoin_grant_amount); + console.log('grant amt:' + grant_amount); realApproval = Number(((grant_amount + gitcoin_grant_amount) * data.num_periods * Math.pow(10, decimals)) + 1); + console.log('realApproval: ' + realApproval); } + let realGasPrice = Number(gitcoin_grant_amount * Math.pow(10, decimals)); // optional grants fee + + $('#gas_price').val(realGasPrice); + + // if (realPeriodSeconds < 2592000) { + // charge gas for intervals less than a month + // realGasPrice = Math.ceil($('#gasPrice').val() * Math.pow(10, 9)); + //} + let approvalSTR = realApproval.toLocaleString('fullwide', { useGrouping: false }); web3.eth.getAccounts(function(err, accounts) { @@ -177,12 +194,20 @@ $(document).ready(function() { let url; + var approvalAddress; + + if (data.num_periods == 1) { + approvalAddress = splitterAddress; + } else { + approvalAddress = data.contract_address; + } + deployedToken.methods.approve( - data.contract_address, + approvalAddress, web3.utils.toTwosComplement(approvalSTR) ).send({ from: accounts[0], - gasPrice: web3.toHex($('#gasPrice').val() * Math.pow(10, 9)) + gasPrice: web3.utils.toHex($('#gasPrice').val() * Math.pow(10, 9)) }).on('error', function(error) { console.log('1', error); _alert({ message: gettext('Your approval transaction failed. Please try again.')}, 'error'); @@ -266,22 +291,25 @@ const subscribeToGrant = (transactionHash, amountSTR) => { // TODO: fix the tweet modal $('#tweetModal').modal('show'); web3.eth.getAccounts(function(err, accounts) { + deployedToken.methods.decimals().call(function(err, decimals) { - deployedSubscription.methods.extraNonce(accounts[0]).call(function(err, nonce) { + deployedSubscription.methods.extraNonce(accounts[0]).call(function(err, nonce) { - nonce = parseInt(nonce) + 1; + nonce = parseInt(nonce) + 1; - const parts = [ - web3.utils.toChecksumAddress(accounts[0]), // subscriber address - web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address - web3.utils.toChecksumAddress(selected_token), // token denomination / address - web3.utils.toTwosComplement(amountSTR), // data.amount_per_period - web3.utils.toTwosComplement(realPeriodSeconds), - web3.utils.toTwosComplement(data.gas_price), - web3.utils.toTwosComplement(nonce) - ]; + const parts = [ + web3.utils.toChecksumAddress(accounts[0]), // subscriber address + web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address + web3.utils.toChecksumAddress(selected_token), // token denomination / address + //web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})), + web3.utils.toTwosComplement(amountSTR), + web3.utils.toTwosComplement(realPeriodSeconds), + web3.utils.toTwosComplement(data.gas_price), + web3.utils.toTwosComplement(nonce) + ]; - processSubscriptionHash(parts); + processSubscriptionHash(parts); + }); }); }); }; @@ -347,10 +375,20 @@ const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { }); saveSubscription(data, true); // TODO: deploy production splitter and change address on network - let deployedSplitter = new web3.eth.Contract(compiledSplitter.abiDefinition, '0xe2fd6dfe7f371e884e782d46f043552421b3a9d9'); + let deployedSplitter = new web3.eth.Contract(compiledSplitter.abiDefinition, splitterAddress); + + let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); + + console.log('splitting payment') + console.log('tofirst: ' + toFirst); + console.log('tosecond: ' + toSecond); + console.log('valueFirst: ' + valueFirst); + console.log('valueSecond: ' + valueSecond); + console.log('tokenADdress: ' + tokenAddress); deployedSplitter.methods.splitTransfer(toFirst, toSecond, valueFirst, valueSecond, tokenAddress).send({ - from: account + from: account, + gas: web3.utils.toHex(100000) }).on('error', function(error) { console.log('1', error); _alert({ message: gettext('Your payment transaction failed. Please try again.')}, 'error'); diff --git a/app/assets/v2/js/grants/new.js b/app/assets/v2/js/grants/new.js index de0bd994c57..a1191611956 100644 --- a/app/assets/v2/js/grants/new.js +++ b/app/assets/v2/js/grants/new.js @@ -92,6 +92,7 @@ const init = () => { // Begin New Deploy Subscription Contract let SubscriptionContract = new web3.eth.Contract(compiledSubscription.abi); + console.log(compiledSubscription.abi); // These args are baseline requirements for the contract set by the sender. Will set most to zero to abstract complexity from user. let args = [ @@ -106,7 +107,9 @@ const init = () => { // data.gas_price web3.utils.toTwosComplement(0), // contract version - web3.utils.toTwosComplement(0) + web3.utils.toTwosComplement(1), + // trusted relayer + web3.utils.toChecksumAddress(data.trusted_relayer) ]; web3.eth.getAccounts(function(err, accounts) { diff --git a/app/assets/v2/js/grants/shared.js b/app/assets/v2/js/grants/shared.js index 5956f776599..6c44c4b0c04 100644 --- a/app/assets/v2/js/grants/shared.js +++ b/app/assets/v2/js/grants/shared.js @@ -1,7 +1,7 @@ // outside of document.ready to be in global scope var compiledSubscription; var compiledSplitter; -var splitterAddress; +var splitterAddress = '0xe2fd6dfe7f371e884e782d46f043552421b3a9d9'; var contractVersion; // Waiting State screen @@ -149,12 +149,16 @@ $(document).ready(function() { if (contractVersion) { if (contractVersion == 0) { + console.log('loading contract 0'); compiledSubscription = compiledSubscription0; } else if (contractVersion == 1) { + console.log('loading contract 1'); compiledSubscription = compiledSubscription1; } } + console.log('compiled subscription is: ' + JSON.stringify(compiledSubscription.abi)); + compiledSplitter = compiledSplitter0; const listen_web3_1_changes = () => { diff --git a/app/grants/management/commands/subminer.py b/app/grants/management/commands/subminer.py index e861caf9f04..ab5c86fe063 100644 --- a/app/grants/management/commands/subminer.py +++ b/app/grants/management/commands/subminer.py @@ -59,6 +59,8 @@ def process_subscription(subscription, live): " --- %s, %s, %s, %s", are_we_past_next_valid_timestamp, is_ready_to_be_processed_web3, is_active_web3, signer, ) + logger.info("Grant Version is %s" % subscription.grant.contract_version) + logger.info("metatx relayer gasPrice is %s" % web3_hash_arguments['gasPrice']) if not are_we_past_next_valid_timestamp: logger.info(f" -- ( NOT ready via web3, will be ready on {subscription.get_next_valid_timestamp()}) ") diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 5516684f590..3e1e7453cdd 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -134,6 +134,7 @@
{% trans "Gas Settings" %}
+
diff --git a/app/grants/views.py b/app/grants/views.py index 99eaefa8a32..5308cedce5a 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -320,6 +320,7 @@ def grant_new(request): 'eth_usd_conv_rate': eth_usd_conv_rate(), 'conf_time_spread': conf_time_spread(), 'gas_advisories': gas_advisories(), + 'trusted_relayer': settings.GRANTS_OWNER_ACCOUNT } return TemplateResponse(request, 'grants/new.html', params) From 68226f63d1e97e64d3c4a48c0df64322672dac71 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 21 May 2019 23:30:06 +0900 Subject: [PATCH 13/25] working fee on contract v1 --- app/assets/v2/js/grants/fund.js | 83 +++++++++++++++++---------------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 7e8641c61fa..182faa1b108 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -162,7 +162,7 @@ $(document).ready(function() { let realTokenAmount = Number(data.amount_per_period * Math.pow(10, decimals)); - let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); + //let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); let realApproval; if (data.contract_version == 0) { @@ -216,7 +216,7 @@ $(document).ready(function() { // call splitter after approval splitPayment(accounts[0], data.admin_address, gitcoinDonationAddress, Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false}), Number(gitcoin_grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})); } else { - subscribeToGrant(transactionHash, amountSTR); + subscribeToGrant(transactionHash); } }).on('confirmation', function(confirmationNumber, receipt) { waitforData(() => { @@ -254,44 +254,44 @@ $(document).ready(function() { }); // waitforWeb3 }); // document ready -const subscribeToGrant = (transactionHash, amountSTR) => { - $('#sub_new_approve_tx_id').val(transactionHash); - const linkURL = etherscan_tx_url(transactionHash); - let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); - let data = { - 'contributor_address': $('#contributor_address').val(), - 'amount_per_period': $('#amount').val(), - 'real_period_seconds': realPeriodSeconds, - 'frequency': $('#frequency_count').val(), - 'frequency_unit': $('#frequency_unit').val(), - 'token_address': selected_token, - 'token_symbol': $('#token_symbol').val(), - 'gas_price': $('#gas_price').val(), - 'sub_new_approve_tx_id': transactionHash, - 'num_tx_approved': $('#period').val(), - 'network': $('#network').val(), - 'csrfmiddlewaretoken': $("#js-fundGrant input[name='csrfmiddlewaretoken']").val() - }; - - $.ajax({ - type: 'post', - url: '', - data: data, - success: json => { - console.log('successfully saved subscription'); - }, - error: () => { - _alert({ message: gettext('Your subscription failed to save. Please try again.') }, 'error'); - } - }); - - document.issueURL = linkURL; - $('#transaction_url').attr('href', linkURL); - enableWaitState('#grants_form'); - // TODO: fix the tweet modal - $('#tweetModal').modal('show'); +const subscribeToGrant = (transactionHash) => { web3.eth.getAccounts(function(err, accounts) { deployedToken.methods.decimals().call(function(err, decimals) { + $('#sub_new_approve_tx_id').val(transactionHash); + const linkURL = etherscan_tx_url(transactionHash); + let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); + let data = { + 'contributor_address': $('#contributor_address').val(), + 'amount_per_period': grant_amount, + 'real_period_seconds': realPeriodSeconds, + 'frequency': $('#frequency_count').val(), + 'frequency_unit': $('#frequency_unit').val(), + 'token_address': selected_token, + 'token_symbol': $('#token_symbol').val(), + 'gas_price': $('#gas_price').val(), + 'sub_new_approve_tx_id': transactionHash, + 'num_tx_approved': $('#period').val(), + 'network': $('#network').val(), + 'csrfmiddlewaretoken': $("#js-fundGrant input[name='csrfmiddlewaretoken']").val() + }; + + $.ajax({ + type: 'post', + url: '', + data: data, + success: json => { + console.log('successfully saved subscription'); + }, + error: () => { + _alert({ message: gettext('Your subscription failed to save. Please try again.') }, 'error'); + } + }); + + document.issueURL = linkURL; + $('#transaction_url').attr('href', linkURL); + enableWaitState('#grants_form'); + // TODO: fix the tweet modal + $('#tweetModal').modal('show'); deployedSubscription.methods.extraNonce(accounts[0]).call(function(err, nonce) { @@ -301,12 +301,15 @@ const subscribeToGrant = (transactionHash, amountSTR) => { web3.utils.toChecksumAddress(accounts[0]), // subscriber address web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address web3.utils.toChecksumAddress(selected_token), // token denomination / address - //web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})), - web3.utils.toTwosComplement(amountSTR), + web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})), + //web3.utils.toTwosComplement(amountSTR), web3.utils.toTwosComplement(realPeriodSeconds), web3.utils.toTwosComplement(data.gas_price), web3.utils.toTwosComplement(nonce) ]; + console.log('correct grant amount is: ' + web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false}))) + console.log('current grant amount is: ' + parts[3]); + console.log(parts); processSubscriptionHash(parts); }); From 0496f30f24a00c0df701816975c83ba2576dd027 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Tue, 21 May 2019 23:52:30 +0900 Subject: [PATCH 14/25] util page to create v0 grant --- app/assets/v2/js/grants/new.js | 50 +++++--- app/grants/admin.py | 2 +- app/grants/templates/grants/newv0.html | 168 +++++++++++++++++++++++++ app/grants/urls.py | 3 +- app/grants/views.py | 78 ++++++++++++ 5 files changed, 283 insertions(+), 18 deletions(-) create mode 100644 app/grants/templates/grants/newv0.html diff --git a/app/assets/v2/js/grants/new.js b/app/assets/v2/js/grants/new.js index a1191611956..f4e6ca33455 100644 --- a/app/assets/v2/js/grants/new.js +++ b/app/assets/v2/js/grants/new.js @@ -95,22 +95,40 @@ const init = () => { console.log(compiledSubscription.abi); // These args are baseline requirements for the contract set by the sender. Will set most to zero to abstract complexity from user. - let args = [ - // admin_address - web3.utils.toChecksumAddress(data.admin_address), - // required token - web3.utils.toChecksumAddress(data.denomination), - // required tokenAmount - web3.utils.toTwosComplement(0), - // data.frequency - web3.utils.toTwosComplement(0), - // data.gas_price - web3.utils.toTwosComplement(0), - // contract version - web3.utils.toTwosComplement(1), - // trusted relayer - web3.utils.toChecksumAddress(data.trusted_relayer) - ]; + let args; + if ($('#contract_version').val() == 1) { + args = [ + // admin_address + web3.utils.toChecksumAddress(data.admin_address), + // required token + web3.utils.toChecksumAddress(data.denomination), + // required tokenAmount + web3.utils.toTwosComplement(0), + // data.frequency + web3.utils.toTwosComplement(0), + // data.gas_price + web3.utils.toTwosComplement(0), + // contract version + web3.utils.toTwosComplement(1), + // trusted relayer + web3.utils.toChecksumAddress(data.trusted_relayer) + ]; + } else if ($('#contract_version').val() == 0) { + args = [ + // admin_address + web3.utils.toChecksumAddress(data.admin_address), + // required token + web3.utils.toChecksumAddress(data.denomination), + // required tokenAmount + web3.utils.toTwosComplement(0), + // data.frequency + web3.utils.toTwosComplement(0), + // data.gas_price + web3.utils.toTwosComplement(0), + // contract version + web3.utils.toTwosComplement(0), + ]; + } web3.eth.getAccounts(function(err, accounts) { web3.eth.net.getId(function(err, network) { diff --git a/app/grants/admin.py b/app/grants/admin.py index e0869d868a7..ea6bf1cad0f 100644 --- a/app/grants/admin.py +++ b/app/grants/admin.py @@ -44,7 +44,7 @@ class GrantAdmin(GeneralAdmin): 'title', 'description', 'reference_url', 'admin_address', 'active', 'amount_goal', 'amount_received', 'monthly_amount_subscribed', 'deploy_tx_id', 'cancel_tx_id', 'admin_profile', 'token_symbol', - 'token_address', 'contract_address', 'network', 'required_gas_price', 'logo_svg_asset', + 'token_address', 'contract_address', 'contract_version', 'network', 'required_gas_price', 'logo_svg_asset', 'logo_asset', 'created_on', 'modified_on', 'team_member_list', 'subscriptions_links', 'contributions_links', 'logo', 'logo_svg', 'image_css', 'link', 'clr_matching', 'hidden' diff --git a/app/grants/templates/grants/newv0.html b/app/grants/templates/grants/newv0.html new file mode 100644 index 00000000000..a21689f1bb0 --- /dev/null +++ b/app/grants/templates/grants/newv0.html @@ -0,0 +1,168 @@ +{% comment %} + Copyright (C) 2018 Gitcoin Core + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +{% endcomment %} +{% load static i18n %} + + + + {% include 'shared/head.html' with slim=1 %} + {% include 'shared/cards.html' %} + + + + + {% include 'shared/tag_manager_2.html' %} +
+ {% include 'shared/top_nav.html' with class='d-md-flex' %} + {% include 'grants/nav.html' %} +
+
+ {% include 'shared/no_metamask_error.html' %} + {% include 'shared/zero_balance_error.html' %} + {% include 'shared/unlock_metamask.html' %} + {% include 'shared/connect_metamask.html' %} +
+
+
+ + {% include 'grants/shared/alpha.html' %} + {% include 'grants/shared/waiting_state.html' %} + +
+
+
+ +
+
+ +

{% trans "Create a Grant" %}

+

+ {% trans "We're excited to learn about your project." %} +
+ {% trans "Gitcoin Grants can help you accelerate your journey to funding." %} +
+ {% trans "Complete the form below to get started." %} +

+
+
+
+ {% csrf_token %} +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+ +
+
+
+ + +
+
+ +
+ +
+
+
+
+ +
+ + +
+ + +
+ +
+ + {% trans "Drag & Drop or Browse" %} + +
+
+ +
+
{% trans "Gas Settings" %}
+
+ {% include 'shared/wallet_estimate.html' %} +
+
+ + + +
+ + + + + + + + + +
+
+
+
+
+ + {% include 'shared/current_profile.html' %} + {% include 'shared/bottom_notification.html' %} + {% include 'shared/analytics.html' %} + {% include 'shared/footer_scripts.html' %} + {% include 'shared/footer.html' %} + {% include 'grants/shared/shared_scripts.html' %} + + + + + + + + + + + + + + + + + diff --git a/app/grants/urls.py b/app/grants/urls.py index 0b08c8886ae..260ec554aaf 100644 --- a/app/grants/urls.py +++ b/app/grants/urls.py @@ -20,7 +20,7 @@ from django.urls import path, re_path from grants.views import ( - grant_details, grant_fund, grant_new, grants, leaderboard, milestones, new_matching_partner, profile, quickstart, + grant_details, grant_fund, grant_new, grant_new_v0, grants, leaderboard, milestones, new_matching_partner, profile, quickstart, subscription_cancel, ) @@ -30,6 +30,7 @@ path('/', grant_details, name='details'), path('//', grant_details, name='details2'), re_path(r'^new', grant_new, name='new'), + re_path(r'^newv0', grant_new_v0, name='newv0'), path('//milestones', milestones, name='milestones'), path('//fund', grant_fund, name='fund'), path( diff --git a/app/grants/views.py b/app/grants/views.py index 5308cedce5a..b7c24f73385 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -325,6 +325,84 @@ def grant_new(request): return TemplateResponse(request, 'grants/new.html', params) +@login_required +def grant_new_v0(request): + """Create a v0 version of a grant contract.""" + if not request.user.has_perm('grants.add_grant'): + return redirect('https://gitcoin.typeform.com/to/C2IocD') + + profile = get_profile(request) + + if request.method == 'POST': + if 'title' in request.POST: + logo = request.FILES.get('input_image', None) + receipt = json.loads(request.POST.get('receipt', '{}')) + team_members = request.POST.getlist('team_members[]') + + grant_kwargs = { + 'title': request.POST.get('title', ''), + 'description': request.POST.get('description', ''), + 'reference_url': request.POST.get('reference_url', ''), + 'admin_address': request.POST.get('admin_address', ''), + 'contract_owner_address': request.POST.get('contract_owner_address', ''), + 'token_address': request.POST.get('token_address', ''), + 'token_symbol': request.POST.get('token_symbol', ''), + 'amount_goal': request.POST.get('amount_goal', 1), + 'contract_version': request.POST.get('contract_version', ''), + 'deploy_tx_id': request.POST.get('transaction_hash', ''), + 'network': request.POST.get('network', 'mainnet'), + 'metadata': receipt, + 'admin_profile': profile, + 'logo': logo, + } + grant = Grant.objects.create(**grant_kwargs) + team_members.append(profile.id) + grant.team_members.add(*list(filter(lambda member_id: member_id > 0, map(int, team_members)))) + return JsonResponse({ + 'success': True, + }) + + if 'contract_address' in request.POST: + tx_hash = request.POST.get('transaction_hash', '') + if not tx_hash: + return JsonResponse({ + 'success': False, + 'info': 'no tx hash', + 'url': None, + }) + + grant = Grant.objects.filter(deploy_tx_id=tx_hash).first() + grant.contract_address = request.POST.get('contract_address', '') + print(tx_hash, grant.contract_address) + grant.save() + record_grant_activity_helper('new_grant', grant, profile) + new_grant(grant, profile) + return JsonResponse({ + 'success': True, + 'url': reverse('grants:details', args=(grant.pk, grant.slug)) + }) + + + params = { + 'active': 'new_grant', + 'title': _('New Grant'), + 'card_desc': _('Provide sustainable funding for Open Source with Gitcoin Grants'), + 'profile': profile, + 'grant': {}, + 'keywords': get_keywords(), + 'recommend_gas_price': recommend_min_gas_price_to_confirm_in_time(4), + 'recommend_gas_price_slow': recommend_min_gas_price_to_confirm_in_time(120), + 'recommend_gas_price_avg': recommend_min_gas_price_to_confirm_in_time(15), + 'recommend_gas_price_fast': recommend_min_gas_price_to_confirm_in_time(1), + 'eth_usd_conv_rate': eth_usd_conv_rate(), + 'conf_time_spread': conf_time_spread(), + 'gas_advisories': gas_advisories(), + 'trusted_relayer': settings.GRANTS_OWNER_ACCOUNT + } + + return TemplateResponse(request, 'grants/newv0.html', params) + + @login_required def milestones(request, grant_id, grant_slug): From 69a16b77bd5221484986dd30b0cb3107de5258f9 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 02:41:33 +0900 Subject: [PATCH 15/25] fix v0 grant new, hide fee form on v0 --- app/grants/templates/grants/fund.html | 2 ++ app/grants/templates/grants/new.html | 1 + app/grants/templates/grants/newv0.html | 1 + app/grants/urls.py | 2 +- app/grants/views.py | 4 ++-- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index f25f11dabef..7919ab2e96d 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -128,6 +128,7 @@

{% trans "Fund Grant" %}

+ {% if grant.contract_version == 1 %}
@@ -166,6 +167,7 @@

{% trans "Support Gitcoin" %}

+ {% endif %}
diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 3e1e7453cdd..8adffca4390 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -130,6 +130,7 @@
{% trans "Gas Settings" %}
+ diff --git a/app/grants/templates/grants/newv0.html b/app/grants/templates/grants/newv0.html index a21689f1bb0..fafcf38f919 100644 --- a/app/grants/templates/grants/newv0.html +++ b/app/grants/templates/grants/newv0.html @@ -130,6 +130,7 @@
{% trans "Gas Settings" %}
+ diff --git a/app/grants/urls.py b/app/grants/urls.py index 260ec554aaf..addaddffd50 100644 --- a/app/grants/urls.py +++ b/app/grants/urls.py @@ -30,7 +30,7 @@ path('/', grant_details, name='details'), path('//', grant_details, name='details2'), re_path(r'^new', grant_new, name='new'), - re_path(r'^newv0', grant_new_v0, name='newv0'), + re_path(r'^old', grant_new_v0, name='old'), path('//milestones', milestones, name='milestones'), path('//fund', grant_fund, name='fund'), path( diff --git a/app/grants/views.py b/app/grants/views.py index b7c24f73385..ab45644694d 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -322,7 +322,7 @@ def grant_new(request): 'gas_advisories': gas_advisories(), 'trusted_relayer': settings.GRANTS_OWNER_ACCOUNT } - + logger.info("v1!") return TemplateResponse(request, 'grants/new.html', params) @login_required @@ -330,7 +330,7 @@ def grant_new_v0(request): """Create a v0 version of a grant contract.""" if not request.user.has_perm('grants.add_grant'): return redirect('https://gitcoin.typeform.com/to/C2IocD') - + logger.info("v0!!!") profile = get_profile(request) if request.method == 'POST': From d26ea678d85838736e8b7bda526fac3103ccd7f3 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 15:17:51 +0900 Subject: [PATCH 16/25] fix js error in grant detail --- app/assets/v2/js/grants/shared.js | 2 -- app/grants/templates/grants/detail/index.html | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/v2/js/grants/shared.js b/app/assets/v2/js/grants/shared.js index 6c44c4b0c04..0a431b3a792 100644 --- a/app/assets/v2/js/grants/shared.js +++ b/app/assets/v2/js/grants/shared.js @@ -157,8 +157,6 @@ $(document).ready(function() { } } - console.log('compiled subscription is: ' + JSON.stringify(compiledSubscription.abi)); - compiledSplitter = compiledSplitter0; const listen_web3_1_changes = () => { diff --git a/app/grants/templates/grants/detail/index.html b/app/grants/templates/grants/detail/index.html index a449abe0c5c..a83e8b8df9c 100644 --- a/app/grants/templates/grants/detail/index.html +++ b/app/grants/templates/grants/detail/index.html @@ -359,7 +359,7 @@

{% trans "No Activity for th

- + {% include 'shared/current_profile.html' %} {% include 'shared/bottom_notification.html' %} {% include 'shared/analytics.html' %} From b4b4ea1a15c7a3c1721a1db77fb7b1a4ef372dac Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 15:42:11 +0900 Subject: [PATCH 17/25] cleanup caveman debugging --- app/assets/v2/js/grants/shared.js | 2 -- app/grants/management/commands/subminer.py | 2 -- app/grants/templates/grants/new.html | 1 - app/grants/views.py | 4 ---- 4 files changed, 9 deletions(-) diff --git a/app/assets/v2/js/grants/shared.js b/app/assets/v2/js/grants/shared.js index 0a431b3a792..b14415f5010 100644 --- a/app/assets/v2/js/grants/shared.js +++ b/app/assets/v2/js/grants/shared.js @@ -149,10 +149,8 @@ $(document).ready(function() { if (contractVersion) { if (contractVersion == 0) { - console.log('loading contract 0'); compiledSubscription = compiledSubscription0; } else if (contractVersion == 1) { - console.log('loading contract 1'); compiledSubscription = compiledSubscription1; } } diff --git a/app/grants/management/commands/subminer.py b/app/grants/management/commands/subminer.py index ab5c86fe063..e861caf9f04 100644 --- a/app/grants/management/commands/subminer.py +++ b/app/grants/management/commands/subminer.py @@ -59,8 +59,6 @@ def process_subscription(subscription, live): " --- %s, %s, %s, %s", are_we_past_next_valid_timestamp, is_ready_to_be_processed_web3, is_active_web3, signer, ) - logger.info("Grant Version is %s" % subscription.grant.contract_version) - logger.info("metatx relayer gasPrice is %s" % web3_hash_arguments['gasPrice']) if not are_we_past_next_valid_timestamp: logger.info(f" -- ( NOT ready via web3, will be ready on {subscription.get_next_valid_timestamp()}) ") diff --git a/app/grants/templates/grants/new.html b/app/grants/templates/grants/new.html index 8adffca4390..3e1e7453cdd 100644 --- a/app/grants/templates/grants/new.html +++ b/app/grants/templates/grants/new.html @@ -130,7 +130,6 @@
{% trans "Gas Settings" %}
- diff --git a/app/grants/views.py b/app/grants/views.py index ab45644694d..5c47da95f7b 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -322,7 +322,6 @@ def grant_new(request): 'gas_advisories': gas_advisories(), 'trusted_relayer': settings.GRANTS_OWNER_ACCOUNT } - logger.info("v1!") return TemplateResponse(request, 'grants/new.html', params) @login_required @@ -330,7 +329,6 @@ def grant_new_v0(request): """Create a v0 version of a grant contract.""" if not request.user.has_perm('grants.add_grant'): return redirect('https://gitcoin.typeform.com/to/C2IocD') - logger.info("v0!!!") profile = get_profile(request) if request.method == 'POST': @@ -506,7 +504,6 @@ def grant_fund(request, grant_id, grant_slug): subscription.contributor_address = request.POST.get('contributor_address', '') subscription.amount_per_period = request.POST.get('amount_per_period', 0) subscription.real_period_seconds = request.POST.get('real_period_seconds', 2592000) - print(subscription.real_period_seconds) subscription.frequency = request.POST.get('frequency', 30) subscription.frequency_unit = request.POST.get('frequency_unit', 'days') subscription.token_address = request.POST.get('token_address', '') @@ -517,7 +514,6 @@ def grant_fund(request, grant_id, grant_slug): subscription.network = request.POST.get('network', '') subscription.contributor_profile = profile subscription.grant = grant - subscription.save() # one time payments From 850fc2066c8fe34e5dae895d8fe8e4a5701f1f06 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 16:51:03 +0900 Subject: [PATCH 18/25] load addresses from env --- app/app/settings.py | 9 +++++++++ app/assets/v2/js/grants/fund.js | 9 +++++---- app/grants/templates/grants/fund.html | 2 ++ app/grants/urls.py | 4 ++-- app/grants/views.py | 4 ++++ 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/app/settings.py b/app/app/settings.py index 023c5c539f4..0e44a073a4e 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -593,6 +593,15 @@ # Grants GRANTS_OWNER_ACCOUNT = env('GRANTS_OWNER_ACCOUNT', default='0xD386793F1DB5F21609571C0164841E5eA2D33aD8') GRANTS_PRIVATE_KEY = env('GRANTS_PRIVATE_KEY', default='') +GRANTS_SPLITTER_ROPSTEN = env('GRANTS_SPLITTER_ROPSTEN', default='0xe2fd6dfe7f371e884e782d46f043552421b3a9d9') +GRANTS_SPLITTER_MAINNET = env('GRANTS_SPLITTER_MAINNET', default='0xdf869FAD6dB91f437B59F1EdEFab319493D4C4cE') +GRANTS_NETWORK = env('GRANTS_NETWORK', default='mainnet') +GITCOIN_DONATION_ADDRESS = env('GITCOIN_DONATION_ADDRESS', '0x00De4B13153673BCAE2616b67bf822500d325Fc3') +SPLITTER_CONTRACT_ADDRESS = '' +if GRANTS_NETWORK == 'mainnet': + SPLITTER_CONTRACT_ADDRESS = GRANTS_SPLITTER_MAINNET +else: + SPLITTER_CONTRACT_ADDRESS = GRANTS_SPLITTER_ROPSTEN METATX_GAS_PRICE_THRESHOLD = float(env('METATX_GAS_PRICE_THRESHOLD', default='10000.0')) diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 182faa1b108..0aaef80c65c 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -5,12 +5,13 @@ let tokenAddress; let redirectURL; let realPeriodSeconds = 0; let selected_token; +let splitterAddress; +let gitcoinDonationAddress; -$(document).ready(function() { - //let gitcoinDonationAddress = '0x00De4B13153673BCAE2616b67bf822500d325Fc3'; - // for testing - let gitcoinDonationAddress = '0x16101fA7bAd6788bcDff881c8e56779c9733407A'; +$(document).ready(function() { + gitcoinDonationAddress = $('gitcoin_donation_address').val(); + splitterAddress = $('#splitter_contract_address').val(); $('.js-select2').each(function() { $(this).select2(); diff --git a/app/grants/templates/grants/fund.html b/app/grants/templates/grants/fund.html index 7919ab2e96d..c53df29eeb3 100644 --- a/app/grants/templates/grants/fund.html +++ b/app/grants/templates/grants/fund.html @@ -252,6 +252,8 @@
{% trans "Gas Settings" %}
+ + diff --git a/app/grants/urls.py b/app/grants/urls.py index addaddffd50..eec6b0036a0 100644 --- a/app/grants/urls.py +++ b/app/grants/urls.py @@ -20,8 +20,8 @@ from django.urls import path, re_path from grants.views import ( - grant_details, grant_fund, grant_new, grant_new_v0, grants, leaderboard, milestones, new_matching_partner, profile, quickstart, - subscription_cancel, + grant_details, grant_fund, grant_new, grant_new_v0, grants, leaderboard, milestones, new_matching_partner, profile, + quickstart, subscription_cancel, ) app_name = 'grants' diff --git a/app/grants/views.py b/app/grants/views.py index 5c47da95f7b..d6f55f4e756 100644 --- a/app/grants/views.py +++ b/app/grants/views.py @@ -555,6 +555,8 @@ def grant_fund(request, grant_id, grant_slug): 'url': reverse('grants:details', args=(grant.pk, grant.slug)) }) + splitter_contract_address = settings.SPLITTER_CONTRACT_ADDRESS + params = { 'active': 'fund_grant', 'title': _('Fund Grant'), @@ -570,6 +572,8 @@ def grant_fund(request, grant_id, grant_slug): 'eth_usd_conv_rate': eth_usd_conv_rate(), 'conf_time_spread': conf_time_spread(), 'gas_advisories': gas_advisories(), + 'splitter_contract_address': settings.SPLITTER_CONTRACT_ADDRESS, + 'gitcoin_donation_address': settings.GITCOIN_DONATION_ADDRESS } return TemplateResponse(request, 'grants/fund.html', params) From c6baa2c9da5f72994ffba33ad512307e0b55e995 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:00:02 +0900 Subject: [PATCH 19/25] fix env --- app/app/settings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/app/settings.py b/app/app/settings.py index 0e44a073a4e..15380cda824 100644 --- a/app/app/settings.py +++ b/app/app/settings.py @@ -596,7 +596,7 @@ GRANTS_SPLITTER_ROPSTEN = env('GRANTS_SPLITTER_ROPSTEN', default='0xe2fd6dfe7f371e884e782d46f043552421b3a9d9') GRANTS_SPLITTER_MAINNET = env('GRANTS_SPLITTER_MAINNET', default='0xdf869FAD6dB91f437B59F1EdEFab319493D4C4cE') GRANTS_NETWORK = env('GRANTS_NETWORK', default='mainnet') -GITCOIN_DONATION_ADDRESS = env('GITCOIN_DONATION_ADDRESS', '0x00De4B13153673BCAE2616b67bf822500d325Fc3') +GITCOIN_DONATION_ADDRESS = env('GITCOIN_DONATION_ADDRESS', default='0x00De4B13153673BCAE2616b67bf822500d325Fc3') SPLITTER_CONTRACT_ADDRESS = '' if GRANTS_NETWORK == 'mainnet': SPLITTER_CONTRACT_ADDRESS = GRANTS_SPLITTER_MAINNET From 31cbe2b6c218cbcab936d164d3f10caa5713b7ad Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:16:15 +0900 Subject: [PATCH 20/25] fix quotes in contract v1 --- .../grants/compiledSubscriptionContract1.js | 28468 ++++++++-------- 1 file changed, 14234 insertions(+), 14234 deletions(-) diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract1.js b/app/assets/v2/js/grants/compiledSubscriptionContract1.js index 14497f2ff38..e9b969ec531 100644 --- a/app/assets/v2/js/grants/compiledSubscriptionContract1.js +++ b/app/assets/v2/js/grants/compiledSubscriptionContract1.js @@ -1,18068 +1,18068 @@ let compiledSubscription1 = { - "contractName": "Subscription", - "abi": [ + 'contractName': 'Subscription', + 'abi': [ { - "constant": true, - "inputs": [], - "name": "requiredGasPrice", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'requiredGasPrice', + 'outputs': [ { - "name": "", - "type": "uint256" + 'name': '', + 'type': 'uint256' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "requiredTokenAmount", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'requiredTokenAmount', + 'outputs': [ { - "name": "", - "type": "uint256" + 'name': '', + 'type': 'uint256' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "requiredToAddress", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'requiredToAddress', + 'outputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "requiredPeriodSeconds", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'requiredPeriodSeconds', + 'outputs': [ { - "name": "", - "type": "uint256" + 'name': '', + 'type': 'uint256' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "requiredTokenAddress", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'requiredTokenAddress', + 'outputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "relayer", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'relayer', + 'outputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "name": "extraNonce", - "outputs": [ + 'name': 'extraNonce', + 'outputs': [ { - "name": "", - "type": "uint256" + 'name': '', + 'type': 'uint256' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [], - "name": "author", - "outputs": [ + 'constant': true, + 'inputs': [], + 'name': 'author', + 'outputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "", - "type": "bytes32" + 'name': '', + 'type': 'bytes32' } ], - "name": "nextValidTimestamp", - "outputs": [ + 'name': 'nextValidTimestamp', + 'outputs': [ { - "name": "", - "type": "uint256" + 'name': '', + 'type': 'uint256' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "inputs": [ + 'inputs': [ { - "name": "_toAddress", - "type": "address" + 'name': '_toAddress', + 'type': 'address' }, { - "name": "_tokenAddress", - "type": "address" + 'name': '_tokenAddress', + 'type': 'address' }, { - "name": "_tokenAmount", - "type": "uint256" + 'name': '_tokenAmount', + 'type': 'uint256' }, { - "name": "_periodSeconds", - "type": "uint256" + 'name': '_periodSeconds', + 'type': 'uint256' }, { - "name": "_gasPrice", - "type": "uint256" + 'name': '_gasPrice', + 'type': 'uint256' }, { - "name": "_version", - "type": "uint8" + 'name': '_version', + 'type': 'uint8' }, { - "name": "_relayer", - "type": "address" + 'name': '_relayer', + 'type': 'address' } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'constructor' }, { - "payable": true, - "stateMutability": "payable", - "type": "fallback" + 'payable': true, + 'stateMutability': 'payable', + 'type': 'fallback' }, { - "anonymous": false, - "inputs": [ + 'anonymous': false, + 'inputs': [ { - "indexed": true, - "name": "from", - "type": "address" + 'indexed': true, + 'name': 'from', + 'type': 'address' }, { - "indexed": true, - "name": "to", - "type": "address" + 'indexed': true, + 'name': 'to', + 'type': 'address' }, { - "indexed": false, - "name": "tokenAddress", - "type": "address" + 'indexed': false, + 'name': 'tokenAddress', + 'type': 'address' }, { - "indexed": false, - "name": "tokenAmount", - "type": "uint256" + 'indexed': false, + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "indexed": false, - "name": "periodSeconds", - "type": "uint256" + 'indexed': false, + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "indexed": false, - "name": "gasPrice", - "type": "uint256" + 'indexed': false, + 'name': 'gasPrice', + 'type': 'uint256' }, { - "indexed": false, - "name": "nonce", - "type": "uint256" + 'indexed': false, + 'name': 'nonce', + 'type': 'uint256' } ], - "name": "ExecuteSubscription", - "type": "event" + 'name': 'ExecuteSubscription', + 'type': 'event' }, { - "anonymous": false, - "inputs": [ + 'anonymous': false, + 'inputs': [ { - "indexed": true, - "name": "from", - "type": "address" + 'indexed': true, + 'name': 'from', + 'type': 'address' }, { - "indexed": true, - "name": "to", - "type": "address" + 'indexed': true, + 'name': 'to', + 'type': 'address' }, { - "indexed": false, - "name": "tokenAddress", - "type": "address" + 'indexed': false, + 'name': 'tokenAddress', + 'type': 'address' }, { - "indexed": false, - "name": "tokenAmount", - "type": "uint256" + 'indexed': false, + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "indexed": false, - "name": "periodSeconds", - "type": "uint256" + 'indexed': false, + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "indexed": false, - "name": "gasPrice", - "type": "uint256" + 'indexed': false, + 'name': 'gasPrice', + 'type': 'uint256' }, { - "indexed": false, - "name": "nonce", - "type": "uint256" + 'indexed': false, + 'name': 'nonce', + 'type': 'uint256' } ], - "name": "CancelSubscription", - "type": "event" + 'name': 'CancelSubscription', + 'type': 'event' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "subscriptionHash", - "type": "bytes32" + 'name': 'subscriptionHash', + 'type': 'bytes32' }, { - "name": "gracePeriodSeconds", - "type": "uint256" + 'name': 'gracePeriodSeconds', + 'type': 'uint256' } ], - "name": "isSubscriptionActive", - "outputs": [ + 'name': 'isSubscriptionActive', + 'outputs': [ { - "name": "", - "type": "bool" + 'name': '', + 'type': 'bool' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "from", - "type": "address" + 'name': 'from', + 'type': 'address' }, { - "name": "to", - "type": "address" + 'name': 'to', + 'type': 'address' }, { - "name": "tokenAddress", - "type": "address" + 'name': 'tokenAddress', + 'type': 'address' }, { - "name": "tokenAmount", - "type": "uint256" + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "name": "periodSeconds", - "type": "uint256" + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "name": "gasPrice", - "type": "uint256" + 'name': 'gasPrice', + 'type': 'uint256' }, { - "name": "nonce", - "type": "uint256" + 'name': 'nonce', + 'type': 'uint256' } ], - "name": "getSubscriptionHash", - "outputs": [ + 'name': 'getSubscriptionHash', + 'outputs': [ { - "name": "", - "type": "bytes32" + 'name': '', + 'type': 'bytes32' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "subscriptionHash", - "type": "bytes32" + 'name': 'subscriptionHash', + 'type': 'bytes32' }, { - "name": "signature", - "type": "bytes" + 'name': 'signature', + 'type': 'bytes' } ], - "name": "getSubscriptionSigner", - "outputs": [ + 'name': 'getSubscriptionSigner', + 'outputs': [ { - "name": "", - "type": "address" + 'name': '', + 'type': 'address' } ], - "payable": false, - "stateMutability": "pure", - "type": "function" + 'payable': false, + 'stateMutability': 'pure', + 'type': 'function' }, { - "constant": true, - "inputs": [ + 'constant': true, + 'inputs': [ { - "name": "from", - "type": "address" + 'name': 'from', + 'type': 'address' }, { - "name": "to", - "type": "address" + 'name': 'to', + 'type': 'address' }, { - "name": "tokenAddress", - "type": "address" + 'name': 'tokenAddress', + 'type': 'address' }, { - "name": "tokenAmount", - "type": "uint256" + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "name": "periodSeconds", - "type": "uint256" + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "name": "gasPrice", - "type": "uint256" + 'name': 'gasPrice', + 'type': 'uint256' }, { - "name": "nonce", - "type": "uint256" + 'name': 'nonce', + 'type': 'uint256' }, { - "name": "signature", - "type": "bytes" + 'name': 'signature', + 'type': 'bytes' } ], - "name": "isSubscriptionReady", - "outputs": [ + 'name': 'isSubscriptionReady', + 'outputs': [ { - "name": "", - "type": "bool" + 'name': '', + 'type': 'bool' } ], - "payable": false, - "stateMutability": "view", - "type": "function" + 'payable': false, + 'stateMutability': 'view', + 'type': 'function' }, { - "constant": false, - "inputs": [ + 'constant': false, + 'inputs': [ { - "name": "from", - "type": "address" + 'name': 'from', + 'type': 'address' }, { - "name": "to", - "type": "address" + 'name': 'to', + 'type': 'address' }, { - "name": "tokenAddress", - "type": "address" + 'name': 'tokenAddress', + 'type': 'address' }, { - "name": "tokenAmount", - "type": "uint256" + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "name": "periodSeconds", - "type": "uint256" + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "name": "gasPrice", - "type": "uint256" + 'name': 'gasPrice', + 'type': 'uint256' }, { - "name": "nonce", - "type": "uint256" + 'name': 'nonce', + 'type': 'uint256' }, { - "name": "signature", - "type": "bytes" + 'name': 'signature', + 'type': 'bytes' } ], - "name": "cancelSubscription", - "outputs": [ + 'name': 'cancelSubscription', + 'outputs': [ { - "name": "success", - "type": "bool" + 'name': 'success', + 'type': 'bool' } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' }, { - "constant": false, - "inputs": [ + 'constant': false, + 'inputs': [ { - "name": "from", - "type": "address" + 'name': 'from', + 'type': 'address' }, { - "name": "to", - "type": "address" + 'name': 'to', + 'type': 'address' }, { - "name": "tokenAddress", - "type": "address" + 'name': 'tokenAddress', + 'type': 'address' }, { - "name": "tokenAmount", - "type": "uint256" + 'name': 'tokenAmount', + 'type': 'uint256' }, { - "name": "periodSeconds", - "type": "uint256" + 'name': 'periodSeconds', + 'type': 'uint256' }, { - "name": "gasPrice", - "type": "uint256" + 'name': 'gasPrice', + 'type': 'uint256' }, { - "name": "nonce", - "type": "uint256" + 'name': 'nonce', + 'type': 'uint256' }, { - "name": "signature", - "type": "bytes" + 'name': 'signature', + 'type': 'bytes' } ], - "name": "executeSubscription", - "outputs": [ + 'name': 'executeSubscription', + 'outputs': [ { - "name": "success", - "type": "bool" + 'name': 'success', + 'type': 'bool' } ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' }, { - "constant": false, - "inputs": [], - "name": "endContract", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + 'constant': false, + 'inputs': [], + 'name': 'endContract', + 'outputs': [], + 'payable': false, + 'stateMutability': 'nonpayable', + 'type': 'function' } ], - "metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"requiredGasPrice\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getSubscriptionSigner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAmount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredToAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredPeriodSeconds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requiredTokenAddress\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cancelSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relayer\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"extraNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"author\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"subscriptionHash\",\"type\":\"bytes32\"},{\"name\":\"gracePeriodSeconds\",\"type\":\"uint256\"}],\"name\":\"isSubscriptionActive\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"endContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"getSubscriptionHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"executeSubscription\",\"outputs\":[{\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenAddress\",\"type\":\"address\"},{\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"name\":\"nonce\",\"type\":\"uint256\"},{\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isSubscriptionReady\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nextValidTimestamp\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_toAddress\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenAmount\",\"type\":\"uint256\"},{\"name\":\"_periodSeconds\",\"type\":\"uint256\"},{\"name\":\"_gasPrice\",\"type\":\"uint256\"},{\"name\":\"_version\",\"type\":\"uint8\"},{\"name\":\"_relayer\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"ExecuteSubscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"periodSeconds\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"CancelSubscription\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":\"Subscription\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\":{\"keccak256\":\"0xd23b843d2a5cbd6e762c03fc55c62e331f306f37458e14cf791f4d10fc8f4c4f\",\"urls\":[\"bzzr://33f93fb60362d588a089d221a20097a97112f7060364f97151667be7e2007bc7\"]},\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\":{\"keccak256\":\"0x0cbeb7f69b70ff62eb5536caebbc8701b6490ae7ee2e252d77891cf6eba11326\",\"urls\":[\"bzzr://58a443499466ee0706d22af81b43ab6779b519255fbc66276546386ec00a30d7\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\",\"urls\":[\"bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x3dceb7e4aa237a56111c13f77d7efadeceda7271d62bfac94ac79afab7c1f411\",\"urls\":[\"bzzr://2f34152a5bec385352002c31bc89f5e9935f628f1923ccea45c2281e0084a4db\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x59e7df16169a498cb8837963b2f5461d88e63bd1eb6c7d58b814d76b84ccbe61\",\"urls\":[\"bzzr://e572c9c4e02e37349702451bf3b5dcbbc86a19da5a51695b5b3e1bfe1e7825dc\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b5060405160e080612345833981018060405260e081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004819055508360058190555082600681905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505061219a806101ab6000396000f3fe608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", - "deployedBytecode": "0x608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029", - "sourceMap": "1091:13213:1:-;;;3145:489;8:9:-1;5:2;;;30:1;27;20:12;5:2;3145:489:1;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3145:489:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:10;3378:17;;:28;;;;;;;;;;;;;;;;;;3437:13;3416:20;;:34;;;;;;;;;;;;;;;;;;3480:12;3460:19;:32;;;;3524:14;3502:21;:36;;;;3565:9;3548:16;:26;;;;3591:10;3584:6;;:17;;;;;;;;;;;;;;;;;;3619:8;3611:7;;:16;;;;;;;;;;;;;;;;;;3145:489;;;;;;;1091:13213;;;;;;", - "deployedSourceMap": "1091:13213:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14286:9;;;1631:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:31:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6029:318:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6029:318:1;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6029:318:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6029:318:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6029:318:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6029:318:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1470:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:32:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1589:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:36:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1508:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1508:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7985:1423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7985:1423:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7985:1423:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7985:1423:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7985:1423:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1288:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1288:22:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2088:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2088:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2088:45:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1212:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:29:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3874:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3874:390:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3874:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14057:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14057:114:1;;;:::i;:::-;;4420:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4420:1548:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4420:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9566:3091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9566:3091:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9566:3091:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9566:3091:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9566:3091:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6470:1261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6470:1261:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6470:1261:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6470:1261:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6470:1261:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1854:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1854:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1854:53:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1631:31;;;;:::o;6029:318::-;6250:7;6280:60;6330:9;6280:41;:16;:39;:41::i;:::-;:49;;:60;;;;:::i;:::-;6273:67;;6029:318;;;;:::o;1549:34::-;;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1589:36::-;;;;:::o;1508:35::-;;;;;;;;;;;;;:::o;7985:1423::-;8588:12;8616:24;8643:110;8676:4;8682:2;8686:12;8700:11;8713:13;8728:8;8738:5;8643:19;:110::i;:::-;8616:137;;8763:14;8780:50;8802:16;8820:9;8780:21;:50::i;:::-;8763:67;;8897:4;8887:14;;:6;:14;;;8879:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:10;9012:18;;:4;:18;;;9004:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9251:2;9206:18;:36;9225:16;9206:36;;;;;;;;;;;:48;;;;9308:2;9270:109;;9302:4;9270:109;;;9312:12;9326:11;9339:13;9354:8;9364:5;9270:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:4;9390:11;;;;7985:1423;;;;;;;;;;:::o;1288:22::-;;;;;;;;;;;;;:::o;2088:45::-;;;;;;;;;;;;;;;;;:::o;1212:29::-;;;;;;;;;;;;;:::o;3874:390::-;4027:4;4096:2;4050:18;:36;4069:16;4050:36;;;;;;;;;;;;:49;4047:88;;;4119:5;4112:12;;;;4047:88;4187:60;4228:18;4187;:36;4206:16;4187:36;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4152:15;:95;;4144:113;;3874:390;;;;;:::o;14057:114::-;14129:6;;;;;;;;;;;14117:18;;:10;:18;;;14109:27;;;;;;;;14157:6;;;;;;;;;;;14144:20;;;4420:1548;4956:7;5122:1;5093:31;;:17;;;;;;;;;;;:31;;;:58;;;;5134:17;;;;;;;;;;;5128:23;;:2;:23;;;5093:58;5084:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:1;5201:34;;:20;;;;;;;;;;;:34;;;:74;;;;5255:20;;;;;;;;;;;5239:36;;:12;:36;;;5201:74;5192:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:1;5329:19;;:24;:62;;;;5372:19;;5357:11;:34;5329:62;5320:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:1;5444:21;;:26;:68;;;;5491:21;;5474:13;:38;5444:68;5435:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5567:16;;:21;:53;;;;5604:16;;5592:8;:28;5567:53;5558:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:4;5726:10;;5759:1;5754:7;;5787:4;5810;5832:2;5852:12;5882:11;5911:13;5942:8;5692:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5692:268:1;;;5669:292;;;;;;5662:299;;4420:1548;;;;;;;;;:::o;9566:3091::-;10171:12;10221:7;;;;;;;;;;;10207:21;;:10;:21;;;10199:30;;;;;;;;10239:24;10266:110;10299:4;10305:2;10309:12;10323:11;10336:13;10351:8;10361:5;10266:19;:110::i;:::-;10239:137;;10453:99;10473:4;10479:2;10483:12;10497:11;10510:13;10525:8;10535:5;10542:9;10453:19;:99::i;:::-;10444:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10752:34;10772:13;10752:15;:19;;:34;;;;:::i;:::-;10713:18;:36;10732:16;10713:36;;;;;;;;;;;:73;;;;10913:10;:16;10924:4;10913:16;;;;;;;;;;;;;;;;10905:5;:24;10902:75;;;10961:5;10942:10;:16;10953:4;10942:16;;;;;;;;;;;;;;;:24;;;;10902:75;11062:23;11094:12;11088:29;;;11118:2;11088:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11088:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11088:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11088:33:1;;;;;;;;;;;;;;;;11062:59;;11137:12;11131:32;;;11164:4;11169:2;11172:11;11131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11131:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11131:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11131:53:1;;;;;;;;;;;;;;;;;11252:12;11246:29;;;11276:2;11246:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11246:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11246:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11246:33:1;;;;;;;;;;;;;;;;11230:11;11214:15;:27;11213:66;11194:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11371:14;:12;:14::i;:::-;11352:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:2;11481:110;;11514:4;11481:110;;;11524:12;11538:11;11551:13;11566:8;11576:5;11481:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:1;11811:8;:12;11807:822;;;12410:12;12404:32;;;12437:4;12443:10;12455:8;12404:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12404:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12404:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12404:60:1;;;;;;;;;;;;;;;;;12503:14;:12;:14::i;:::-;12478:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:822;12646:4;12639:11;;;;9566:3091;;;;;;;;;;:::o;6470:1261::-;7088:4;7108:24;7135:110;7168:4;7174:2;7178:12;7192:11;7205:13;7220:8;7230:5;7135:19;:110::i;:::-;7108:137;;7255:14;7272:50;7294:16;7312:9;7272:21;:50::i;:::-;7255:67;;7332:17;7358:12;7352:29;;;7382:4;7396;7352:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7352:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7352:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7352:50:1;;;;;;;;;;;;;;;;7332:70;;7412:15;7436:12;7430:29;;;7460:4;7430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7430:35:1;;;;;;;;;;;;;;;;7412:53;;7507:4;7497:14;;:6;:14;;;:40;;;;;7535:2;7527:10;;:4;:10;;;;7497:40;:111;;;;;7572:18;:36;7591:16;7572:36;;;;;;;;;;;;7553:15;:55;;7497:111;:165;;;;;7637:25;7653:8;7637:11;:15;;:25;;;;:::i;:::-;7624:9;:38;;7497:165;:217;;;;;7689:25;7705:8;7689:11;:15;;:25;;;;:::i;:::-;7678:7;:36;;7497:217;7476:248;;;;;;6470:1261;;;;;;;;;;:::o;1854:53::-;;;;;;;;;;;;;;;;;:::o;2650:265:2:-;2719:7;2902:4;2849:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2849:58:2;;;2839:69;;;;;;2832:76;;2650:265;;;:::o;609:1891::-;687:7;768:2;748:9;:16;:22;;744:72;;;802:1;786:19;;;;744:72;882:9;901;920:7;1166:4;1155:9;1151:20;1145:27;1140:32;;1211:4;1200:9;1196:20;1190:27;1185:32;;1264:4;1253:9;1249:20;1243:27;1240:1;1235:36;1230:41;;2182:66;2177:1;2169:10;;;:79;2165:127;;;2279:1;2264:17;;;;;;;2165:127;2311:2;2306:1;:7;;;;:18;;;;;2322:2;2317:1;:7;;;;2306:18;2302:66;;;2355:1;2340:17;;;;;;;2302:66;2469:24;2479:4;2485:1;2488;2491;2469:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2469:24:2;;;;;;;;2462:31;;;;;609:1891;;;;;:::o;1439:145:3:-;1497:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1543:15;;;;;;;;1576:1;1569:8;;;1439:145;;;;:::o;13072:855:1:-;13147:4;13167:19;13189:1;13167:23;;13368:14;13450:3;13445:57;;;;13573:4;13568:220;;;;13361:516;;13445:57;13487:1;13472:16;;13445:57;;13568:220;13673:4;13668:3;13663;13648:30;13770:3;13764:10;13749:25;;13361:516;;13919:1;13904:11;:16;;13897:23;;;13072:855;:::o", - "source": "pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \"paid\" and \"active\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \"requiredToAddress Failure\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \"requiredTokenAddress Failure\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \"requiredTokenAmount Failure\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \"requiredPeriodSeconds Failure\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \"requiredGasPrice Failure\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \"Invalid Signature for subscription cancellation\");\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \"Subscription is not ready or conditions of transction are not met\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \"ERC20 Balance did not change correctly\"\n );\n\n require(\n checkSuccess(),\n \"Subscription::executeSubscription TransferFrom failed\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \"Subscription::executeSubscription Failed to pay gas as from account\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n", - "sourcePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", - "ast": { - "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", - "exportedSymbols": { - "Subscription": [ + 'metadata': '{\'compiler\':{\'version\':\'0.5.2+commit.1df8f40c\'},\'language\':\'Solidity\',\'output\':{\'abi\':[{\'constant\':true,\'inputs\':[],\'name\':\'requiredGasPrice\',\'outputs\':[{\'name\':\'\',\'type\':\'uint256\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'subscriptionHash\',\'type\':\'bytes32\'},{\'name\':\'signature\',\'type\':\'bytes\'}],\'name\':\'getSubscriptionSigner\',\'outputs\':[{\'name\':\'\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'pure\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'requiredTokenAmount\',\'outputs\':[{\'name\':\'\',\'type\':\'uint256\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'requiredToAddress\',\'outputs\':[{\'name\':\'\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'requiredPeriodSeconds\',\'outputs\':[{\'name\':\'\',\'type\':\'uint256\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'requiredTokenAddress\',\'outputs\':[{\'name\':\'\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':false,\'inputs\':[{\'name\':\'from\',\'type\':\'address\'},{\'name\':\'to\',\'type\':\'address\'},{\'name\':\'tokenAddress\',\'type\':\'address\'},{\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'name\':\'nonce\',\'type\':\'uint256\'},{\'name\':\'signature\',\'type\':\'bytes\'}],\'name\':\'cancelSubscription\',\'outputs\':[{\'name\':\'success\',\'type\':\'bool\'}],\'payable\':false,\'stateMutability\':\'nonpayable\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'relayer\',\'outputs\':[{\'name\':\'\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'\',\'type\':\'address\'}],\'name\':\'extraNonce\',\'outputs\':[{\'name\':\'\',\'type\':\'uint256\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[],\'name\':\'author\',\'outputs\':[{\'name\':\'\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'subscriptionHash\',\'type\':\'bytes32\'},{\'name\':\'gracePeriodSeconds\',\'type\':\'uint256\'}],\'name\':\'isSubscriptionActive\',\'outputs\':[{\'name\':\'\',\'type\':\'bool\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':false,\'inputs\':[],\'name\':\'endContract\',\'outputs\':[],\'payable\':false,\'stateMutability\':\'nonpayable\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'from\',\'type\':\'address\'},{\'name\':\'to\',\'type\':\'address\'},{\'name\':\'tokenAddress\',\'type\':\'address\'},{\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'name\':\'nonce\',\'type\':\'uint256\'}],\'name\':\'getSubscriptionHash\',\'outputs\':[{\'name\':\'\',\'type\':\'bytes32\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':false,\'inputs\':[{\'name\':\'from\',\'type\':\'address\'},{\'name\':\'to\',\'type\':\'address\'},{\'name\':\'tokenAddress\',\'type\':\'address\'},{\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'name\':\'nonce\',\'type\':\'uint256\'},{\'name\':\'signature\',\'type\':\'bytes\'}],\'name\':\'executeSubscription\',\'outputs\':[{\'name\':\'success\',\'type\':\'bool\'}],\'payable\':false,\'stateMutability\':\'nonpayable\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'from\',\'type\':\'address\'},{\'name\':\'to\',\'type\':\'address\'},{\'name\':\'tokenAddress\',\'type\':\'address\'},{\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'name\':\'nonce\',\'type\':\'uint256\'},{\'name\':\'signature\',\'type\':\'bytes\'}],\'name\':\'isSubscriptionReady\',\'outputs\':[{\'name\':\'\',\'type\':\'bool\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'constant\':true,\'inputs\':[{\'name\':\'\',\'type\':\'bytes32\'}],\'name\':\'nextValidTimestamp\',\'outputs\':[{\'name\':\'\',\'type\':\'uint256\'}],\'payable\':false,\'stateMutability\':\'view\',\'type\':\'function\'},{\'inputs\':[{\'name\':\'_toAddress\',\'type\':\'address\'},{\'name\':\'_tokenAddress\',\'type\':\'address\'},{\'name\':\'_tokenAmount\',\'type\':\'uint256\'},{\'name\':\'_periodSeconds\',\'type\':\'uint256\'},{\'name\':\'_gasPrice\',\'type\':\'uint256\'},{\'name\':\'_version\',\'type\':\'uint8\'},{\'name\':\'_relayer\',\'type\':\'address\'}],\'payable\':false,\'stateMutability\':\'nonpayable\',\'type\':\'constructor\'},{\'payable\':true,\'stateMutability\':\'payable\',\'type\':\'fallback\'},{\'anonymous\':false,\'inputs\':[{\'indexed\':true,\'name\':\'from\',\'type\':\'address\'},{\'indexed\':true,\'name\':\'to\',\'type\':\'address\'},{\'indexed\':false,\'name\':\'tokenAddress\',\'type\':\'address\'},{\'indexed\':false,\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'nonce\',\'type\':\'uint256\'}],\'name\':\'ExecuteSubscription\',\'type\':\'event\'},{\'anonymous\':false,\'inputs\':[{\'indexed\':true,\'name\':\'from\',\'type\':\'address\'},{\'indexed\':true,\'name\':\'to\',\'type\':\'address\'},{\'indexed\':false,\'name\':\'tokenAddress\',\'type\':\'address\'},{\'indexed\':false,\'name\':\'tokenAmount\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'periodSeconds\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'gasPrice\',\'type\':\'uint256\'},{\'indexed\':false,\'name\':\'nonce\',\'type\':\'uint256\'}],\'name\':\'CancelSubscription\',\'type\':\'event\'}],\'devdoc\':{\'methods\':{}},\'userdoc\':{\'methods\':{}}},\'settings\':{\'compilationTarget\':{\'/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\':\'Subscription\'},\'evmVersion\':\'byzantium\',\'libraries\':{},\'optimizer\':{\'enabled\':false,\'runs\':200},\'remappings\':[]},\'sources\':{\'/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol\':{\'keccak256\':\'0xd23b843d2a5cbd6e762c03fc55c62e331f306f37458e14cf791f4d10fc8f4c4f\',\'urls\':[\'bzzr://33f93fb60362d588a089d221a20097a97112f7060364f97151667be7e2007bc7\']},\'openzeppelin-solidity/contracts/cryptography/ECDSA.sol\':{\'keccak256\':\'0x0cbeb7f69b70ff62eb5536caebbc8701b6490ae7ee2e252d77891cf6eba11326\',\'urls\':[\'bzzr://58a443499466ee0706d22af81b43ab6779b519255fbc66276546386ec00a30d7\']},\'openzeppelin-solidity/contracts/math/SafeMath.sol\':{\'keccak256\':\'0xc2a200a877c4a9b2475c246c54ffecc69ffde3e11af83319c63c2dc5458bac80\',\'urls\':[\'bzzr://c8876e2c39b60f155d748d71d715c8f3903fae5a405ac599adcb6ad2f9a583f9\']},\'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\':{\'keccak256\':\'0x3dceb7e4aa237a56111c13f77d7efadeceda7271d62bfac94ac79afab7c1f411\',\'urls\':[\'bzzr://2f34152a5bec385352002c31bc89f5e9935f628f1923ccea45c2281e0084a4db\']},\'openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\':{\'keccak256\':\'0x59e7df16169a498cb8837963b2f5461d88e63bd1eb6c7d58b814d76b84ccbe61\',\'urls\':[\'bzzr://e572c9c4e02e37349702451bf3b5dcbbc86a19da5a51695b5b3e1bfe1e7825dc\']}},\'version\':1}', + 'bytecode': '0x608060405234801561001057600080fd5b5060405160e080612345833981018060405260e081101561003057600080fd5b810190808051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505086600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550846004819055508360058190555082600681905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505061219a806101ab6000396000f3fe608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029', + 'deployedBytecode': '0x608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029', + 'sourceMap': '1091:13213:1:-;;;3145:489;8:9:-1;5:2;;;30:1;27;20:12;5:2;3145:489:1;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3145:489:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:10;3378:17;;:28;;;;;;;;;;;;;;;;;;3437:13;3416:20;;:34;;;;;;;;;;;;;;;;;;3480:12;3460:19;:32;;;;3524:14;3502:21;:36;;;;3565:9;3548:16;:26;;;;3591:10;3584:6;;:17;;;;;;;;;;;;;;;;;;3619:8;3611:7;;:16;;;;;;;;;;;;;;;;;;3145:489;;;;;;;1091:13213;;;;;;', + 'deployedSourceMap': '1091:13213:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14286:9;;;1631:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:31:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6029:318:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6029:318:1;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6029:318:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6029:318:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6029:318:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6029:318:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1470:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:32:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1589:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:36:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1508:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1508:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7985:1423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7985:1423:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7985:1423:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7985:1423:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7985:1423:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1288:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1288:22:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2088:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2088:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2088:45:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1212:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:29:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3874:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3874:390:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3874:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14057:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14057:114:1;;;:::i;:::-;;4420:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4420:1548:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4420:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9566:3091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9566:3091:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9566:3091:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9566:3091:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9566:3091:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6470:1261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6470:1261:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6470:1261:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6470:1261:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6470:1261:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1854:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1854:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1854:53:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1631:31;;;;:::o;6029:318::-;6250:7;6280:60;6330:9;6280:41;:16;:39;:41::i;:::-;:49;;:60;;;;:::i;:::-;6273:67;;6029:318;;;;:::o;1549:34::-;;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1589:36::-;;;;:::o;1508:35::-;;;;;;;;;;;;;:::o;7985:1423::-;8588:12;8616:24;8643:110;8676:4;8682:2;8686:12;8700:11;8713:13;8728:8;8738:5;8643:19;:110::i;:::-;8616:137;;8763:14;8780:50;8802:16;8820:9;8780:21;:50::i;:::-;8763:67;;8897:4;8887:14;;:6;:14;;;8879:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:10;9012:18;;:4;:18;;;9004:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9251:2;9206:18;:36;9225:16;9206:36;;;;;;;;;;;:48;;;;9308:2;9270:109;;9302:4;9270:109;;;9312:12;9326:11;9339:13;9354:8;9364:5;9270:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:4;9390:11;;;;7985:1423;;;;;;;;;;:::o;1288:22::-;;;;;;;;;;;;;:::o;2088:45::-;;;;;;;;;;;;;;;;;:::o;1212:29::-;;;;;;;;;;;;;:::o;3874:390::-;4027:4;4096:2;4050:18;:36;4069:16;4050:36;;;;;;;;;;;;:49;4047:88;;;4119:5;4112:12;;;;4047:88;4187:60;4228:18;4187;:36;4206:16;4187:36;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4152:15;:95;;4144:113;;3874:390;;;;;:::o;14057:114::-;14129:6;;;;;;;;;;;14117:18;;:10;:18;;;14109:27;;;;;;;;14157:6;;;;;;;;;;;14144:20;;;4420:1548;4956:7;5122:1;5093:31;;:17;;;;;;;;;;;:31;;;:58;;;;5134:17;;;;;;;;;;;5128:23;;:2;:23;;;5093:58;5084:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:1;5201:34;;:20;;;;;;;;;;;:34;;;:74;;;;5255:20;;;;;;;;;;;5239:36;;:12;:36;;;5201:74;5192:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:1;5329:19;;:24;:62;;;;5372:19;;5357:11;:34;5329:62;5320:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:1;5444:21;;:26;:68;;;;5491:21;;5474:13;:38;5444:68;5435:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5567:16;;:21;:53;;;;5604:16;;5592:8;:28;5567:53;5558:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:4;5726:10;;5759:1;5754:7;;5787:4;5810;5832:2;5852:12;5882:11;5911:13;5942:8;5692:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5692:268:1;;;5669:292;;;;;;5662:299;;4420:1548;;;;;;;;;:::o;9566:3091::-;10171:12;10221:7;;;;;;;;;;;10207:21;;:10;:21;;;10199:30;;;;;;;;10239:24;10266:110;10299:4;10305:2;10309:12;10323:11;10336:13;10351:8;10361:5;10266:19;:110::i;:::-;10239:137;;10453:99;10473:4;10479:2;10483:12;10497:11;10510:13;10525:8;10535:5;10542:9;10453:19;:99::i;:::-;10444:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10752:34;10772:13;10752:15;:19;;:34;;;;:::i;:::-;10713:18;:36;10732:16;10713:36;;;;;;;;;;;:73;;;;10913:10;:16;10924:4;10913:16;;;;;;;;;;;;;;;;10905:5;:24;10902:75;;;10961:5;10942:10;:16;10953:4;10942:16;;;;;;;;;;;;;;;:24;;;;10902:75;11062:23;11094:12;11088:29;;;11118:2;11088:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11088:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11088:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11088:33:1;;;;;;;;;;;;;;;;11062:59;;11137:12;11131:32;;;11164:4;11169:2;11172:11;11131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11131:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11131:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11131:53:1;;;;;;;;;;;;;;;;;11252:12;11246:29;;;11276:2;11246:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11246:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11246:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11246:33:1;;;;;;;;;;;;;;;;11230:11;11214:15;:27;11213:66;11194:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11371:14;:12;:14::i;:::-;11352:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:2;11481:110;;11514:4;11481:110;;;11524:12;11538:11;11551:13;11566:8;11576:5;11481:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:1;11811:8;:12;11807:822;;;12410:12;12404:32;;;12437:4;12443:10;12455:8;12404:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12404:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12404:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12404:60:1;;;;;;;;;;;;;;;;;12503:14;:12;:14::i;:::-;12478:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:822;12646:4;12639:11;;;;9566:3091;;;;;;;;;;:::o;6470:1261::-;7088:4;7108:24;7135:110;7168:4;7174:2;7178:12;7192:11;7205:13;7220:8;7230:5;7135:19;:110::i;:::-;7108:137;;7255:14;7272:50;7294:16;7312:9;7272:21;:50::i;:::-;7255:67;;7332:17;7358:12;7352:29;;;7382:4;7396;7352:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7352:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7352:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7352:50:1;;;;;;;;;;;;;;;;7332:70;;7412:15;7436:12;7430:29;;;7460:4;7430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7430:35:1;;;;;;;;;;;;;;;;7412:53;;7507:4;7497:14;;:6;:14;;;:40;;;;;7535:2;7527:10;;:4;:10;;;;7497:40;:111;;;;;7572:18;:36;7591:16;7572:36;;;;;;;;;;;;7553:15;:55;;7497:111;:165;;;;;7637:25;7653:8;7637:11;:15;;:25;;;;:::i;:::-;7624:9;:38;;7497:165;:217;;;;;7689:25;7705:8;7689:11;:15;;:25;;;;:::i;:::-;7678:7;:36;;7497:217;7476:248;;;;;;6470:1261;;;;;;;;;;:::o;1854:53::-;;;;;;;;;;;;;;;;;:::o;2650:265:2:-;2719:7;2902:4;2849:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2849:58:2;;;2839:69;;;;;;2832:76;;2650:265;;;:::o;609:1891::-;687:7;768:2;748:9;:16;:22;;744:72;;;802:1;786:19;;;;744:72;882:9;901;920:7;1166:4;1155:9;1151:20;1145:27;1140:32;;1211:4;1200:9;1196:20;1190:27;1185:32;;1264:4;1253:9;1249:20;1243:27;1240:1;1235:36;1230:41;;2182:66;2177:1;2169:10;;;:79;2165:127;;;2279:1;2264:17;;;;;;;2165:127;2311:2;2306:1;:7;;;;:18;;;;;2322:2;2317:1;:7;;;;2306:18;2302:66;;;2355:1;2340:17;;;;;;;2302:66;2469:24;2479:4;2485:1;2488;2491;2469:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2469:24:2;;;;;;;;2462:31;;;;;609:1891;;;;;:::o;1439:145:3:-;1497:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1543:15;;;;;;;;1576:1;1569:8;;;1439:145;;;;:::o;13072:855:1:-;13147:4;13167:19;13189:1;13167:23;;13368:14;13450:3;13445:57;;;;13573:4;13568:220;;;;13361:516;;13445:57;13487:1;13472:16;;13445:57;;13568:220;13673:4;13668:3;13663;13648:30;13770:3;13764:10;13749:25;;13361:516;;13919:1;13904:11;:16;;13897:23;;;13072:855;:::o', + 'source': 'pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \'openzeppelin-solidity/contracts/cryptography/ECDSA.sol\';\nimport \'openzeppelin-solidity/contracts/math/SafeMath.sol\';\nimport \'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\';\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \'paid\' and \'active\'\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \'requiredToAddress Failure\' );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \'requiredTokenAddress Failure\' );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \'requiredTokenAmount Failure\' );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \'requiredPeriodSeconds Failure\' );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \'requiredGasPrice Failure\' );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \'Invalid Signature for subscription cancellation\');\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \'Subscription is not ready or conditions of transction are not met\' );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \'ERC20 Balance did not change correctly\'\n );\n\n require(\n checkSuccess(),\n \'Subscription::executeSubscription TransferFrom failed\'\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \'Subscription::executeSubscription Failed to pay gas as from account\'\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n', + 'sourcePath': '/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol', + 'ast': { + 'absolutePath': '/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol', + 'exportedSymbols': { + 'Subscription': [ 675 ] }, - "id": 676, - "nodeType": "SourceUnit", - "nodes": [ + 'id': 676, + 'nodeType': 'SourceUnit', + 'nodes': [ { - "id": 58, - "literals": [ - "solidity", - "^", - "0.5", - ".2" + 'id': 58, + 'literals': [ + 'solidity', + '^', + '0.5', + '.2' ], - "nodeType": "PragmaDirective", - "src": "0:23:1" + 'nodeType': 'PragmaDirective', + 'src': '0:23:1' }, { - "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", - "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", - "id": 59, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 757, - "src": "900:64:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'id': 59, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 757, + 'src': '900:64:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 60, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 885, - "src": "965:59:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'id': 60, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 885, + 'src': '965:59:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "id": 61, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 1268, - "src": "1025:63:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'id': 61, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 1268, + 'src': '1025:63:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 675, - "linearizedBaseContracts": [ + 'baseContracts': [], + 'contractDependencies': [], + 'contractKind': 'contract', + 'documentation': null, + 'fullyImplemented': true, + 'id': 675, + 'linearizedBaseContracts': [ 675 ], - "name": "Subscription", - "nodeType": "ContractDefinition", - "nodes": [ + 'name': 'Subscription', + 'nodeType': 'ContractDefinition', + 'nodes': [ { - "id": 64, - "libraryName": { - "contractScope": null, - "id": 62, - "name": "ECDSA", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 756, - "src": "1125:5:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ECDSA_$756", - "typeString": "library ECDSA" + 'id': 64, + 'libraryName': { + 'contractScope': null, + 'id': 62, + 'name': 'ECDSA', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 756, + 'src': '1125:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ECDSA_$756', + 'typeString': 'library ECDSA' } }, - "nodeType": "UsingForDirective", - "src": "1119:24:1", - "typeName": { - "id": 63, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'nodeType': 'UsingForDirective', + 'src': '1119:24:1', + 'typeName': { + 'id': 63, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1135:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } } }, { - "id": 67, - "libraryName": { - "contractScope": null, - "id": 65, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 884, - "src": "1154:8:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$884", - "typeString": "library SafeMath" + 'id': 67, + 'libraryName': { + 'contractScope': null, + 'id': 65, + 'name': 'SafeMath', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 884, + 'src': '1154:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_SafeMath_$884', + 'typeString': 'library SafeMath' } }, - "nodeType": "UsingForDirective", - "src": "1148:27:1", - "typeName": { - "id": 66, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1167:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'UsingForDirective', + 'src': '1148:27:1', + 'typeName': { + 'id': 66, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1167:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, { - "constant": false, - "id": 69, - "name": "author", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1212:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'constant': false, + 'id': 69, + 'name': 'author', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1212:29:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, - "typeName": { - "id": 68, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1212:15:1", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeName': { + 'id': 68, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1212:15:1', + 'stateMutability': 'payable', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 71, - "name": "relayer", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1288:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 71, + 'name': 'relayer', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1288:22:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 70, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1288:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 70, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1288:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 73, - "name": "requiredToAddress", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1470:32:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 73, + 'name': 'requiredToAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1470:32:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 72, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1470:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 72, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1470:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 75, - "name": "requiredTokenAddress", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1508:35:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 75, + 'name': 'requiredTokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1508:35:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 74, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1508:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 74, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1508:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 77, - "name": "requiredTokenAmount", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1549:34:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 77, + 'name': 'requiredTokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1549:34:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 76, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1549:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 76, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1549:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 79, - "name": "requiredPeriodSeconds", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1589:36:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 79, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1589:36:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 78, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 78, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1589:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 81, - "name": "requiredGasPrice", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1631:31:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 81, + 'name': 'requiredGasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1631:31:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 80, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1631:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 80, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1631:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 85, - "name": "nextValidTimestamp", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1854:53:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'constant': false, + 'id': 85, + 'name': 'nextValidTimestamp', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1854:53:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' }, - "typeName": { - "id": 84, - "keyType": { - "id": 82, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1862:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 84, + 'keyType': { + 'id': 82, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1862:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "Mapping", - "src": "1854:27:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'nodeType': 'Mapping', + 'src': '1854:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' }, - "valueType": { - "id": 83, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1873:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'valueType': { + 'id': 83, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1873:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 89, - "name": "extraNonce", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "2088:45:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'constant': false, + 'id': 89, + 'name': 'extraNonce', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '2088:45:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' }, - "typeName": { - "id": 88, - "keyType": { - "id": 86, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2096:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 88, + 'keyType': { + 'id': 86, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2096:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Mapping", - "src": "2088:27:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'nodeType': 'Mapping', + 'src': '2088:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' }, - "valueType": { - "id": 87, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2107:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'valueType': { + 'id': 87, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2107:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "anonymous": false, - "documentation": null, - "id": 105, - "name": "ExecuteSubscription", - "nodeType": "EventDefinition", - "parameters": { - "id": 104, - "nodeType": "ParameterList", - "parameters": [ + 'anonymous': false, + 'documentation': null, + 'id': 105, + 'name': 'ExecuteSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 104, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 91, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2175:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 90, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2175:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 91, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2175:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 90, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2175:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 93, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2222:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 92, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2222:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 93, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2222:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 92, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2222:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 95, - "indexed": false, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2266:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 94, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2266:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 95, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2266:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 94, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2266:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 97, - "indexed": false, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2338:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 96, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 97, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2338:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 96, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2338:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 99, - "indexed": false, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2408:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 98, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2408:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 99, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2408:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 98, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2408:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 101, - "indexed": false, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2480:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 100, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2480:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 101, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2480:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 100, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2480:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 103, - "indexed": false, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2557:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 102, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2557:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 103, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2557:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 102, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2557:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "2165:471:1" + 'src': '2165:471:1' }, - "src": "2140:497:1" + 'src': '2140:497:1' }, { - "anonymous": false, - "documentation": null, - "id": 121, - "name": "CancelSubscription", - "nodeType": "EventDefinition", - "parameters": { - "id": 120, - "nodeType": "ParameterList", - "parameters": [ + 'anonymous': false, + 'documentation': null, + 'id': 121, + 'name': 'CancelSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 120, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 107, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2677:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 106, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2677:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 107, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2677:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 106, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2677:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 109, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2724:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 108, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2724:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 109, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2724:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 108, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2724:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 111, - "indexed": false, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2768:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 110, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2768:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 111, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2768:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 110, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2768:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 113, - "indexed": false, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2840:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 112, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2840:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 113, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2840:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 112, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2840:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 115, - "indexed": false, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2910:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 114, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2910:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 115, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2910:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 114, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2910:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 117, - "indexed": false, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2982:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 116, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2982:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 117, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2982:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 116, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2982:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 119, - "indexed": false, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "3059:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3059:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 119, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '3059:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 118, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3059:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "2667:471:1" + 'src': '2667:471:1' }, - "src": "2643:496:1" + 'src': '2643:496:1' }, { - "body": { - "id": 167, - "nodeType": "Block", - "src": "3368:266:1", - "statements": [ + 'body': { + 'id': 167, + 'nodeType': 'Block', + 'src': '3368:266:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 138, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "3378:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 140, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 138, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '3378:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 139, - "name": "_toAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3396:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 139, + 'name': '_toAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 123, + 'src': '3396:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3378:28:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3378:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "3378:28:1" + 'id': 141, + 'nodeType': 'ExpressionStatement', + 'src': '3378:28:1' }, { - "expression": { - "argumentTypes": null, - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 142, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "3416:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 144, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 142, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '3416:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 143, - "name": "_tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3437:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 143, + 'name': '_tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 125, + 'src': '3437:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3416:34:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3416:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 145, - "nodeType": "ExpressionStatement", - "src": "3416:34:1" + 'id': 145, + 'nodeType': 'ExpressionStatement', + 'src': '3416:34:1' }, { - "expression": { - "argumentTypes": null, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 146, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "3460:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 148, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 146, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '3460:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 147, - "name": "_tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3480:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 147, + 'name': '_tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 127, + 'src': '3480:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3460:32:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3460:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 149, - "nodeType": "ExpressionStatement", - "src": "3460:32:1" + 'id': 149, + 'nodeType': 'ExpressionStatement', + 'src': '3460:32:1' }, { - "expression": { - "argumentTypes": null, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 150, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "3502:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 152, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 150, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '3502:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 151, - "name": "_periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3524:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 151, + 'name': '_periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 129, + 'src': '3524:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3502:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3502:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "3502:36:1" + 'id': 153, + 'nodeType': 'ExpressionStatement', + 'src': '3502:36:1' }, { - "expression": { - "argumentTypes": null, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 154, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "3548:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 156, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 154, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '3548:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 155, - "name": "_gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3565:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 155, + 'name': '_gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 131, + 'src': '3565:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3548:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3548:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 157, - "nodeType": "ExpressionStatement", - "src": "3548:26:1" + 'id': 157, + 'nodeType': 'ExpressionStatement', + 'src': '3548:26:1' }, { - "expression": { - "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 158, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "3584:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'expression': { + 'argumentTypes': null, + 'id': 161, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 158, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3584:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 159, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "3591:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 159, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '3591:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3591:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 160, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3591:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "3584:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'src': '3584:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "3584:17:1" + 'id': 162, + 'nodeType': 'ExpressionStatement', + 'src': '3584:17:1' }, { - "expression": { - "argumentTypes": null, - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 163, - "name": "relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "3611:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 165, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 163, + 'name': 'relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '3611:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 164, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "3619:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 164, + 'name': '_relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 135, + 'src': '3619:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3611:16:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3611:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 166, - "nodeType": "ExpressionStatement", - "src": "3611:16:1" + 'id': 166, + 'nodeType': 'ExpressionStatement', + 'src': '3611:16:1' } ] }, - "documentation": null, - "id": 168, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 136, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 168, + 'implemented': true, + 'kind': 'constructor', + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 136, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 123, - "name": "_toAddress", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3166:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 122, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3166:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 123, + 'name': '_toAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3166:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 122, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3166:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 125, - "name": "_tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3194:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 124, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3194:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 125, + 'name': '_tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3194:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 124, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3194:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 127, - "name": "_tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3225:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 126, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 127, + 'name': '_tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3225:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 126, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3225:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 129, - "name": "_periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3255:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3255:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 129, + 'name': '_periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3255:22:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 128, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3255:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 131, - "name": "_gasPrice", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3287:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 130, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3287:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 131, + 'name': '_gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3287:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 130, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3287:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 133, - "name": "_version", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3314:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 132, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3314:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + 'constant': false, + 'id': 133, + 'name': '_version', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3314:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 132, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '3314:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 135, - "name": "_relayer", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3338:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 134, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3338:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 135, + 'name': '_relayer', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3338:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 134, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3338:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "3156:204:1" + 'src': '3156:204:1' }, - "returnParameters": { - "id": 137, - "nodeType": "ParameterList", - "parameters": [], - "src": "3368:0:1" + 'returnParameters': { + 'id': 137, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3368:0:1' }, - "scope": 675, - "src": "3145:489:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '3145:489:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 200, - "nodeType": "Block", - "src": "4037:227:1", - "statements": [ + 'body': { + 'id': 200, + 'nodeType': 'Block', + 'src': '4037:227:1', + 'statements': [ { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 177, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "4050:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'id': 184, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 177, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4050:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 179, - "indexExpression": { - "argumentTypes": null, - "id": 178, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "4069:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 179, + 'indexExpression': { + 'argumentTypes': null, + 'id': 178, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 170, + 'src': '4069:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4050:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4050:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "4096:2:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 181, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4097:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + 'argumentTypes': null, + 'id': 182, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '4096:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 181, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4097:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' }, - "value": "1" + 'value': '1' }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeDescriptions': { + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } ], - "id": 180, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4088:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" + 'id': 180, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '4088:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' }, - "typeName": "uint256" + 'typeName': 'uint256' }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4088:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 183, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4088:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "4050:49:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '4050:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 188, - "nodeType": "IfStatement", - "src": "4047:88:1", - "trueBody": { - "id": 187, - "nodeType": "Block", - "src": "4100:35:1", - "statements": [ + 'falseBody': null, + 'id': 188, + 'nodeType': 'IfStatement', + 'src': '4047:88:1', + 'trueBody': { + 'id': 187, + 'nodeType': 'Block', + 'src': '4100:35:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4119:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '66616c7365', + 'id': 185, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4119:5:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "false" + 'value': 'false' }, - "functionReturnParameters": 176, - "id": 186, - "nodeType": "Return", - "src": "4112:12:1" + 'functionReturnParameters': 176, + 'id': 186, + 'nodeType': 'Return', + 'src': '4112:12:1' } ] } }, { - "expression": { - "argumentTypes": null, - "components": [ + 'expression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 189, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "4152:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'id': 197, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 189, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '4152:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4152:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 190, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4152:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '<=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 195, - "name": "gracePeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "4228:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 195, + 'name': 'gracePeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 172, + 'src': '4228:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 191, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "4187:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 191, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4187:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 193, - "indexExpression": { - "argumentTypes": null, - "id": 192, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "4206:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 193, + 'indexExpression': { + 'argumentTypes': null, + 'id': 192, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 170, + 'src': '4206:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4187:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4187:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "4187:40:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 194, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '4187:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4187:60:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 196, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4187:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "4152:95:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '4152:95:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "id": 198, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4151:106:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 198, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '4151:106:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 176, - "id": 199, - "nodeType": "Return", - "src": "4144:113:1" + 'functionReturnParameters': 176, + 'id': 199, + 'nodeType': 'Return', + 'src': '4144:113:1' } ] }, - "documentation": null, - "id": 201, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isSubscriptionActive", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 173, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 201, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'isSubscriptionActive', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 173, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 170, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "3913:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 169, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3913:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 170, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '3913:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 169, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '3913:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 172, - "name": "gracePeriodSeconds", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "3947:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 171, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3947:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 172, + 'name': 'gracePeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '3947:26:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 171, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3947:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "3903:76:1" + 'src': '3903:76:1' }, - "returnParameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 176, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 175, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "4027:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 174, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4027:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 175, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '4027:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 174, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '4027:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4026:6:1" + 'src': '4026:6:1' }, - "scope": 675, - "src": "3874:390:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '3874:390:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'external' }, { - "body": { - "id": 300, - "nodeType": "Block", - "src": "4969:999:1", - "statements": [ + 'body': { + 'id': 300, + 'nodeType': 'Block', + 'src': '4969:999:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 229, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 221, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "5093:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 225, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 221, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5093:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 223, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5122:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 223, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5122:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 222, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5114:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 222, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5114:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5114:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 224, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5114:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "5093:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5093:31:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 226, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 205, - "src": "5128:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 228, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 226, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 205, + 'src': '5128:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 227, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "5134:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 227, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5134:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "5128:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5128:23:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5093:58:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5093:58:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f41646472657373204661696c757265", - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5153:27:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", - "typeString": "literal_string \"requiredToAddress Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f41646472657373204661696c757265', + 'id': 230, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5153:27:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string \'requiredToAddress Failure\'' }, - "value": "requiredToAddress Failure" + 'value': 'requiredToAddress Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", - "typeString": "literal_string \"requiredToAddress Failure\"" + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string \'requiredToAddress Failure\'' } ], - "id": 220, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 220, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5084:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5084:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5084:98:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 231, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5084:98:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 232, - "nodeType": "ExpressionStatement", - "src": "5084:98:1" + 'id': 232, + 'nodeType': 'ExpressionStatement', + 'src': '5084:98:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 242, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 234, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "5201:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 238, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 234, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5201:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 236, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5233:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 236, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5233:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 235, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 235, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5225:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 237, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5225:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "5201:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5201:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 239, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 207, - "src": "5239:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 241, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 239, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 207, + 'src': '5239:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 240, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "5255:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 240, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5255:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "5239:36:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5239:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5201:74:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5201:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5277:30:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", - "typeString": "literal_string \"requiredTokenAddress Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', + 'id': 243, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5277:30:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string \'requiredTokenAddress Failure\'' }, - "value": "requiredTokenAddress Failure" + 'value': 'requiredTokenAddress Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", - "typeString": "literal_string \"requiredTokenAddress Failure\"" + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string \'requiredTokenAddress Failure\'' } ], - "id": 233, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 233, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5192:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5192:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5192:118:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 244, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5192:118:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 245, - "nodeType": "ExpressionStatement", - "src": "5192:118:1" + 'id': 245, + 'nodeType': 'ExpressionStatement', + 'src': '5192:118:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 253, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 247, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "5329:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 249, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 247, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5329:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 248, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5352:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 248, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5352:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5329:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5329:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 250, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "5357:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 252, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 250, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 209, + 'src': '5357:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 251, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "5372:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 251, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5372:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5357:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5357:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5329:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5329:62:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5393:29:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", - "typeString": "literal_string \"requiredTokenAmount Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', + 'id': 254, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5393:29:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string \'requiredTokenAmount Failure\'' }, - "value": "requiredTokenAmount Failure" + 'value': 'requiredTokenAmount Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", - "typeString": "literal_string \"requiredTokenAmount Failure\"" + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string \'requiredTokenAmount Failure\'' } ], - "id": 246, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 246, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5320:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5320:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5320:105:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 255, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5320:105:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 256, - "nodeType": "ExpressionStatement", - "src": "5320:105:1" + 'id': 256, + 'nodeType': 'ExpressionStatement', + 'src': '5320:105:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 264, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 258, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "5444:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 260, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 258, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5444:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5469:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 259, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5469:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5444:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5444:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 261, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "5474:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 263, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 261, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 211, + 'src': '5474:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 262, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "5491:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 262, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5491:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5474:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5474:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5444:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5444:68:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5514:31:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", - "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', + 'id': 265, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5514:31:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string \'requiredPeriodSeconds Failure\'' }, - "value": "requiredPeriodSeconds Failure" + 'value': 'requiredPeriodSeconds Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", - "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string \'requiredPeriodSeconds Failure\'' } ], - "id": 257, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 257, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5435:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5435:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5435:113:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 266, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5435:113:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 267, - "nodeType": "ExpressionStatement", - "src": "5435:113:1" + 'id': 267, + 'nodeType': 'ExpressionStatement', + 'src': '5435:113:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 275, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 269, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "5567:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 271, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 269, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '5567:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5587:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 270, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5587:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5567:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5567:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 272, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "5592:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 274, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 272, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 213, + 'src': '5592:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 273, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "5604:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 273, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '5604:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5592:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5592:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5567:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5567:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "72657175697265644761735072696365204661696c757265", - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5622:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", - "typeString": "literal_string \"requiredGasPrice Failure\"" + 'argumentTypes': null, + 'hexValue': '72657175697265644761735072696365204661696c757265', + 'id': 276, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5622:26:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string \'requiredGasPrice Failure\'' }, - "value": "requiredGasPrice Failure" + 'value': 'requiredGasPrice Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", - "typeString": "literal_string \"requiredGasPrice Failure\"" + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string \'requiredGasPrice Failure\'' } ], - "id": 268, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 268, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5558:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5558:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5558:93:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 277, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5558:93:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 278, - "nodeType": "ExpressionStatement", - "src": "5558:93:1" + 'id': 278, + 'nodeType': 'ExpressionStatement', + 'src': '5558:93:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30783139", - "id": 283, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5731:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + 'argumentTypes': null, + 'hexValue': '30783139', + 'id': 283, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5731:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' }, - "value": "0x19" + 'value': '0x19' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' } ], - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5726:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" + 'id': 282, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5726:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' }, - "typeName": "byte" + 'typeName': 'byte' }, - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5726:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'id': 284, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5726:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 286, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5759:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 286, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5759:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 285, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5754:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" + 'id': 285, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5754:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' }, - "typeName": "byte" + 'typeName': 'byte' }, - "id": 287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5754:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'id': 287, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5754:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 289, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "5787:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'argumentTypes': null, + 'id': 289, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1374, + 'src': '5787:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } ], - "id": 288, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5779:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 288, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5779:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5779:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 290, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5779:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, { - "argumentTypes": null, - "id": 291, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 203, - "src": "5810:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 291, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 203, + 'src': '5810:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 292, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 205, - "src": "5832:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 292, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 205, + 'src': '5832:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 293, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 207, - "src": "5852:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 293, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 207, + 'src': '5852:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 294, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "5882:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 294, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 209, + 'src': '5882:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 295, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "5911:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 295, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 211, + 'src': '5911:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 296, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "5942:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 296, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 213, + 'src': '5942:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' }, { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 280, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "5692:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" + 'expression': { + 'argumentTypes': null, + 'id': 280, + 'name': 'abi', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1338, + 'src': '5692:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_abi', + 'typeString': 'abi' } }, - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5692:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" + 'id': 281, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'memberName': 'encodePacked', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '5692:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', + 'typeString': 'function () pure returns (bytes memory)' } }, - "id": 297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5692:268:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'id': 297, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5692:268:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 279, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1345, - "src": "5669:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" + 'id': 279, + 'name': 'keccak256', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1345, + 'src': '5669:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$', + 'typeString': 'function (bytes memory) pure returns (bytes32)' } }, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5669:292:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 298, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5669:292:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "functionReturnParameters": 219, - "id": 299, - "nodeType": "Return", - "src": "5662:299:1" + 'functionReturnParameters': 219, + 'id': 299, + 'nodeType': 'Return', + 'src': '5662:299:1' } ] }, - "documentation": null, - "id": 301, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSubscriptionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 216, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 301, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'getSubscriptionHash', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 216, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 203, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4458:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 202, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4458:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 203, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4458:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 202, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4458:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 205, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4497:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 204, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4497:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 205, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4497:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 204, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4497:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 207, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4533:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 206, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4533:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 207, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4533:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 206, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4533:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 209, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4605:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 208, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4605:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 209, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4605:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 208, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4605:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 211, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4675:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4675:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 211, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4675:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 210, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4675:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 213, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4747:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 212, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 213, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4747:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 212, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4747:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 215, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4831:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4831:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 215, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4831:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 214, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4831:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4448:462:1" + 'src': '4448:462:1' }, - "returnParameters": { - "id": 219, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 219, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 218, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4956:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 217, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4956:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 218, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4956:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 217, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '4956:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4955:9:1" + 'src': '4955:9:1' }, - "scope": 675, - "src": "4420:1548:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '4420:1548:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 317, - "nodeType": "Block", - "src": "6263:84:1", - "statements": [ + 'body': { + 'id': 317, + 'nodeType': 'Block', + 'src': '6263:84:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 314, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "6330:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 314, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 305, + 'src': '6330:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 310, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 303, - "src": "6280:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'expression': { + 'argumentTypes': null, + 'id': 310, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 303, + 'src': '6280:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "id": 311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toEthSignedMessageHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 755, - "src": "6280:39:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" + 'id': 311, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'toEthSignedMessageHash', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 755, + 'src': '6280:39:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32) pure returns (bytes32)' } }, - "id": 312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6280:41:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 312, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6280:41:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "id": 313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 739, - "src": "6280:49:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 313, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'recover', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 739, + 'src': '6280:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6280:60:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 315, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6280:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "functionReturnParameters": 309, - "id": 316, - "nodeType": "Return", - "src": "6273:67:1" + 'functionReturnParameters': 309, + 'id': 316, + 'nodeType': 'Return', + 'src': '6273:67:1' } ] }, - "documentation": null, - "id": 318, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSubscriptionSigner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 306, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 318, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'getSubscriptionSigner', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 306, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 303, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6069:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 302, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6069:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 303, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6069:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 302, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '6069:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 305, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6126:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 304, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6126:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 305, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6126:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 304, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6126:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6059:145:1" + 'src': '6059:145:1' }, - "returnParameters": { - "id": 309, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 309, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 308, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6250:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 307, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6250:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 308, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6250:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 307, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6250:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6249:9:1" + 'src': '6249:9:1' }, - "scope": 675, - "src": "6029:318:1", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '6029:318:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 409, - "nodeType": "Block", - "src": "7098:633:1", - "statements": [ + 'body': { + 'id': 409, + 'nodeType': 'Block', + 'src': '7098:633:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 340 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 340, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7108:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 340, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7108:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 339, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7108:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 339, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '7108:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 350, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 350, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 342, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7168:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 342, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7168:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 343, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 322, - "src": "7174:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 343, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 322, + 'src': '7174:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 344, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7178:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 344, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7178:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 345, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7192:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 345, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7192:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 346, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 328, - "src": "7205:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 346, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '7205:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 347, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7220:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 347, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7220:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 348, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 332, - "src": "7230:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 348, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 332, + 'src': '7230:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 341, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "7135:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 341, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '7135:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7135:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 349, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7135:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7108:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7108:137:1' }, { - "assignments": [ + 'assignments': [ 352 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 352, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7255:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 352, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7255:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 351, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7255:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 351, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7255:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 357, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 357, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 354, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 340, - "src": "7294:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'argumentTypes': null, + 'id': 354, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 340, + 'src': '7294:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, { - "argumentTypes": null, - "id": 355, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 334, - "src": "7312:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 355, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 334, + 'src': '7312:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 353, - "name": "getSubscriptionSigner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "7272:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 353, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 318, + 'src': '7272:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7272:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 356, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7272:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7255:67:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7255:67:1' }, { - "assignments": [ + 'assignments': [ 359 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 359, - "name": "allowance", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7332:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 359, + 'name': 'allowance', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7332:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 358, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7332:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 358, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7332:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 369, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 369, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 364, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7382:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 364, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7382:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 366, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "7396:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'argumentTypes': null, + 'id': 366, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1374, + 'src': '7396:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } ], - "id": 365, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7388:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 365, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '7388:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7388:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 367, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7388:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 361, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7358:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 361, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7358:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 360, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "7352:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 360, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '7352:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7352:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 362, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7352:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 363, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "allowance", - "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "7352:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view external returns (uint256)" + 'id': 363, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'allowance', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 941, + 'src': '7352:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address,address) view external returns (uint256)' } }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7352:50:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 368, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7352:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7332:70:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7332:70:1' }, { - "assignments": [ + 'assignments': [ 371 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 371, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7412:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 371, + 'name': 'balance', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7412:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 370, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7412:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 370, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7412:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 378, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 378, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 376, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7460:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 376, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7460:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 373, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7436:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 373, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7436:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 372, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "7430:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 372, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '7430:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7430:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 374, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7430:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "7430:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 375, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '7430:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7430:35:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 377, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7430:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7412:53:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7412:53:1' }, { - "expression": { - "argumentTypes": null, - "components": [ + 'expression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 406, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 399, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 392, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 385, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 379, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "7497:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 381, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 379, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 352, + 'src': '7497:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 380, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7507:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 380, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7507:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "7497:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 382, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7527:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 384, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 382, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7527:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 383, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 322, - "src": "7535:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'id': 383, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 322, + 'src': '7535:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "7527:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7527:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 386, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "7553:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'id': 391, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 386, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '7553:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7553:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 387, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '7553:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "7572:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 388, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '7572:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 340, - "src": "7591:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 390, + 'indexExpression': { + 'argumentTypes': null, + 'id': 389, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 340, + 'src': '7591:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7572:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '7572:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7553:55:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7553:55:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:111:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:111:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 393, - "name": "allowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "7624:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 398, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 393, + 'name': 'allowance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 359, + 'src': '7624:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 396, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7653:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 396, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7653:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 394, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7637:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 394, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7637:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "7637:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 395, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '7637:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7637:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 397, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7637:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7624:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7624:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:165:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:165:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 400, - "name": "balance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "7678:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 405, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 400, + 'name': 'balance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 371, + 'src': '7678:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 403, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7705:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 403, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7705:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 401, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7689:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 401, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7689:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "7689:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 402, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '7689:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7689:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 404, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7689:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7678:36:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7678:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:217:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:217:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "id": 407, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7483:241:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 407, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '7483:241:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 338, - "id": 408, - "nodeType": "Return", - "src": "7476:248:1" + 'functionReturnParameters': 338, + 'id': 408, + 'nodeType': 'Return', + 'src': '7476:248:1' } ] }, - "documentation": null, - "id": 410, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isSubscriptionReady", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 335, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 410, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'isSubscriptionReady', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 335, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 320, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6508:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 319, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6508:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 320, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6508:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 319, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6508:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 322, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6547:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 321, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6547:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 322, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6547:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 321, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6547:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 324, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6583:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 323, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6583:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 324, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6583:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 323, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6583:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 326, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6655:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 325, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6655:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 326, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6655:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 325, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6655:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 328, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6725:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6725:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 328, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6725:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 327, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6725:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 330, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6797:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6797:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 330, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6797:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 329, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6797:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 332, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6882:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 331, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6882:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 332, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6882:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 331, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6882:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 334, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6964:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 333, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6964:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 334, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6964:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 333, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6964:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6498:544:1" + 'src': '6498:544:1' }, - "returnParameters": { - "id": 338, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 338, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 337, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "7088:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 336, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7088:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 337, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '7088:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 336, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '7088:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "7087:6:1" + 'src': '7087:6:1' }, - "scope": 675, - "src": "6470:1261:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '6470:1261:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 486, - "nodeType": "Block", - "src": "8606:802:1", - "statements": [ + 'body': { + 'id': 486, + 'nodeType': 'Block', + 'src': '8606:802:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 432 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 432, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 486, - "src": "8616:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 432, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 486, + 'src': '8616:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 431, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 431, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '8616:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 442, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 442, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 434, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "8676:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 434, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '8676:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 435, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 414, - "src": "8682:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 435, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 414, + 'src': '8682:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 436, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 416, - "src": "8686:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 436, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 416, + 'src': '8686:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 437, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "8700:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 437, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 418, + 'src': '8700:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 438, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "8713:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 438, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 420, + 'src': '8713:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 439, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "8728:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 439, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 422, + 'src': '8728:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 440, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "8738:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 440, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 424, + 'src': '8738:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 433, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "8643:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 433, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '8643:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8643:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 441, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8643:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "8616:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '8616:137:1' }, { - "assignments": [ + 'assignments': [ 444 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 444, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 486, - "src": "8763:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 444, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 486, + 'src': '8763:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8763:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 443, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8763:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 449, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 449, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 446, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "8802:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'argumentTypes': null, + 'id': 446, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 432, + 'src': '8802:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, { - "argumentTypes": null, - "id": 447, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 426, - "src": "8820:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 447, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 426, + 'src': '8820:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 445, - "name": "getSubscriptionSigner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "8780:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 445, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 318, + 'src': '8780:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8780:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 448, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8780:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "VariableDeclarationStatement", - "src": "8763:67:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '8763:67:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 451, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "8887:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 453, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 451, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 444, + 'src': '8887:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 452, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "8897:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 452, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '8897:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "8887:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '8887:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", - "id": 454, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8903:49:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", - "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + 'argumentTypes': null, + 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', + 'id': 454, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '8903:49:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string \'Invalid Signature for subscription cancellation\'' }, - "value": "Invalid Signature for subscription cancellation" + 'value': 'Invalid Signature for subscription cancellation' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", - "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string \'Invalid Signature for subscription cancellation\'' } ], - "id": 450, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 450, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "8879:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '8879:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8879:74:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 455, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8879:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 456, - "nodeType": "ExpressionStatement", - "src": "8879:74:1" + 'id': 456, + 'nodeType': 'ExpressionStatement', + 'src': '8879:74:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "9012:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 461, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 458, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '9012:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "9020:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 459, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '9020:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9020:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 460, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '9020:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "9012:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '9012:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9032:34:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", - "typeString": "literal_string \"msg.sender is not the subscriber\"" + 'argumentTypes': null, + 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', + 'id': 462, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9032:34:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string \'msg.sender is not the subscriber\'' }, - "value": "msg.sender is not the subscriber" + 'value': 'msg.sender is not the subscriber' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", - "typeString": "literal_string \"msg.sender is not the subscriber\"" + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string \'msg.sender is not the subscriber\'' } ], - "id": 457, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 457, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "9004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '9004:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9004:63:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 463, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9004:63:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 464, - "nodeType": "ExpressionStatement", - "src": "9004:63:1" + 'id': 464, + 'nodeType': 'ExpressionStatement', + 'src': '9004:63:1' }, { - "expression": { - "argumentTypes": null, - "id": 472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 465, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "9206:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 472, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 465, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '9206:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 467, - "indexExpression": { - "argumentTypes": null, - "id": 466, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "9225:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 467, + 'indexExpression': { + 'argumentTypes': null, + 'id': 466, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 432, + 'src': '9225:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9206:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '9206:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9251:2:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9252:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + 'argumentTypes': null, + 'id': 470, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '9251:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 469, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9252:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' }, - "value": "1" + 'value': '1' }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeDescriptions': { + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } ], - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9243:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" + 'id': 468, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '9243:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' }, - "typeName": "uint256" + 'typeName': 'uint256' }, - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9243:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 471, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9243:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "9206:48:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '9206:48:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 473, - "nodeType": "ExpressionStatement", - "src": "9206:48:1" + 'id': 473, + 'nodeType': 'ExpressionStatement', + 'src': '9206:48:1' }, { - "eventCall": { - "argumentTypes": null, - "arguments": [ + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 475, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "9302:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 475, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '9302:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 476, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 414, - "src": "9308:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 476, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 414, + 'src': '9308:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 477, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 416, - "src": "9312:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 477, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 416, + 'src': '9312:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 478, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "9326:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 478, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 418, + 'src': '9326:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 479, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "9339:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 479, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 420, + 'src': '9339:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 480, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "9354:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 480, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 422, + 'src': '9354:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 481, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "9364:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 481, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 424, + 'src': '9364:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 474, - "name": "CancelSubscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "9270:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + 'id': 474, + 'name': 'CancelSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 121, + 'src': '9270:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' } }, - "id": 482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9270:109:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 482, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9270:109:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 483, - "nodeType": "EmitStatement", - "src": "9265:114:1" + 'id': 483, + 'nodeType': 'EmitStatement', + 'src': '9265:114:1' }, { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 484, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9397:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 484, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9397:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "true" + 'value': 'true' }, - "functionReturnParameters": 430, - "id": 485, - "nodeType": "Return", - "src": "9390:11:1" + 'functionReturnParameters': 430, + 'id': 485, + 'nodeType': 'Return', + 'src': '9390:11:1' } ] }, - "documentation": null, - "id": 487, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cancelSubscription", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 427, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 487, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'cancelSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 427, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 412, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8022:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 411, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8022:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 412, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8022:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 411, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8022:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 414, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8061:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 413, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8061:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 414, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8061:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 413, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8061:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 416, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8097:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 415, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8097:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 416, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8097:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 415, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8097:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 418, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8169:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 417, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8169:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 418, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8169:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 417, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8169:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 420, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8239:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 419, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8239:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 420, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8239:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 419, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8239:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 422, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8311:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8311:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 422, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8311:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 421, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8311:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 424, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8395:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 423, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8395:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 424, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8395:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 423, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8395:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 426, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8477:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 425, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8477:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 426, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8477:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 425, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '8477:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "8012:543:1" + 'src': '8012:543:1' }, - "returnParameters": { - "id": 430, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 430, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 429, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8588:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 428, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8588:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 429, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8588:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 428, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '8588:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "8587:14:1" + 'src': '8587:14:1' }, - "scope": 675, - "src": "7985:1423:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '7985:1423:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 636, - "nodeType": "Block", - "src": "10189:2468:1", - "statements": [ + 'body': { + 'id': 636, + 'nodeType': 'Block', + 'src': '10189:2468:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 509, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'id': 512, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 509, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '10207:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10207:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 510, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '10207:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 511, - "name": "relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "10221:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 511, + 'name': 'relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '10221:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "10207:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '10207:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } ], - "id": 508, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 508, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1354, - "src": "10199:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + 'referencedDeclaration': 1354, + 'src': '10199:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' } }, - "id": 513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10199:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 513, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10199:30:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 514, - "nodeType": "ExpressionStatement", - "src": "10199:30:1" + 'id': 514, + 'nodeType': 'ExpressionStatement', + 'src': '10199:30:1' }, { - "assignments": [ + 'assignments': [ 516 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 516, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "10239:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 516, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 636, + 'src': '10239:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 515, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10239:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 515, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '10239:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 526, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 526, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 518, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10299:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 518, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10299:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 519, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "10305:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 519, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '10305:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 520, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "10309:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 520, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '10309:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 521, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "10323:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 521, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '10323:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 522, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10336:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 522, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10336:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 523, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "10351:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 523, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '10351:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 524, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10361:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 524, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10361:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 517, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "10266:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 517, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '10266:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10266:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 525, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10266:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "10239:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '10239:137:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 529, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10473:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 529, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10473:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 530, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "10479:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 530, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '10479:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 531, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "10483:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 531, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '10483:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 532, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "10497:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 532, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '10497:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 533, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10510:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 533, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10510:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 534, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "10525:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 534, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '10525:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 535, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10535:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 535, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10535:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 536, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "10542:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 536, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 503, + 'src': '10542:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 528, - "name": "isSubscriptionReady", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 410, - "src": "10453:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" + 'id': 528, + 'name': 'isSubscriptionReady', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 410, + 'src': '10453:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' } }, - "id": 537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10453:99:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 537, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10453:99:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10554:67:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", - "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', + 'id': 538, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '10554:67:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string \'Subscription is not ready or conditions of transction are not met\'' }, - "value": "Subscription is not ready or conditions of transction are not met" + 'value': 'Subscription is not ready or conditions of transction are not met' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", - "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string \'Subscription is not ready or conditions of transction are not met\'' } ], - "id": 527, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 527, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "10444:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '10444:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10444:179:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 539, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10444:179:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 540, - "nodeType": "ExpressionStatement", - "src": "10444:179:1" + 'id': 540, + 'nodeType': 'ExpressionStatement', + 'src': '10444:179:1' }, { - "expression": { - "argumentTypes": null, - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 541, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "10713:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 549, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 541, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '10713:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 543, - "indexExpression": { - "argumentTypes": null, - "id": 542, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10732:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 543, + 'indexExpression': { + 'argumentTypes': null, + 'id': 542, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10732:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10713:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '10713:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 547, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10772:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 547, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10772:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 544, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "10752:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'expression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 544, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '10752:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10752:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 545, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '10752:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "10752:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 546, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '10752:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10752:34:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 548, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10752:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10713:73:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '10713:73:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 550, - "nodeType": "ExpressionStatement", - "src": "10713:73:1" + 'id': 550, + 'nodeType': 'ExpressionStatement', + 'src': '10713:73:1' }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 551, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10905:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 555, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 551, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10905:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 552, - "name": "extraNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "10913:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 552, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '10913:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' } }, - "id": 554, - "indexExpression": { - "argumentTypes": null, - "id": 553, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10924:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 554, + 'indexExpression': { + 'argumentTypes': null, + 'id': 553, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10924:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10913:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '10913:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10905:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '10905:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 563, - "nodeType": "IfStatement", - "src": "10902:75:1", - "trueBody": { - "id": 562, - "nodeType": "Block", - "src": "10930:47:1", - "statements": [ + 'falseBody': null, + 'id': 563, + 'nodeType': 'IfStatement', + 'src': '10902:75:1', + 'trueBody': { + 'id': 562, + 'nodeType': 'Block', + 'src': '10930:47:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 556, - "name": "extraNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "10942:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 560, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 556, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '10942:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' } }, - "id": 558, - "indexExpression": { - "argumentTypes": null, - "id": 557, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10953:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 558, + 'indexExpression': { + 'argumentTypes': null, + 'id': 557, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10953:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10942:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '10942:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 559, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10961:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 559, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10961:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10942:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '10942:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 561, - "nodeType": "ExpressionStatement", - "src": "10942:24:1" + 'id': 561, + 'nodeType': 'ExpressionStatement', + 'src': '10942:24:1' } ] } }, { - "assignments": [ + 'assignments': [ 565 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 565, - "name": "startingBalance", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "11062:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 565, + 'name': 'startingBalance', + 'nodeType': 'VariableDeclaration', + 'scope': 636, + 'src': '11062:23:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 564, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11062:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 564, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '11062:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 572, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 572, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 570, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11118:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 570, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11118:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 567, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11094:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 567, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11094:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 566, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11088:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 566, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11088:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11088:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 568, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11088:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "11088:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 569, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '11088:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11088:33:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 571, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11088:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "11062:59:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '11062:59:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 577, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "11164:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 577, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '11164:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 578, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11169:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 578, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11169:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 579, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11172:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 579, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11172:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 574, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11137:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 574, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11137:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 573, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 573, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11131:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11131:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 575, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11131:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 1014, - "src": "11131:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + 'id': 576, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1014, + 'src': '11131:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' } }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11131:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 580, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11131:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "id": 581, - "nodeType": "ExpressionStatement", - "src": "11131:53:1" + 'id': 581, + 'nodeType': 'ExpressionStatement', + 'src': '11131:53:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ + 'id': 593, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 583, - "name": "startingBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 565, - "src": "11214:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 585, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 583, + 'name': 'startingBalance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 565, + 'src': '11214:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 584, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11230:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '+', + 'rightExpression': { + 'argumentTypes': null, + 'id': 584, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11230:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "11214:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '11214:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "id": 586, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11213:29:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 586, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '11213:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 591, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11276:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 591, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11276:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 588, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11252:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 588, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11252:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 587, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11246:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 587, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11246:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11246:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 589, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11246:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "11246:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 590, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '11246:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 592, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11246:33:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 592, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11246:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "11213:66:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '11213:66:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11291:40:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", - "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + 'argumentTypes': null, + 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', + 'id': 594, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11291:40:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string \'ERC20 Balance did not change correctly\'' }, - "value": "ERC20 Balance did not change correctly" + 'value': 'ERC20 Balance did not change correctly' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", - "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string \'ERC20 Balance did not change correctly\'' } ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 582, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "11194:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '11194:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11194:147:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 595, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11194:147:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 596, - "nodeType": "ExpressionStatement", - "src": "11194:147:1" + 'id': 596, + 'nodeType': 'ExpressionStatement', + 'src': '11194:147:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 598, - "name": "checkSuccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "11371:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", - "typeString": "function () pure returns (bool)" + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 598, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 652, + 'src': '11371:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' } }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11371:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 599, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11371:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", - "id": 600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11397:55:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", - "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', + 'id': 600, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11397:55:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string \'Subscription::executeSubscription TransferFrom failed\'' }, - "value": "Subscription::executeSubscription TransferFrom failed" + 'value': 'Subscription::executeSubscription TransferFrom failed' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", - "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string \'Subscription::executeSubscription TransferFrom failed\'' } ], - "id": 597, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 597, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "11352:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '11352:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11352:112:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 601, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11352:112:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 602, - "nodeType": "ExpressionStatement", - "src": "11352:112:1" + 'id': 602, + 'nodeType': 'ExpressionStatement', + 'src': '11352:112:1' }, { - "eventCall": { - "argumentTypes": null, - "arguments": [ + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 604, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "11514:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 604, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '11514:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 605, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11520:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 605, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11520:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 606, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11524:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 606, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11524:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 607, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11538:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 607, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11538:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 608, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "11551:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 608, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '11551:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 609, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "11566:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 609, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '11566:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 610, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "11576:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 610, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '11576:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 603, - "name": "ExecuteSubscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "11481:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + 'id': 603, + 'name': 'ExecuteSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 105, + 'src': '11481:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' } }, - "id": 611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11481:110:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 611, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11481:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 612, - "nodeType": "EmitStatement", - "src": "11476:115:1" + 'id': 612, + 'nodeType': 'EmitStatement', + 'src': '11476:115:1' }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 613, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "11811:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 615, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 613, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '11811:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 614, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11822:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "11811:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '11811:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 633, - "nodeType": "IfStatement", - "src": "11807:822:1", - "trueBody": { - "id": 632, - "nodeType": "Block", - "src": "11825:804:1", - "statements": [ + 'falseBody': null, + 'id': 633, + 'nodeType': 'IfStatement', + 'src': '11807:822:1', + 'trueBody': { + 'id': 632, + 'nodeType': 'Block', + 'src': '11825:804:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 620, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "12437:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 620, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '12437:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 621, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "12443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 621, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '12443:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "12443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 622, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '12443:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, { - "argumentTypes": null, - "id": 623, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "12455:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 623, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '12455:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 617, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "12410:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 617, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '12410:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 616, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "12404:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 616, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '12404:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12404:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 618, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12404:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 1014, - "src": "12404:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + 'id': 619, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1014, + 'src': '12404:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' } }, - "id": 624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12404:60:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 624, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12404:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "id": 625, - "nodeType": "ExpressionStatement", - "src": "12404:60:1" + 'id': 625, + 'nodeType': 'ExpressionStatement', + 'src': '12404:60:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 627, - "name": "checkSuccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12503:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", - "typeString": "function () pure returns (bool)" + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 627, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 652, + 'src': '12503:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' } }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12503:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 628, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12503:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12535:69:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", - "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', + 'id': 629, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12535:69:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string \'Subscription::executeSubscription Failed to pay gas as from account\'' }, - "value": "Subscription::executeSubscription Failed to pay gas as from account" + 'value': 'Subscription::executeSubscription Failed to pay gas as from account' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", - "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string \'Subscription::executeSubscription Failed to pay gas as from account\'' } ], - "id": 626, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 626, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "12478:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '12478:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12478:140:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 630, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12478:140:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 631, - "nodeType": "ExpressionStatement", - "src": "12478:140:1" + 'id': 631, + 'nodeType': 'ExpressionStatement', + 'src': '12478:140:1' } ] } }, { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12646:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 634, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12646:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "true" + 'value': 'true' }, - "functionReturnParameters": 507, - "id": 635, - "nodeType": "Return", - "src": "12639:11:1" + 'functionReturnParameters': 507, + 'id': 635, + 'nodeType': 'Return', + 'src': '12639:11:1' } ] }, - "documentation": null, - "id": 637, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "executeSubscription", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 504, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 637, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'executeSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 504, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 489, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9604:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 488, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9604:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 489, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9604:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 488, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9604:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 491, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9643:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 490, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9643:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 491, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9643:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 490, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9643:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 493, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9679:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 492, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9679:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 493, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9679:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 492, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9679:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 495, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9751:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 494, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9751:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 495, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9751:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 494, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9751:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 497, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9821:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9821:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 497, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9821:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 496, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9821:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 499, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9893:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 498, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9893:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 499, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9893:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 498, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9893:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 501, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9977:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 500, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9977:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 501, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9977:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 500, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9977:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 503, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "10060:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 502, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "10060:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 503, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '10060:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 502, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '10060:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "9594:544:1" + 'src': '9594:544:1' }, - "returnParameters": { - "id": 507, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 507, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 506, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "10171:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 505, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "10171:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 506, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '10171:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 505, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '10171:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "10170:14:1" + 'src': '10170:14:1' }, - "scope": 675, - "src": "9566:3091:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '9566:3091:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 651, - "nodeType": "Block", - "src": "13157:770:1", - "statements": [ + 'body': { + 'id': 651, + 'nodeType': 'Block', + 'src': '13157:770:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 643 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 643, - "name": "returnValue", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "13167:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 643, + 'name': 'returnValue', + 'nodeType': 'VariableDeclaration', + 'scope': 651, + 'src': '13167:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 642, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13167:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 642, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '13167:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 645, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 644, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13189:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'id': 645, + 'initialValue': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 644, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13189:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "nodeType": "VariableDeclarationStatement", - "src": "13167:23:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '13167:23:1' }, { - "externalReferences": [ + 'externalReferences': [ { - "returnValue": { - "declaration": 643, - "isOffset": false, - "isSlot": false, - "src": "13472:11:1", - "valueSize": 1 + 'returnValue': { + 'declaration': 643, + 'isOffset': false, + 'isSlot': false, + 'src': '13472:11:1', + 'valueSize': 1 } }, { - "returnValue": { - "declaration": 643, - "isOffset": false, - "isSlot": false, - "src": "13749:11:1", - "valueSize": 1 + 'returnValue': { + 'declaration': 643, + 'isOffset': false, + 'isSlot': false, + 'src': '13749:11:1', + 'valueSize': 1 } } ], - "id": 646, - "nodeType": "InlineAssembly", - "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", - "src": "13268:635:1" + 'id': 646, + 'nodeType': 'InlineAssembly', + 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', + 'src': '13268:635:1' }, { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 647, - "name": "returnValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "13904:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 649, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 647, + 'name': 'returnValue', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 643, + 'src': '13904:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13919:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 648, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13919:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "13904:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '13904:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 641, - "id": 650, - "nodeType": "Return", - "src": "13897:23:1" + 'functionReturnParameters': 641, + 'id': 650, + 'nodeType': 'Return', + 'src': '13897:23:1' } ] }, - "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", - "id": 652, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "checkSuccess", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 638, - "nodeType": "ParameterList", - "parameters": [], - "src": "13093:7:1" + 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', + 'id': 652, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'checkSuccess', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 638, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '13093:7:1' }, - "returnParameters": { - "id": 641, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 641, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 640, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "13147:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 639, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13147:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 640, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 652, + 'src': '13147:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 639, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '13147:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "13146:6:1" + 'src': '13146:6:1' }, - "scope": 675, - "src": "13072:855:1", - "stateMutability": "pure", - "superFunction": null, - "visibility": "private" + 'scope': 675, + 'src': '13072:855:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'private' }, { - "body": { - "id": 666, - "nodeType": "Block", - "src": "14101:70:1", - "statements": [ + 'body': { + 'id': 666, + 'nodeType': 'Block', + 'src': '14101:70:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, - "id": 659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 656, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "14117:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'id': 659, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 656, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '14117:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14117:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 657, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '14117:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 658, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "14129:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 658, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14129:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "14117:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '14117:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } ], - "id": 655, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 655, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1354, - "src": "14109:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + 'referencedDeclaration': 1354, + 'src': '14109:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' } }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14109:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 660, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14109:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 661, - "nodeType": "ExpressionStatement", - "src": "14109:27:1" + 'id': 661, + 'nodeType': 'ExpressionStatement', + 'src': '14109:27:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 663, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "14157:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'argumentTypes': null, + 'id': 663, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14157:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } ], - "id": 662, - "name": "selfdestruct", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1359, - "src": "14144:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", - "typeString": "function (address payable)" + 'id': 662, + 'name': 'selfdestruct', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1359, + 'src': '14144:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$', + 'typeString': 'function (address payable)' } }, - "id": 664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14144:20:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 664, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14144:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 665, - "nodeType": "ExpressionStatement", - "src": "14144:20:1" + 'id': 665, + 'nodeType': 'ExpressionStatement', + 'src': '14144:20:1' } ] }, - "documentation": null, - "id": 667, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "endContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 653, - "nodeType": "ParameterList", - "parameters": [], - "src": "14077:2:1" + 'documentation': null, + 'id': 667, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'endContract', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 653, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14077:2:1' }, - "returnParameters": { - "id": 654, - "nodeType": "ParameterList", - "parameters": [], - "src": "14101:0:1" + 'returnParameters': { + 'id': 654, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14101:0:1' }, - "scope": 675, - "src": "14057:114:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '14057:114:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' }, { - "body": { - "id": 673, - "nodeType": "Block", - "src": "14277:25:1", - "statements": [ + 'body': { + 'id': 673, + 'nodeType': 'Block', + 'src': '14277:25:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 670, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 670, + 'name': 'revert', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1356, 1357 ], - "referencedDeclaration": 1356, - "src": "14286:6:1", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" + 'referencedDeclaration': 1356, + 'src': '14286:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_revert_pure$__$returns$__$', + 'typeString': 'function () pure' } }, - "id": 671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14286:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 671, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14286:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 672, - "nodeType": "ExpressionStatement", - "src": "14286:9:1" + 'id': 672, + 'nodeType': 'ExpressionStatement', + 'src': '14286:9:1' } ] }, - "documentation": null, - "id": 674, - "implemented": true, - "kind": "fallback", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 668, - "nodeType": "ParameterList", - "parameters": [], - "src": "14257:2:1" + 'documentation': null, + 'id': 674, + 'implemented': true, + 'kind': 'fallback', + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 668, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14257:2:1' }, - "returnParameters": { - "id": 669, - "nodeType": "ParameterList", - "parameters": [], - "src": "14277:0:1" + 'returnParameters': { + 'id': 669, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14277:0:1' }, - "scope": 675, - "src": "14248:54:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '14248:54:1', + 'stateMutability': 'payable', + 'superFunction': null, + 'visibility': 'external' } ], - "scope": 676, - "src": "1091:13213:1" + 'scope': 676, + 'src': '1091:13213:1' } ], - "src": "0:14305:1" + 'src': '0:14305:1' }, - "legacyAST": { - "absolutePath": "/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol", - "exportedSymbols": { - "Subscription": [ + 'legacyAST': { + 'absolutePath': '/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol', + 'exportedSymbols': { + 'Subscription': [ 675 ] }, - "id": 676, - "nodeType": "SourceUnit", - "nodes": [ + 'id': 676, + 'nodeType': 'SourceUnit', + 'nodes': [ { - "id": 58, - "literals": [ - "solidity", - "^", - "0.5", - ".2" + 'id': 58, + 'literals': [ + 'solidity', + '^', + '0.5', + '.2' ], - "nodeType": "PragmaDirective", - "src": "0:23:1" + 'nodeType': 'PragmaDirective', + 'src': '0:23:1' }, { - "absolutePath": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", - "file": "openzeppelin-solidity/contracts/cryptography/ECDSA.sol", - "id": 59, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 757, - "src": "900:64:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'file': 'openzeppelin-solidity/contracts/cryptography/ECDSA.sol', + 'id': 59, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 757, + 'src': '900:64:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 60, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 885, - "src": "965:59:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'file': 'openzeppelin-solidity/contracts/math/SafeMath.sol', + 'id': 60, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 885, + 'src': '965:59:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", - "id": 61, - "nodeType": "ImportDirective", - "scope": 676, - "sourceUnit": 1268, - "src": "1025:63:1", - "symbolAliases": [], - "unitAlias": "" + 'absolutePath': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'file': 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol', + 'id': 61, + 'nodeType': 'ImportDirective', + 'scope': 676, + 'sourceUnit': 1268, + 'src': '1025:63:1', + 'symbolAliases': [], + 'unitAlias': '' }, { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 675, - "linearizedBaseContracts": [ + 'baseContracts': [], + 'contractDependencies': [], + 'contractKind': 'contract', + 'documentation': null, + 'fullyImplemented': true, + 'id': 675, + 'linearizedBaseContracts': [ 675 ], - "name": "Subscription", - "nodeType": "ContractDefinition", - "nodes": [ + 'name': 'Subscription', + 'nodeType': 'ContractDefinition', + 'nodes': [ { - "id": 64, - "libraryName": { - "contractScope": null, - "id": 62, - "name": "ECDSA", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 756, - "src": "1125:5:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ECDSA_$756", - "typeString": "library ECDSA" + 'id': 64, + 'libraryName': { + 'contractScope': null, + 'id': 62, + 'name': 'ECDSA', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 756, + 'src': '1125:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ECDSA_$756', + 'typeString': 'library ECDSA' } }, - "nodeType": "UsingForDirective", - "src": "1119:24:1", - "typeName": { - "id": 63, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'nodeType': 'UsingForDirective', + 'src': '1119:24:1', + 'typeName': { + 'id': 63, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1135:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } } }, { - "id": 67, - "libraryName": { - "contractScope": null, - "id": 65, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 884, - "src": "1154:8:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$884", - "typeString": "library SafeMath" + 'id': 67, + 'libraryName': { + 'contractScope': null, + 'id': 65, + 'name': 'SafeMath', + 'nodeType': 'UserDefinedTypeName', + 'referencedDeclaration': 884, + 'src': '1154:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_SafeMath_$884', + 'typeString': 'library SafeMath' } }, - "nodeType": "UsingForDirective", - "src": "1148:27:1", - "typeName": { - "id": 66, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1167:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'UsingForDirective', + 'src': '1148:27:1', + 'typeName': { + 'id': 66, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1167:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, { - "constant": false, - "id": 69, - "name": "author", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1212:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'constant': false, + 'id': 69, + 'name': 'author', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1212:29:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, - "typeName": { - "id": 68, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1212:15:1", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeName': { + 'id': 68, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1212:15:1', + 'stateMutability': 'payable', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 71, - "name": "relayer", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1288:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 71, + 'name': 'relayer', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1288:22:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 70, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1288:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 70, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1288:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 73, - "name": "requiredToAddress", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1470:32:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 73, + 'name': 'requiredToAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1470:32:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 72, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1470:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 72, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1470:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 75, - "name": "requiredTokenAddress", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1508:35:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 75, + 'name': 'requiredTokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1508:35:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 74, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1508:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 74, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '1508:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 77, - "name": "requiredTokenAmount", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1549:34:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 77, + 'name': 'requiredTokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1549:34:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 76, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1549:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 76, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1549:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 79, - "name": "requiredPeriodSeconds", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1589:36:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 79, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1589:36:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 78, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 78, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1589:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 81, - "name": "requiredGasPrice", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1631:31:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 81, + 'name': 'requiredGasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1631:31:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 80, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1631:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 80, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1631:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 85, - "name": "nextValidTimestamp", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "1854:53:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'constant': false, + 'id': 85, + 'name': 'nextValidTimestamp', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '1854:53:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' }, - "typeName": { - "id": 84, - "keyType": { - "id": 82, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1862:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 84, + 'keyType': { + 'id': 82, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '1862:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "Mapping", - "src": "1854:27:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'nodeType': 'Mapping', + 'src': '1854:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' }, - "valueType": { - "id": 83, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1873:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'valueType': { + 'id': 83, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '1873:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "constant": false, - "id": 89, - "name": "extraNonce", - "nodeType": "VariableDeclaration", - "scope": 675, - "src": "2088:45:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'constant': false, + 'id': 89, + 'name': 'extraNonce', + 'nodeType': 'VariableDeclaration', + 'scope': 675, + 'src': '2088:45:1', + 'stateVariable': true, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' }, - "typeName": { - "id": 88, - "keyType": { - "id": 86, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2096:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 88, + 'keyType': { + 'id': 86, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2096:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Mapping", - "src": "2088:27:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'nodeType': 'Mapping', + 'src': '2088:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' }, - "valueType": { - "id": 87, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2107:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'valueType': { + 'id': 87, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2107:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } }, - "value": null, - "visibility": "public" + 'value': null, + 'visibility': 'public' }, { - "anonymous": false, - "documentation": null, - "id": 105, - "name": "ExecuteSubscription", - "nodeType": "EventDefinition", - "parameters": { - "id": 104, - "nodeType": "ParameterList", - "parameters": [ + 'anonymous': false, + 'documentation': null, + 'id': 105, + 'name': 'ExecuteSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 104, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 91, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2175:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 90, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2175:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 91, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2175:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 90, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2175:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 93, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2222:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 92, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2222:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 93, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2222:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 92, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2222:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 95, - "indexed": false, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2266:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 94, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2266:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 95, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2266:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 94, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2266:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 97, - "indexed": false, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2338:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 96, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 97, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2338:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 96, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2338:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 99, - "indexed": false, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2408:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 98, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2408:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 99, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2408:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 98, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2408:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 101, - "indexed": false, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2480:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 100, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2480:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 101, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2480:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 100, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2480:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 103, - "indexed": false, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 105, - "src": "2557:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 102, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2557:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 103, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 105, + 'src': '2557:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 102, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2557:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "2165:471:1" + 'src': '2165:471:1' }, - "src": "2140:497:1" + 'src': '2140:497:1' }, { - "anonymous": false, - "documentation": null, - "id": 121, - "name": "CancelSubscription", - "nodeType": "EventDefinition", - "parameters": { - "id": 120, - "nodeType": "ParameterList", - "parameters": [ + 'anonymous': false, + 'documentation': null, + 'id': 121, + 'name': 'CancelSubscription', + 'nodeType': 'EventDefinition', + 'parameters': { + 'id': 120, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 107, - "indexed": true, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2677:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 106, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2677:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 107, + 'indexed': true, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2677:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 106, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2677:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 109, - "indexed": true, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2724:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 108, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2724:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 109, + 'indexed': true, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2724:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 108, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2724:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 111, - "indexed": false, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2768:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 110, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2768:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 111, + 'indexed': false, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2768:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 110, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '2768:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 113, - "indexed": false, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2840:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 112, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2840:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 113, + 'indexed': false, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2840:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 112, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2840:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 115, - "indexed": false, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2910:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 114, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2910:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 115, + 'indexed': false, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2910:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 114, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2910:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 117, - "indexed": false, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "2982:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 116, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2982:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 117, + 'indexed': false, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '2982:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 116, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '2982:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 119, - "indexed": false, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 121, - "src": "3059:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3059:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 119, + 'indexed': false, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 121, + 'src': '3059:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 118, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3059:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "2667:471:1" + 'src': '2667:471:1' }, - "src": "2643:496:1" + 'src': '2643:496:1' }, { - "body": { - "id": 167, - "nodeType": "Block", - "src": "3368:266:1", - "statements": [ + 'body': { + 'id': 167, + 'nodeType': 'Block', + 'src': '3368:266:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "id": 140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 138, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "3378:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 140, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 138, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '3378:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 139, - "name": "_toAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 123, - "src": "3396:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 139, + 'name': '_toAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 123, + 'src': '3396:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3378:28:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3378:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 141, - "nodeType": "ExpressionStatement", - "src": "3378:28:1" + 'id': 141, + 'nodeType': 'ExpressionStatement', + 'src': '3378:28:1' }, { - "expression": { - "argumentTypes": null, - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 142, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "3416:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 144, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 142, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '3416:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 143, - "name": "_tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 125, - "src": "3437:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 143, + 'name': '_tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 125, + 'src': '3437:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3416:34:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3416:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 145, - "nodeType": "ExpressionStatement", - "src": "3416:34:1" + 'id': 145, + 'nodeType': 'ExpressionStatement', + 'src': '3416:34:1' }, { - "expression": { - "argumentTypes": null, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 146, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "3460:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 148, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 146, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '3460:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 147, - "name": "_tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "3480:12:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 147, + 'name': '_tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 127, + 'src': '3480:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3460:32:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3460:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 149, - "nodeType": "ExpressionStatement", - "src": "3460:32:1" + 'id': 149, + 'nodeType': 'ExpressionStatement', + 'src': '3460:32:1' }, { - "expression": { - "argumentTypes": null, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 150, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "3502:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 152, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 150, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '3502:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 151, - "name": "_periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 129, - "src": "3524:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 151, + 'name': '_periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 129, + 'src': '3524:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3502:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3502:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 153, - "nodeType": "ExpressionStatement", - "src": "3502:36:1" + 'id': 153, + 'nodeType': 'ExpressionStatement', + 'src': '3502:36:1' }, { - "expression": { - "argumentTypes": null, - "id": 156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 154, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "3548:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 156, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 154, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '3548:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 155, - "name": "_gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 131, - "src": "3565:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 155, + 'name': '_gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 131, + 'src': '3565:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "3548:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '3548:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 157, - "nodeType": "ExpressionStatement", - "src": "3548:26:1" + 'id': 157, + 'nodeType': 'ExpressionStatement', + 'src': '3548:26:1' }, { - "expression": { - "argumentTypes": null, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 158, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "3584:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'expression': { + 'argumentTypes': null, + 'id': 161, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 158, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '3584:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 159, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "3591:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 159, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '3591:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3591:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 160, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '3591:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "3584:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'src': '3584:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "id": 162, - "nodeType": "ExpressionStatement", - "src": "3584:17:1" + 'id': 162, + 'nodeType': 'ExpressionStatement', + 'src': '3584:17:1' }, { - "expression": { - "argumentTypes": null, - "id": 165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 163, - "name": "relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "3611:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'expression': { + 'argumentTypes': null, + 'id': 165, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'id': 163, + 'name': 'relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '3611:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 164, - "name": "_relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 135, - "src": "3619:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 164, + 'name': '_relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 135, + 'src': '3619:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "3611:16:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'src': '3611:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "id": 166, - "nodeType": "ExpressionStatement", - "src": "3611:16:1" + 'id': 166, + 'nodeType': 'ExpressionStatement', + 'src': '3611:16:1' } ] }, - "documentation": null, - "id": 168, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 136, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 168, + 'implemented': true, + 'kind': 'constructor', + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 136, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 123, - "name": "_toAddress", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3166:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 122, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3166:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 123, + 'name': '_toAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3166:18:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 122, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3166:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 125, - "name": "_tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3194:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 124, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3194:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 125, + 'name': '_tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3194:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 124, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3194:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 127, - "name": "_tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3225:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 126, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 127, + 'name': '_tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3225:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 126, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3225:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 129, - "name": "_periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3255:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3255:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 129, + 'name': '_periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3255:22:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 128, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3255:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 131, - "name": "_gasPrice", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3287:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 130, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3287:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 131, + 'name': '_gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3287:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 130, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3287:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 133, - "name": "_version", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3314:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 132, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3314:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" + 'constant': false, + 'id': 133, + 'name': '_version', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3314:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' + }, + 'typeName': { + 'id': 132, + 'name': 'uint8', + 'nodeType': 'ElementaryTypeName', + 'src': '3314:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint8', + 'typeString': 'uint8' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 135, - "name": "_relayer", - "nodeType": "VariableDeclaration", - "scope": 168, - "src": "3338:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 134, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3338:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 135, + 'name': '_relayer', + 'nodeType': 'VariableDeclaration', + 'scope': 168, + 'src': '3338:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 134, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '3338:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "3156:204:1" + 'src': '3156:204:1' }, - "returnParameters": { - "id": 137, - "nodeType": "ParameterList", - "parameters": [], - "src": "3368:0:1" + 'returnParameters': { + 'id': 137, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '3368:0:1' }, - "scope": 675, - "src": "3145:489:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '3145:489:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 200, - "nodeType": "Block", - "src": "4037:227:1", - "statements": [ + 'body': { + 'id': 200, + 'nodeType': 'Block', + 'src': '4037:227:1', + 'statements': [ { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 177, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "4050:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'id': 184, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 177, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4050:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 179, - "indexExpression": { - "argumentTypes": null, - "id": 178, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "4069:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 179, + 'indexExpression': { + 'argumentTypes': null, + 'id': 178, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 170, + 'src': '4069:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4050:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4050:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "4096:2:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 181, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4097:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + 'argumentTypes': null, + 'id': 182, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '4096:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 181, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4097:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' }, - "value": "1" + 'value': '1' }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeDescriptions': { + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } ], - "id": 180, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4088:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" + 'id': 180, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '4088:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' }, - "typeName": "uint256" + 'typeName': 'uint256' }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4088:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 183, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4088:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "4050:49:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '4050:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 188, - "nodeType": "IfStatement", - "src": "4047:88:1", - "trueBody": { - "id": 187, - "nodeType": "Block", - "src": "4100:35:1", - "statements": [ + 'falseBody': null, + 'id': 188, + 'nodeType': 'IfStatement', + 'src': '4047:88:1', + 'trueBody': { + 'id': 187, + 'nodeType': 'Block', + 'src': '4100:35:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 185, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4119:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '66616c7365', + 'id': 185, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '4119:5:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "false" + 'value': 'false' }, - "functionReturnParameters": 176, - "id": 186, - "nodeType": "Return", - "src": "4112:12:1" + 'functionReturnParameters': 176, + 'id': 186, + 'nodeType': 'Return', + 'src': '4112:12:1' } ] } }, { - "expression": { - "argumentTypes": null, - "components": [ + 'expression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 189, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "4152:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'id': 197, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 189, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '4152:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4152:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 190, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '4152:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '<=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 195, - "name": "gracePeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 172, - "src": "4228:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 195, + 'name': 'gracePeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 172, + 'src': '4228:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 191, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "4187:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 191, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '4187:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 193, - "indexExpression": { - "argumentTypes": null, - "id": 192, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 170, - "src": "4206:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 193, + 'indexExpression': { + 'argumentTypes': null, + 'id': 192, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 170, + 'src': '4206:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4187:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '4187:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "4187:40:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 194, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '4187:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4187:60:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 196, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '4187:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "4152:95:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '4152:95:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "id": 198, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4151:106:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 198, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '4151:106:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 176, - "id": 199, - "nodeType": "Return", - "src": "4144:113:1" + 'functionReturnParameters': 176, + 'id': 199, + 'nodeType': 'Return', + 'src': '4144:113:1' } ] }, - "documentation": null, - "id": 201, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isSubscriptionActive", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 173, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 201, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'isSubscriptionActive', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 173, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 170, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "3913:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 169, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3913:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 170, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '3913:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 169, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '3913:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 172, - "name": "gracePeriodSeconds", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "3947:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 171, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3947:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 172, + 'name': 'gracePeriodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '3947:26:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 171, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '3947:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "3903:76:1" + 'src': '3903:76:1' }, - "returnParameters": { - "id": 176, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 176, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 175, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "4027:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 174, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4027:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 175, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 201, + 'src': '4027:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 174, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '4027:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4026:6:1" + 'src': '4026:6:1' }, - "scope": 675, - "src": "3874:390:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '3874:390:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'external' }, { - "body": { - "id": 300, - "nodeType": "Block", - "src": "4969:999:1", - "statements": [ + 'body': { + 'id': 300, + 'nodeType': 'Block', + 'src': '4969:999:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 229, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 221, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "5093:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 225, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 221, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5093:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 223, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5122:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 223, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5122:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 222, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5114:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 222, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5114:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5114:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 224, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5114:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "5093:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5093:31:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 226, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 205, - "src": "5128:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 228, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 226, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 205, + 'src': '5128:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 227, - "name": "requiredToAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "5134:17:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 227, + 'name': 'requiredToAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 73, + 'src': '5134:17:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "5128:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5128:23:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5093:58:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5093:58:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f41646472657373204661696c757265", - "id": 230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5153:27:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", - "typeString": "literal_string \"requiredToAddress Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f41646472657373204661696c757265', + 'id': 230, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5153:27:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string \'requiredToAddress Failure\'' }, - "value": "requiredToAddress Failure" + 'value': 'requiredToAddress Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430", - "typeString": "literal_string \"requiredToAddress Failure\"" + 'typeIdentifier': 't_stringliteral_1780bcf794aab203f72828cdd8822e2720f64bbe143d842ce30f054eabc78430', + 'typeString': 'literal_string \'requiredToAddress Failure\'' } ], - "id": 220, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 220, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5084:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5084:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5084:98:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 231, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5084:98:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 232, - "nodeType": "ExpressionStatement", - "src": "5084:98:1" + 'id': 232, + 'nodeType': 'ExpressionStatement', + 'src': '5084:98:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 242, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 234, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "5201:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 238, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 234, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5201:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 236, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5233:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 236, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5233:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 235, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 235, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5225:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 237, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5225:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "5201:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5201:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 239, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 207, - "src": "5239:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 241, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 239, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 207, + 'src': '5239:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 240, - "name": "requiredTokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "5255:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 240, + 'name': 'requiredTokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 75, + 'src': '5255:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "5239:36:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5239:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5201:74:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5201:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f6b656e41646472657373204661696c757265", - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5277:30:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", - "typeString": "literal_string \"requiredTokenAddress Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e41646472657373204661696c757265', + 'id': 243, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5277:30:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string \'requiredTokenAddress Failure\'' }, - "value": "requiredTokenAddress Failure" + 'value': 'requiredTokenAddress Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c", - "typeString": "literal_string \"requiredTokenAddress Failure\"" + 'typeIdentifier': 't_stringliteral_0a4155ffffdaca064dc0492130d948bbabedf9b4a3c7b4dba7701d2aa083061c', + 'typeString': 'literal_string \'requiredTokenAddress Failure\'' } ], - "id": 233, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 233, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5192:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5192:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5192:118:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 244, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5192:118:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 245, - "nodeType": "ExpressionStatement", - "src": "5192:118:1" + 'id': 245, + 'nodeType': 'ExpressionStatement', + 'src': '5192:118:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 253, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 247, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "5329:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 249, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 247, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5329:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 248, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5352:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 248, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5352:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5329:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5329:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 250, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "5357:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 252, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 250, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 209, + 'src': '5357:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 251, - "name": "requiredTokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "5372:19:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 251, + 'name': 'requiredTokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 77, + 'src': '5372:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5357:34:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5357:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5329:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5329:62:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564546f6b656e416d6f756e74204661696c757265", - "id": 254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5393:29:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", - "typeString": "literal_string \"requiredTokenAmount Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564546f6b656e416d6f756e74204661696c757265', + 'id': 254, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5393:29:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string \'requiredTokenAmount Failure\'' }, - "value": "requiredTokenAmount Failure" + 'value': 'requiredTokenAmount Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785", - "typeString": "literal_string \"requiredTokenAmount Failure\"" + 'typeIdentifier': 't_stringliteral_0dfea9330de22cf3a44a9f589d334e51ce03eb93b887fccb426b90a5cf902785', + 'typeString': 'literal_string \'requiredTokenAmount Failure\'' } ], - "id": 246, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 246, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5320:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5320:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5320:105:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 255, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5320:105:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 256, - "nodeType": "ExpressionStatement", - "src": "5320:105:1" + 'id': 256, + 'nodeType': 'ExpressionStatement', + 'src': '5320:105:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 264, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 258, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "5444:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 260, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 258, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5444:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5469:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 259, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5469:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5444:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5444:26:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 261, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "5474:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 263, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 261, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 211, + 'src': '5474:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 262, - "name": "requiredPeriodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 79, - "src": "5491:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 262, + 'name': 'requiredPeriodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 79, + 'src': '5491:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5474:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5474:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5444:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5444:68:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "7265717569726564506572696f645365636f6e6473204661696c757265", - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5514:31:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", - "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + 'argumentTypes': null, + 'hexValue': '7265717569726564506572696f645365636f6e6473204661696c757265', + 'id': 265, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5514:31:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string \'requiredPeriodSeconds Failure\'' }, - "value": "requiredPeriodSeconds Failure" + 'value': 'requiredPeriodSeconds Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b", - "typeString": "literal_string \"requiredPeriodSeconds Failure\"" + 'typeIdentifier': 't_stringliteral_829576bc6f2a6cbacb797e1e609350189547b06e13145f9ac8afe9b515c8265b', + 'typeString': 'literal_string \'requiredPeriodSeconds Failure\'' } ], - "id": 257, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 257, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5435:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5435:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5435:113:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 266, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5435:113:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 267, - "nodeType": "ExpressionStatement", - "src": "5435:113:1" + 'id': 267, + 'nodeType': 'ExpressionStatement', + 'src': '5435:113:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 275, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 269, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "5567:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 271, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 269, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '5567:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5587:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 270, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5587:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "5567:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5567:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '||', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 272, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "5592:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 274, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 272, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 213, + 'src': '5592:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 273, - "name": "requiredGasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "5604:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 273, + 'name': 'requiredGasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 81, + 'src': '5604:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "5592:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5592:28:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "5567:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '5567:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "72657175697265644761735072696365204661696c757265", - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5622:26:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", - "typeString": "literal_string \"requiredGasPrice Failure\"" + 'argumentTypes': null, + 'hexValue': '72657175697265644761735072696365204661696c757265', + 'id': 276, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5622:26:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string \'requiredGasPrice Failure\'' }, - "value": "requiredGasPrice Failure" + 'value': 'requiredGasPrice Failure' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb", - "typeString": "literal_string \"requiredGasPrice Failure\"" + 'typeIdentifier': 't_stringliteral_0549ea7d3e61063659accdb56e119c83714b122fe72a3eca04edb4ce124397bb', + 'typeString': 'literal_string \'requiredGasPrice Failure\'' } ], - "id": 268, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 268, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "5558:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '5558:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5558:93:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 277, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5558:93:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 278, - "nodeType": "ExpressionStatement", - "src": "5558:93:1" + 'id': 278, + 'nodeType': 'ExpressionStatement', + 'src': '5558:93:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30783139", - "id": 283, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5731:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + 'argumentTypes': null, + 'hexValue': '30783139', + 'id': 283, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5731:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' }, - "value": "0x19" + 'value': '0x19' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + 'typeIdentifier': 't_rational_25_by_1', + 'typeString': 'int_const 25' } ], - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5726:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" + 'id': 282, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5726:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' }, - "typeName": "byte" + 'typeName': 'byte' }, - "id": 284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5726:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'id': 284, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5726:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "hexValue": "30", - "id": 286, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5759:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'argumentTypes': null, + 'hexValue': '30', + 'id': 286, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '5759:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' } ], - "id": 285, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5754:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" + 'id': 285, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5754:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_bytes1_$', + 'typeString': 'type(bytes1)' }, - "typeName": "byte" + 'typeName': 'byte' }, - "id": 287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5754:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'id': 287, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5754:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 289, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "5787:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'argumentTypes': null, + 'id': 289, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1374, + 'src': '5787:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } ], - "id": 288, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5779:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 288, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '5779:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5779:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 290, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5779:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, { - "argumentTypes": null, - "id": 291, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 203, - "src": "5810:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 291, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 203, + 'src': '5810:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 292, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 205, - "src": "5832:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 292, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 205, + 'src': '5832:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 293, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 207, - "src": "5852:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 293, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 207, + 'src': '5852:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 294, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "5882:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 294, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 209, + 'src': '5882:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 295, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "5911:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 295, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 211, + 'src': '5911:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 296, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "5942:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 296, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 213, + 'src': '5942:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' }, { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" + 'typeIdentifier': 't_bytes1', + 'typeString': 'bytes1' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 280, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1338, - "src": "5692:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" + 'expression': { + 'argumentTypes': null, + 'id': 280, + 'name': 'abi', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1338, + 'src': '5692:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_abi', + 'typeString': 'abi' } }, - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5692:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" + 'id': 281, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'memberName': 'encodePacked', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '5692:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$', + 'typeString': 'function () pure returns (bytes memory)' } }, - "id": 297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5692:268:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'id': 297, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5692:268:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 279, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1345, - "src": "5669:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" + 'id': 279, + 'name': 'keccak256', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1345, + 'src': '5669:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$', + 'typeString': 'function (bytes memory) pure returns (bytes32)' } }, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5669:292:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 298, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '5669:292:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "functionReturnParameters": 219, - "id": 299, - "nodeType": "Return", - "src": "5662:299:1" + 'functionReturnParameters': 219, + 'id': 299, + 'nodeType': 'Return', + 'src': '5662:299:1' } ] }, - "documentation": null, - "id": 301, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSubscriptionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 216, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 301, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'getSubscriptionHash', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 216, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 203, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4458:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 202, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4458:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 203, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4458:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 202, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4458:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 205, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4497:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 204, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4497:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 205, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4497:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 204, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4497:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 207, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4533:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 206, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4533:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 207, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4533:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 206, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '4533:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 209, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4605:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 208, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4605:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 209, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4605:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 208, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4605:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 211, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4675:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4675:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 211, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4675:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 210, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4675:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 213, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4747:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 212, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 213, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4747:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 212, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4747:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 215, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4831:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 214, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4831:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 215, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4831:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 214, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '4831:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4448:462:1" + 'src': '4448:462:1' }, - "returnParameters": { - "id": 219, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 219, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 218, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 301, - "src": "4956:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 217, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4956:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 218, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 301, + 'src': '4956:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 217, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '4956:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "4955:9:1" + 'src': '4955:9:1' }, - "scope": 675, - "src": "4420:1548:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '4420:1548:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 317, - "nodeType": "Block", - "src": "6263:84:1", - "statements": [ + 'body': { + 'id': 317, + 'nodeType': 'Block', + 'src': '6263:84:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 314, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 305, - "src": "6330:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 314, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 305, + 'src': '6330:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 310, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 303, - "src": "6280:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'expression': { + 'argumentTypes': null, + 'id': 310, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 303, + 'src': '6280:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "id": 311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toEthSignedMessageHash", - "nodeType": "MemberAccess", - "referencedDeclaration": 755, - "src": "6280:39:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$", - "typeString": "function (bytes32) pure returns (bytes32)" + 'id': 311, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'toEthSignedMessageHash', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 755, + 'src': '6280:39:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32) pure returns (bytes32)' } }, - "id": 312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6280:41:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 312, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6280:41:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "id": 313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "recover", - "nodeType": "MemberAccess", - "referencedDeclaration": 739, - "src": "6280:49:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 313, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'recover', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 739, + 'src': '6280:49:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$bound_to$_t_bytes32_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6280:60:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 315, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '6280:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "functionReturnParameters": 309, - "id": 316, - "nodeType": "Return", - "src": "6273:67:1" + 'functionReturnParameters': 309, + 'id': 316, + 'nodeType': 'Return', + 'src': '6273:67:1' } ] }, - "documentation": null, - "id": 318, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSubscriptionSigner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 306, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 318, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'getSubscriptionSigner', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 306, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 303, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6069:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 302, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "6069:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 303, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6069:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' + }, + 'typeName': { + 'id': 302, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '6069:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 305, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6126:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 304, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6126:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 305, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6126:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 304, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6126:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6059:145:1" + 'src': '6059:145:1' }, - "returnParameters": { - "id": 309, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 309, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 308, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 318, - "src": "6250:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 307, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6250:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 308, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 318, + 'src': '6250:7:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 307, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6250:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6249:9:1" + 'src': '6249:9:1' }, - "scope": 675, - "src": "6029:318:1", - "stateMutability": "pure", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '6029:318:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 409, - "nodeType": "Block", - "src": "7098:633:1", - "statements": [ + 'body': { + 'id': 409, + 'nodeType': 'Block', + 'src': '7098:633:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 340 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 340, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7108:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 340, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7108:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 339, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "7108:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 339, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '7108:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 350, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 350, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 342, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7168:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 342, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7168:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 343, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 322, - "src": "7174:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 343, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 322, + 'src': '7174:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 344, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7178:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 344, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7178:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 345, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7192:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 345, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7192:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 346, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 328, - "src": "7205:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 346, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 328, + 'src': '7205:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 347, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7220:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 347, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7220:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 348, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 332, - "src": "7230:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 348, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 332, + 'src': '7230:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 341, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "7135:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 341, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '7135:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7135:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 349, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7135:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7108:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7108:137:1' }, { - "assignments": [ + 'assignments': [ 352 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 352, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7255:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 352, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7255:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 351, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7255:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 351, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '7255:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 357, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 357, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 354, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 340, - "src": "7294:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'argumentTypes': null, + 'id': 354, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 340, + 'src': '7294:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, { - "argumentTypes": null, - "id": 355, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 334, - "src": "7312:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 355, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 334, + 'src': '7312:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 353, - "name": "getSubscriptionSigner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "7272:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 353, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 318, + 'src': '7272:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7272:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 356, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7272:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7255:67:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7255:67:1' }, { - "assignments": [ + 'assignments': [ 359 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 359, - "name": "allowance", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7332:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 359, + 'name': 'allowance', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7332:17:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 358, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7332:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 358, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7332:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 369, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 369, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 364, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7382:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 364, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7382:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 366, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1374, - "src": "7396:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'argumentTypes': null, + 'id': 366, + 'name': 'this', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1374, + 'src': '7396:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_contract$_Subscription_$675", - "typeString": "contract Subscription" + 'typeIdentifier': 't_contract$_Subscription_$675', + 'typeString': 'contract Subscription' } ], - "id": 365, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7388:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" + 'id': 365, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '7388:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_address_$', + 'typeString': 'type(address)' }, - "typeName": "address" + 'typeName': 'address' }, - "id": 367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7388:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 367, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7388:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 361, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7358:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 361, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7358:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 360, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "7352:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 360, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '7352:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7352:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 362, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7352:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 363, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "allowance", - "nodeType": "MemberAccess", - "referencedDeclaration": 941, - "src": "7352:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view external returns (uint256)" + 'id': 363, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'allowance', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 941, + 'src': '7352:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address,address) view external returns (uint256)' } }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7352:50:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 368, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7352:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7332:70:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7332:70:1' }, { - "assignments": [ + 'assignments': [ 371 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 371, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 409, - "src": "7412:15:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 371, + 'name': 'balance', + 'nodeType': 'VariableDeclaration', + 'scope': 409, + 'src': '7412:15:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 370, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7412:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 370, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '7412:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 378, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 378, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 376, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7460:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 376, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7460:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 373, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 324, - "src": "7436:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 373, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 324, + 'src': '7436:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 372, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "7430:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 372, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '7430:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7430:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 374, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7430:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "7430:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 375, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '7430:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7430:35:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 377, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7430:35:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "7412:53:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '7412:53:1' }, { - "expression": { - "argumentTypes": null, - "components": [ + 'expression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 406, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 399, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 392, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 385, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 379, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "7497:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 381, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 379, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 352, + 'src': '7497:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 380, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7507:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 380, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7507:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "7497:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 382, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 320, - "src": "7527:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 384, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 382, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 320, + 'src': '7527:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 383, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 322, - "src": "7535:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'id': 383, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 322, + 'src': '7535:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "7527:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7527:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:40:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 386, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "7553:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'id': 391, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 386, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '7553:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7553:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 387, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '7553:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "7572:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 388, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '7572:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 340, - "src": "7591:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 390, + 'indexExpression': { + 'argumentTypes': null, + 'id': 389, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 340, + 'src': '7591:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7572:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '7572:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7553:55:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7553:55:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:111:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:111:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 393, - "name": "allowance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 359, - "src": "7624:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 398, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 393, + 'name': 'allowance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 359, + 'src': '7624:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 396, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7653:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 396, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7653:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 394, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7637:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 394, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7637:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "7637:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 395, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '7637:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7637:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 397, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7637:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7624:38:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7624:38:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:165:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:165:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '&&', + 'rightExpression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 400, - "name": "balance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "7678:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 405, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 400, + 'name': 'balance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 371, + 'src': '7678:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '>=', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 403, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "7705:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 403, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 330, + 'src': '7705:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "id": 401, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 326, - "src": "7689:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'id': 401, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 326, + 'src': '7689:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "7689:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 402, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '7689:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7689:25:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 404, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '7689:25:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "7678:36:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7678:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "src": "7497:217:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '7497:217:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "id": 407, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7483:241:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 407, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '7483:241:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 338, - "id": 408, - "nodeType": "Return", - "src": "7476:248:1" + 'functionReturnParameters': 338, + 'id': 408, + 'nodeType': 'Return', + 'src': '7476:248:1' } ] }, - "documentation": null, - "id": 410, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isSubscriptionReady", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 335, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 410, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'isSubscriptionReady', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 335, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 320, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6508:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 319, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6508:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 320, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6508:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 319, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6508:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 322, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6547:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 321, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6547:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 322, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6547:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 321, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6547:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 324, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6583:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 323, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6583:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 324, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6583:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 323, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '6583:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 326, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6655:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 325, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6655:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 326, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6655:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 325, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6655:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 328, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6725:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6725:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 328, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6725:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 327, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6725:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 330, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6797:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6797:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 330, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6797:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 329, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6797:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 332, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6882:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 331, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6882:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 332, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6882:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 331, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '6882:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 334, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "6964:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 333, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6964:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 334, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '6964:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 333, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '6964:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "6498:544:1" + 'src': '6498:544:1' }, - "returnParameters": { - "id": 338, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 338, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 337, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 410, - "src": "7088:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 336, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7088:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 337, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 410, + 'src': '7088:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 336, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '7088:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "7087:6:1" + 'src': '7087:6:1' }, - "scope": 675, - "src": "6470:1261:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '6470:1261:1', + 'stateMutability': 'view', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 486, - "nodeType": "Block", - "src": "8606:802:1", - "statements": [ + 'body': { + 'id': 486, + 'nodeType': 'Block', + 'src': '8606:802:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 432 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 432, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 486, - "src": "8616:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 432, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 486, + 'src': '8616:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 431, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 431, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '8616:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 442, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 442, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 434, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "8676:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 434, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '8676:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 435, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 414, - "src": "8682:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 435, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 414, + 'src': '8682:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 436, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 416, - "src": "8686:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 436, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 416, + 'src': '8686:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 437, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "8700:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 437, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 418, + 'src': '8700:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 438, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "8713:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 438, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 420, + 'src': '8713:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 439, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "8728:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 439, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 422, + 'src': '8728:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 440, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "8738:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 440, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 424, + 'src': '8738:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 433, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "8643:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 433, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '8643:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8643:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 441, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8643:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "8616:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '8616:137:1' }, { - "assignments": [ + 'assignments': [ 444 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 444, - "name": "signer", - "nodeType": "VariableDeclaration", - "scope": 486, - "src": "8763:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 444, + 'name': 'signer', + 'nodeType': 'VariableDeclaration', + 'scope': 486, + 'src': '8763:14:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "typeName": { - "id": 443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8763:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeName': { + 'id': 443, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8763:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 449, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 449, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 446, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "8802:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'argumentTypes': null, + 'id': 446, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 432, + 'src': '8802:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, { - "argumentTypes": null, - "id": 447, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 426, - "src": "8820:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 447, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 426, + 'src': '8820:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 445, - "name": "getSubscriptionSigner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 318, - "src": "8780:21:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes32,bytes memory) pure returns (address)" + 'id': 445, + 'name': 'getSubscriptionSigner', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 318, + 'src': '8780:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$', + 'typeString': 'function (bytes32,bytes memory) pure returns (address)' } }, - "id": 448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8780:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 448, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8780:50:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "VariableDeclarationStatement", - "src": "8763:67:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '8763:67:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 451, - "name": "signer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "8887:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 453, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 451, + 'name': 'signer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 444, + 'src': '8887:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 452, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "8897:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 452, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '8897:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "8887:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '8887:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e", - "id": 454, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8903:49:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", - "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + 'argumentTypes': null, + 'hexValue': '496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e', + 'id': 454, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '8903:49:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string \'Invalid Signature for subscription cancellation\'' }, - "value": "Invalid Signature for subscription cancellation" + 'value': 'Invalid Signature for subscription cancellation' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b", - "typeString": "literal_string \"Invalid Signature for subscription cancellation\"" + 'typeIdentifier': 't_stringliteral_20f3baa67ddd296dfb8b9e0ec971696cfd8630a4bebb38617aeef0cee76fac0b', + 'typeString': 'literal_string \'Invalid Signature for subscription cancellation\'' } ], - "id": 450, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 450, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "8879:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '8879:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8879:74:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 455, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '8879:74:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 456, - "nodeType": "ExpressionStatement", - "src": "8879:74:1" + 'id': 456, + 'nodeType': 'ExpressionStatement', + 'src': '8879:74:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "9012:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 461, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 458, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '9012:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "9020:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 459, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '9020:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9020:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 460, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '9020:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "9012:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '9012:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "6d73672e73656e646572206973206e6f74207468652073756273637269626572", - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9032:34:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", - "typeString": "literal_string \"msg.sender is not the subscriber\"" + 'argumentTypes': null, + 'hexValue': '6d73672e73656e646572206973206e6f74207468652073756273637269626572', + 'id': 462, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9032:34:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string \'msg.sender is not the subscriber\'' }, - "value": "msg.sender is not the subscriber" + 'value': 'msg.sender is not the subscriber' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79", - "typeString": "literal_string \"msg.sender is not the subscriber\"" + 'typeIdentifier': 't_stringliteral_b86252a974ff2529f3bb7d6f22659872d492e2e9d678b8652f19cecd6ad9fd79', + 'typeString': 'literal_string \'msg.sender is not the subscriber\'' } ], - "id": 457, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 457, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "9004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '9004:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9004:63:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 463, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9004:63:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 464, - "nodeType": "ExpressionStatement", - "src": "9004:63:1" + 'id': 464, + 'nodeType': 'ExpressionStatement', + 'src': '9004:63:1' }, { - "expression": { - "argumentTypes": null, - "id": 472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 465, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "9206:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 472, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 465, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '9206:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 467, - "indexExpression": { - "argumentTypes": null, - "id": 466, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 432, - "src": "9225:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 467, + 'indexExpression': { + 'argumentTypes': null, + 'id': 466, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 432, + 'src': '9225:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "9206:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '9206:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9251:2:1", - "subExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9252:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" + 'argumentTypes': null, + 'id': 470, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'UnaryOperation', + 'operator': '-', + 'prefix': true, + 'src': '9251:2:1', + 'subExpression': { + 'argumentTypes': null, + 'hexValue': '31', + 'id': 469, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9252:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_1_by_1', + 'typeString': 'int_const 1' }, - "value": "1" + 'value': '1' }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeDescriptions': { + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_rational_minus_1_by_1", - "typeString": "int_const -1" + 'typeIdentifier': 't_rational_minus_1_by_1', + 'typeString': 'int_const -1' } ], - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9243:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" + 'id': 468, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'lValueRequested': false, + 'nodeType': 'ElementaryTypeNameExpression', + 'src': '9243:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_uint256_$', + 'typeString': 'type(uint256)' }, - "typeName": "uint256" + 'typeName': 'uint256' }, - "id": 471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9243:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 471, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9243:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "9206:48:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '9206:48:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 473, - "nodeType": "ExpressionStatement", - "src": "9206:48:1" + 'id': 473, + 'nodeType': 'ExpressionStatement', + 'src': '9206:48:1' }, { - "eventCall": { - "argumentTypes": null, - "arguments": [ + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 475, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "9302:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 475, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 412, + 'src': '9302:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 476, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 414, - "src": "9308:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 476, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 414, + 'src': '9308:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 477, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 416, - "src": "9312:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 477, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 416, + 'src': '9312:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 478, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 418, - "src": "9326:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 478, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 418, + 'src': '9326:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 479, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "9339:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 479, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 420, + 'src': '9339:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 480, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "9354:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 480, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 422, + 'src': '9354:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 481, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "9364:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 481, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 424, + 'src': '9364:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 474, - "name": "CancelSubscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 121, - "src": "9270:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + 'id': 474, + 'name': 'CancelSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 121, + 'src': '9270:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' } }, - "id": 482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9270:109:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 482, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '9270:109:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 483, - "nodeType": "EmitStatement", - "src": "9265:114:1" + 'id': 483, + 'nodeType': 'EmitStatement', + 'src': '9265:114:1' }, { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 484, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9397:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 484, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '9397:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "true" + 'value': 'true' }, - "functionReturnParameters": 430, - "id": 485, - "nodeType": "Return", - "src": "9390:11:1" + 'functionReturnParameters': 430, + 'id': 485, + 'nodeType': 'Return', + 'src': '9390:11:1' } ] }, - "documentation": null, - "id": 487, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cancelSubscription", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 427, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 487, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'cancelSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 427, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 412, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8022:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 411, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8022:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 412, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8022:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 411, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8022:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 414, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8061:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 413, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8061:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 414, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8061:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 413, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8061:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 416, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8097:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 415, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8097:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 416, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8097:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 415, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '8097:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 418, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8169:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 417, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8169:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 418, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8169:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 417, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8169:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 420, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8239:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 419, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8239:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 420, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8239:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 419, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8239:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 422, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8311:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8311:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 422, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8311:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 421, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8311:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 424, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8395:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 423, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8395:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 424, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8395:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 423, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '8395:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 426, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8477:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 425, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8477:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 426, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8477:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 425, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '8477:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "8012:543:1" + 'src': '8012:543:1' }, - "returnParameters": { - "id": 430, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 430, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 429, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 487, - "src": "8588:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 428, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8588:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 429, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 487, + 'src': '8588:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 428, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '8588:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "8587:14:1" + 'src': '8587:14:1' }, - "scope": 675, - "src": "7985:1423:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '7985:1423:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 636, - "nodeType": "Block", - "src": "10189:2468:1", - "statements": [ + 'body': { + 'id': 636, + 'nodeType': 'Block', + 'src': '10189:2468:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address', + 'typeString': 'address' }, - "id": 512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 509, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'id': 512, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 509, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '10207:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10207:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 510, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '10207:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 511, - "name": "relayer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "10221:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 511, + 'name': 'relayer', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 71, + 'src': '10221:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "src": "10207:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '10207:21:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } ], - "id": 508, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 508, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1354, - "src": "10199:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + 'referencedDeclaration': 1354, + 'src': '10199:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' } }, - "id": 513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10199:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 513, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10199:30:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 514, - "nodeType": "ExpressionStatement", - "src": "10199:30:1" + 'id': 514, + 'nodeType': 'ExpressionStatement', + 'src': '10199:30:1' }, { - "assignments": [ + 'assignments': [ 516 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 516, - "name": "subscriptionHash", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "10239:24:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'constant': false, + 'id': 516, + 'name': 'subscriptionHash', + 'nodeType': 'VariableDeclaration', + 'scope': 636, + 'src': '10239:24:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' }, - "typeName": { - "id": 515, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "10239:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'typeName': { + 'id': 515, + 'name': 'bytes32', + 'nodeType': 'ElementaryTypeName', + 'src': '10239:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 526, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 526, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 518, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10299:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 518, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10299:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 519, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "10305:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 519, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '10305:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 520, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "10309:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 520, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '10309:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 521, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "10323:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 521, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '10323:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 522, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10336:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 522, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10336:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 523, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "10351:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 523, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '10351:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 524, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10361:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 524, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10361:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 517, - "name": "getSubscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 301, - "src": "10266:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + 'id': 517, + 'name': 'getSubscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 301, + 'src': '10266:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)' } }, - "id": 525, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10266:110:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 525, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10266:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "nodeType": "VariableDeclarationStatement", - "src": "10239:137:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '10239:137:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [ + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 529, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10473:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 529, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10473:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 530, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "10479:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 530, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '10479:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 531, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "10483:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 531, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '10483:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 532, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "10497:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 532, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '10497:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 533, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10510:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 533, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10510:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 534, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "10525:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 534, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '10525:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 535, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10535:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 535, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10535:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 536, - "name": "signature", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 503, - "src": "10542:9:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'argumentTypes': null, + 'id': 536, + 'name': 'signature', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 503, + 'src': '10542:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes memory' } ], - "id": 528, - "name": "isSubscriptionReady", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 410, - "src": "10453:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)" + 'id': 528, + 'name': 'isSubscriptionReady', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 410, + 'src': '10453:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (bool)' } }, - "id": 537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10453:99:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 537, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10453:99:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574", - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10554:67:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", - "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d6574', + 'id': 538, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '10554:67:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string \'Subscription is not ready or conditions of transction are not met\'' }, - "value": "Subscription is not ready or conditions of transction are not met" + 'value': 'Subscription is not ready or conditions of transction are not met' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3", - "typeString": "literal_string \"Subscription is not ready or conditions of transction are not met\"" + 'typeIdentifier': 't_stringliteral_af71f06446e1befab38ec272e173aae8220ce6336c1755fee67e531c43ea91d3', + 'typeString': 'literal_string \'Subscription is not ready or conditions of transction are not met\'' } ], - "id": 527, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 527, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "10444:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '10444:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10444:179:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 539, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10444:179:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 540, - "nodeType": "ExpressionStatement", - "src": "10444:179:1" + 'id': 540, + 'nodeType': 'ExpressionStatement', + 'src': '10444:179:1' }, { - "expression": { - "argumentTypes": null, - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 541, - "name": "nextValidTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "10713:18:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", - "typeString": "mapping(bytes32 => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 549, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 541, + 'name': 'nextValidTimestamp', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 85, + 'src': '10713:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_bytes32_$_t_uint256_$', + 'typeString': 'mapping(bytes32 => uint256)' } }, - "id": 543, - "indexExpression": { - "argumentTypes": null, - "id": 542, - "name": "subscriptionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10732:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + 'id': 543, + 'indexExpression': { + 'argumentTypes': null, + 'id': 542, + 'name': 'subscriptionHash', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 516, + 'src': '10732:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes32', + 'typeString': 'bytes32' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10713:36:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '10713:36:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 547, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "10772:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 547, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '10772:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 544, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1341, - "src": "10752:5:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" + 'expression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 544, + 'name': 'block', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1341, + 'src': '10752:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_block', + 'typeString': 'block' } }, - "id": 545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10752:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 545, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'timestamp', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '10752:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 863, - "src": "10752:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" + 'id': 546, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'add', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 863, + 'src': '10752:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$', + 'typeString': 'function (uint256,uint256) pure returns (uint256)' } }, - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10752:34:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 548, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '10752:34:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10713:73:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '10713:73:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 550, - "nodeType": "ExpressionStatement", - "src": "10713:73:1" + 'id': 550, + 'nodeType': 'ExpressionStatement', + 'src': '10713:73:1' }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 551, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10905:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 555, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 551, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10905:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 552, - "name": "extraNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "10913:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 552, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '10913:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' } }, - "id": 554, - "indexExpression": { - "argumentTypes": null, - "id": 553, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10924:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 554, + 'indexExpression': { + 'argumentTypes': null, + 'id': 553, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10924:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10913:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'IndexAccess', + 'src': '10913:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10905:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '10905:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 563, - "nodeType": "IfStatement", - "src": "10902:75:1", - "trueBody": { - "id": 562, - "nodeType": "Block", - "src": "10930:47:1", - "statements": [ + 'falseBody': null, + 'id': 563, + 'nodeType': 'IfStatement', + 'src': '10902:75:1', + 'trueBody': { + 'id': 562, + 'nodeType': 'Block', + 'src': '10930:47:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 556, - "name": "extraNonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 89, - "src": "10942:10:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" + 'expression': { + 'argumentTypes': null, + 'id': 560, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftHandSide': { + 'argumentTypes': null, + 'baseExpression': { + 'argumentTypes': null, + 'id': 556, + 'name': 'extraNonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 89, + 'src': '10942:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_mapping$_t_address_$_t_uint256_$', + 'typeString': 'mapping(address => uint256)' } }, - "id": 558, - "indexExpression": { - "argumentTypes": null, - "id": 557, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "10953:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'id': 558, + 'indexExpression': { + 'argumentTypes': null, + 'id': 557, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '10953:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10942:16:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'isConstant': false, + 'isLValue': true, + 'isPure': false, + 'lValueRequested': true, + 'nodeType': 'IndexAccess', + 'src': '10942:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 559, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "10961:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'Assignment', + 'operator': '=', + 'rightHandSide': { + 'argumentTypes': null, + 'id': 559, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '10961:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "10942:24:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '10942:24:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "id": 561, - "nodeType": "ExpressionStatement", - "src": "10942:24:1" + 'id': 561, + 'nodeType': 'ExpressionStatement', + 'src': '10942:24:1' } ] } }, { - "assignments": [ + 'assignments': [ 565 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 565, - "name": "startingBalance", - "nodeType": "VariableDeclaration", - "scope": 636, - "src": "11062:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 565, + 'name': 'startingBalance', + 'nodeType': 'VariableDeclaration', + 'scope': 636, + 'src': '11062:23:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 564, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11062:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 564, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '11062:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 572, - "initialValue": { - "argumentTypes": null, - "arguments": [ + 'id': 572, + 'initialValue': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 570, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11118:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 570, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11118:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 567, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11094:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 567, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11094:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 566, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11088:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 566, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11088:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11088:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 568, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11088:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "11088:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 569, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '11088:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11088:33:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 571, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11088:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "VariableDeclarationStatement", - "src": "11062:59:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '11062:59:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 577, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "11164:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 577, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '11164:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 578, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11169:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 578, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11169:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 579, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11172:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 579, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11172:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 574, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11137:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 574, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11137:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 573, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 573, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11131:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11131:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 575, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11131:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 1014, - "src": "11131:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + 'id': 576, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1014, + 'src': '11131:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' } }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11131:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 580, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11131:53:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "id": 581, - "nodeType": "ExpressionStatement", - "src": "11131:53:1" + 'id': 581, + 'nodeType': 'ExpressionStatement', + 'src': '11131:53:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ + 'id': 593, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'components': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 585, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 583, - "name": "startingBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 565, - "src": "11214:15:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 585, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 583, + 'name': 'startingBalance', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 565, + 'src': '11214:15:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 584, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11230:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'nodeType': 'BinaryOperation', + 'operator': '+', + 'rightExpression': { + 'argumentTypes': null, + 'id': 584, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11230:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "11214:27:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'src': '11214:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "id": 586, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11213:29:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 586, + 'isConstant': false, + 'isInlineArray': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'nodeType': 'TupleExpression', + 'src': '11213:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 591, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11276:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 591, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11276:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 588, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11252:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 588, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11252:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 587, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "11246:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 587, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '11246:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11246:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 589, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11246:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 925, - "src": "11246:29:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" + 'id': 590, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'balanceOf', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 925, + 'src': '11246:29:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_view$_t_address_$returns$_t_uint256_$', + 'typeString': 'function (address) view external returns (uint256)' } }, - "id": 592, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11246:33:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 592, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11246:33:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "src": "11213:66:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '11213:66:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79", - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11291:40:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", - "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + 'argumentTypes': null, + 'hexValue': '45524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79', + 'id': 594, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11291:40:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string \'ERC20 Balance did not change correctly\'' }, - "value": "ERC20 Balance did not change correctly" + 'value': 'ERC20 Balance did not change correctly' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7", - "typeString": "literal_string \"ERC20 Balance did not change correctly\"" + 'typeIdentifier': 't_stringliteral_ded71a89e8fc5dbd375e97b6164c08c2ea5d981bb8fdce6588c0434f53d059b7', + 'typeString': 'literal_string \'ERC20 Balance did not change correctly\'' } ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 582, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "11194:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '11194:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11194:147:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 595, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11194:147:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 596, - "nodeType": "ExpressionStatement", - "src": "11194:147:1" + 'id': 596, + 'nodeType': 'ExpressionStatement', + 'src': '11194:147:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 598, - "name": "checkSuccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "11371:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", - "typeString": "function () pure returns (bool)" + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 598, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 652, + 'src': '11371:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' } }, - "id": 599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11371:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 599, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11371:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564", - "id": 600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11397:55:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", - "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564', + 'id': 600, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11397:55:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string \'Subscription::executeSubscription TransferFrom failed\'' }, - "value": "Subscription::executeSubscription TransferFrom failed" + 'value': 'Subscription::executeSubscription TransferFrom failed' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28", - "typeString": "literal_string \"Subscription::executeSubscription TransferFrom failed\"" + 'typeIdentifier': 't_stringliteral_22fda53c4160a201b6c6b94643fa6d7525aa15a7f4ec1af5c52f0db455252a28', + 'typeString': 'literal_string \'Subscription::executeSubscription TransferFrom failed\'' } ], - "id": 597, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 597, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "11352:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '11352:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11352:112:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 601, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11352:112:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 602, - "nodeType": "ExpressionStatement", - "src": "11352:112:1" + 'id': 602, + 'nodeType': 'ExpressionStatement', + 'src': '11352:112:1' }, { - "eventCall": { - "argumentTypes": null, - "arguments": [ + 'eventCall': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 604, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "11514:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 604, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '11514:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 605, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 491, - "src": "11520:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 605, + 'name': 'to', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 491, + 'src': '11520:2:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 606, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "11524:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 606, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '11524:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "id": 607, - "name": "tokenAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 495, - "src": "11538:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 607, + 'name': 'tokenAmount', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 495, + 'src': '11538:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 608, - "name": "periodSeconds", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 497, - "src": "11551:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 608, + 'name': 'periodSeconds', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 497, + 'src': '11551:13:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 609, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "11566:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 609, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '11566:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, { - "argumentTypes": null, - "id": 610, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 501, - "src": "11576:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 610, + 'name': 'nonce', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 501, + 'src': '11576:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "id": 603, - "name": "ExecuteSubscription", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "11481:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256,uint256,uint256,uint256)" + 'id': 603, + 'name': 'ExecuteSubscription', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 105, + 'src': '11481:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$', + 'typeString': 'function (address,address,address,uint256,uint256,uint256,uint256)' } }, - "id": 611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11481:110:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 611, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '11481:110:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 612, - "nodeType": "EmitStatement", - "src": "11476:115:1" + 'id': 612, + 'nodeType': 'EmitStatement', + 'src': '11476:115:1' }, { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'condition': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 613, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "11811:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 615, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 613, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '11811:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '>', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 614, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '11822:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "11811:12:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '11811:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "falseBody": null, - "id": 633, - "nodeType": "IfStatement", - "src": "11807:822:1", - "trueBody": { - "id": 632, - "nodeType": "Block", - "src": "11825:804:1", - "statements": [ + 'falseBody': null, + 'id': 633, + 'nodeType': 'IfStatement', + 'src': '11807:822:1', + 'trueBody': { + 'id': 632, + 'nodeType': 'Block', + 'src': '11825:804:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 620, - "name": "from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 489, - "src": "12437:4:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 620, + 'name': 'from', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 489, + 'src': '12437:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 621, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "12443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 621, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '12443:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "12443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 622, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '12443:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, { - "argumentTypes": null, - "id": 623, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 499, - "src": "12455:8:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'argumentTypes': null, + 'id': 623, + 'name': 'gasPrice', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 499, + 'src': '12455:8:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' }, { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } ], - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 617, - "name": "tokenAddress", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 493, - "src": "12410:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'argumentTypes': null, + 'id': 617, + 'name': 'tokenAddress', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 493, + 'src': '12410:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address", - "typeString": "address" + 'typeIdentifier': 't_address', + 'typeString': 'address' } ], - "id": 616, - "name": "ERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "12404:5:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20_$1267_$", - "typeString": "type(contract ERC20)" + 'id': 616, + 'name': 'ERC20', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1267, + 'src': '12404:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_type$_t_contract$_ERC20_$1267_$', + 'typeString': 'type(contract ERC20)' } }, - "id": 618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12404:19:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20_$1267", - "typeString": "contract ERC20" + 'id': 618, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'typeConversion', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12404:19:1', + 'typeDescriptions': { + 'typeIdentifier': 't_contract$_ERC20_$1267', + 'typeString': 'contract ERC20' } }, - "id": 619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 1014, - "src": "12404:32:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" + 'id': 619, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'transferFrom', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': 1014, + 'src': '12404:32:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$', + 'typeString': 'function (address,address,uint256) external returns (bool)' } }, - "id": 624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12404:60:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 624, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12404:60:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "id": 625, - "nodeType": "ExpressionStatement", - "src": "12404:60:1" + 'id': 625, + 'nodeType': 'ExpressionStatement', + 'src': '12404:60:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 627, - "name": "checkSuccess", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "12503:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$", - "typeString": "function () pure returns (bool)" + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 627, + 'name': 'checkSuccess', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 652, + 'src': '12503:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_internal_pure$__$returns$_t_bool_$', + 'typeString': 'function () pure returns (bool)' } }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12503:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'id': 628, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12503:14:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, { - "argumentTypes": null, - "hexValue": "537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74", - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12535:69:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", - "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + 'argumentTypes': null, + 'hexValue': '537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74', + 'id': 629, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'string', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12535:69:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string \'Subscription::executeSubscription Failed to pay gas as from account\'' }, - "value": "Subscription::executeSubscription Failed to pay gas as from account" + 'value': 'Subscription::executeSubscription Failed to pay gas as from account' } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, { - "typeIdentifier": "t_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7", - "typeString": "literal_string \"Subscription::executeSubscription Failed to pay gas as from account\"" + 'typeIdentifier': 't_stringliteral_91dfd8b130e56d88b0bb875283dbd7a93ad5846177fd31c98ad56f2a5bd9d2f7', + 'typeString': 'literal_string \'Subscription::executeSubscription Failed to pay gas as from account\'' } ], - "id": 626, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 626, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1355, - "src": "12478:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" + 'referencedDeclaration': 1355, + 'src': '12478:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$', + 'typeString': 'function (bool,string memory) pure' } }, - "id": 630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12478:140:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 630, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '12478:140:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 631, - "nodeType": "ExpressionStatement", - "src": "12478:140:1" + 'id': 631, + 'nodeType': 'ExpressionStatement', + 'src': '12478:140:1' } ] } }, { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 634, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12646:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'expression': { + 'argumentTypes': null, + 'hexValue': '74727565', + 'id': 634, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'bool', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '12646:4:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' }, - "value": "true" + 'value': 'true' }, - "functionReturnParameters": 507, - "id": 635, - "nodeType": "Return", - "src": "12639:11:1" + 'functionReturnParameters': 507, + 'id': 635, + 'nodeType': 'Return', + 'src': '12639:11:1' } ] }, - "documentation": null, - "id": 637, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "executeSubscription", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 504, - "nodeType": "ParameterList", - "parameters": [ + 'documentation': null, + 'id': 637, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'executeSubscription', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 504, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 489, - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9604:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 488, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9604:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 489, + 'name': 'from', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9604:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 488, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9604:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 491, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9643:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 490, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9643:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 491, + 'name': 'to', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9643:10:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 490, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9643:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 493, - "name": "tokenAddress", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9679:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 492, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9679:7:1", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + 'constant': false, + 'id': 493, + 'name': 'tokenAddress', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9679:20:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' + }, + 'typeName': { + 'id': 492, + 'name': 'address', + 'nodeType': 'ElementaryTypeName', + 'src': '9679:7:1', + 'stateMutability': 'nonpayable', + 'typeDescriptions': { + 'typeIdentifier': 't_address', + 'typeString': 'address' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 495, - "name": "tokenAmount", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9751:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 494, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9751:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 495, + 'name': 'tokenAmount', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9751:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 494, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9751:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 497, - "name": "periodSeconds", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9821:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9821:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 497, + 'name': 'periodSeconds', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9821:21:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 496, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9821:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 499, - "name": "gasPrice", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9893:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 498, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9893:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 499, + 'name': 'gasPrice', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9893:16:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 498, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9893:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 501, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "9977:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 500, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9977:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 501, + 'name': 'nonce', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '9977:13:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' + }, + 'typeName': { + 'id': 500, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '9977:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' }, { - "constant": false, - "id": 503, - "name": "signature", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "10060:22:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 502, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "10060:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + 'constant': false, + 'id': 503, + 'name': 'signature', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '10060:22:1', + 'stateVariable': false, + 'storageLocation': 'memory', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_memory_ptr', + 'typeString': 'bytes' + }, + 'typeName': { + 'id': 502, + 'name': 'bytes', + 'nodeType': 'ElementaryTypeName', + 'src': '10060:5:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bytes_storage_ptr', + 'typeString': 'bytes' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "9594:544:1" + 'src': '9594:544:1' }, - "returnParameters": { - "id": 507, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 507, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 506, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 637, - "src": "10171:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 505, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "10171:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 506, + 'name': 'success', + 'nodeType': 'VariableDeclaration', + 'scope': 637, + 'src': '10171:12:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 505, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '10171:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "10170:14:1" + 'src': '10170:14:1' }, - "scope": 675, - "src": "9566:3091:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" + 'scope': 675, + 'src': '9566:3091:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'public' }, { - "body": { - "id": 651, - "nodeType": "Block", - "src": "13157:770:1", - "statements": [ + 'body': { + 'id': 651, + 'nodeType': 'Block', + 'src': '13157:770:1', + 'statements': [ { - "assignments": [ + 'assignments': [ 643 ], - "declarations": [ + 'declarations': [ { - "constant": false, - "id": 643, - "name": "returnValue", - "nodeType": "VariableDeclaration", - "scope": 651, - "src": "13167:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'constant': false, + 'id': 643, + 'name': 'returnValue', + 'nodeType': 'VariableDeclaration', + 'scope': 651, + 'src': '13167:19:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "typeName": { - "id": 642, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13167:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'typeName': { + 'id': 642, + 'name': 'uint256', + 'nodeType': 'ElementaryTypeName', + 'src': '13167:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "id": 645, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 644, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13189:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'id': 645, + 'initialValue': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 644, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13189:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "nodeType": "VariableDeclarationStatement", - "src": "13167:23:1" + 'nodeType': 'VariableDeclarationStatement', + 'src': '13167:23:1' }, { - "externalReferences": [ + 'externalReferences': [ { - "returnValue": { - "declaration": 643, - "isOffset": false, - "isSlot": false, - "src": "13472:11:1", - "valueSize": 1 + 'returnValue': { + 'declaration': 643, + 'isOffset': false, + 'isSlot': false, + 'src': '13472:11:1', + 'valueSize': 1 } }, { - "returnValue": { - "declaration": 643, - "isOffset": false, - "isSlot": false, - "src": "13749:11:1", - "valueSize": 1 + 'returnValue': { + 'declaration': 643, + 'isOffset': false, + 'isSlot': false, + 'src': '13749:11:1', + 'valueSize': 1 } } ], - "id": 646, - "nodeType": "InlineAssembly", - "operations": "{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}", - "src": "13268:635:1" + 'id': 646, + 'nodeType': 'InlineAssembly', + 'operations': '{\n switch returndatasize()\n case 0x0 {\n returnValue := 1\n }\n case 0x20 {\n returndatacopy(0x0, 0x0, 0x20)\n returnValue := mload(0x0)\n }\n default {\n }\n}', + 'src': '13268:635:1' }, { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'expression': { + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' }, - "id": 649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 647, - "name": "returnValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "13904:11:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + 'id': 649, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'id': 647, + 'name': 'returnValue', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 643, + 'src': '13904:11:1', + 'typeDescriptions': { + 'typeIdentifier': 't_uint256', + 'typeString': 'uint256' } }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 648, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13919:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + 'nodeType': 'BinaryOperation', + 'operator': '!=', + 'rightExpression': { + 'argumentTypes': null, + 'hexValue': '30', + 'id': 648, + 'isConstant': false, + 'isLValue': false, + 'isPure': true, + 'kind': 'number', + 'lValueRequested': false, + 'nodeType': 'Literal', + 'src': '13919:1:1', + 'subdenomination': null, + 'typeDescriptions': { + 'typeIdentifier': 't_rational_0_by_1', + 'typeString': 'int_const 0' }, - "value": "0" + 'value': '0' }, - "src": "13904:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '13904:16:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "functionReturnParameters": 641, - "id": 650, - "nodeType": "Return", - "src": "13897:23:1" + 'functionReturnParameters': 641, + 'id': 650, + 'nodeType': 'Return', + 'src': '13897:23:1' } ] }, - "documentation": "Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.", - "id": 652, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "checkSuccess", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 638, - "nodeType": "ParameterList", - "parameters": [], - "src": "13093:7:1" + 'documentation': 'Checks the return value of the previous function. Returns true if the previous function\nfunction returned 32 non-zero bytes or returned zero bytes.', + 'id': 652, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'checkSuccess', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 638, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '13093:7:1' }, - "returnParameters": { - "id": 641, - "nodeType": "ParameterList", - "parameters": [ + 'returnParameters': { + 'id': 641, + 'nodeType': 'ParameterList', + 'parameters': [ { - "constant": false, - "id": 640, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 652, - "src": "13147:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 639, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "13147:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'constant': false, + 'id': 640, + 'name': '', + 'nodeType': 'VariableDeclaration', + 'scope': 652, + 'src': '13147:4:1', + 'stateVariable': false, + 'storageLocation': 'default', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' + }, + 'typeName': { + 'id': 639, + 'name': 'bool', + 'nodeType': 'ElementaryTypeName', + 'src': '13147:4:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } }, - "value": null, - "visibility": "internal" + 'value': null, + 'visibility': 'internal' } ], - "src": "13146:6:1" + 'src': '13146:6:1' }, - "scope": 675, - "src": "13072:855:1", - "stateMutability": "pure", - "superFunction": null, - "visibility": "private" + 'scope': 675, + 'src': '13072:855:1', + 'stateMutability': 'pure', + 'superFunction': null, + 'visibility': 'private' }, { - "body": { - "id": 666, - "nodeType": "Block", - "src": "14101:70:1", - "statements": [ + 'body': { + 'id': 666, + 'nodeType': 'Block', + 'src': '14101:70:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'argumentTypes': null, + 'commonType': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' }, - "id": 659, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 656, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1351, - "src": "14117:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" + 'id': 659, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'leftExpression': { + 'argumentTypes': null, + 'expression': { + 'argumentTypes': null, + 'id': 656, + 'name': 'msg', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1351, + 'src': '14117:3:1', + 'typeDescriptions': { + 'typeIdentifier': 't_magic_message', + 'typeString': 'msg' } }, - "id": 657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14117:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'id': 657, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'lValueRequested': false, + 'memberName': 'sender', + 'nodeType': 'MemberAccess', + 'referencedDeclaration': null, + 'src': '14117:10:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 658, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "14129:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'nodeType': 'BinaryOperation', + 'operator': '==', + 'rightExpression': { + 'argumentTypes': null, + 'id': 658, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14129:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } }, - "src": "14117:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'src': '14117:18:1', + 'typeDescriptions': { + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + 'typeIdentifier': 't_bool', + 'typeString': 'bool' } ], - "id": 655, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'id': 655, + 'name': 'require', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1354, 1355 ], - "referencedDeclaration": 1354, - "src": "14109:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + 'referencedDeclaration': 1354, + 'src': '14109:7:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_require_pure$_t_bool_$returns$__$', + 'typeString': 'function (bool) pure' } }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14109:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 660, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14109:27:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 661, - "nodeType": "ExpressionStatement", - "src": "14109:27:1" + 'id': 661, + 'nodeType': 'ExpressionStatement', + 'src': '14109:27:1' }, { - "expression": { - "argumentTypes": null, - "arguments": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [ { - "argumentTypes": null, - "id": 663, - "name": "author", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "14157:6:1", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'argumentTypes': null, + 'id': 663, + 'name': 'author', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 69, + 'src': '14157:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } } ], - "expression": { - "argumentTypes": [ + 'expression': { + 'argumentTypes': [ { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" + 'typeIdentifier': 't_address_payable', + 'typeString': 'address payable' } ], - "id": 662, - "name": "selfdestruct", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1359, - "src": "14144:12:1", - "typeDescriptions": { - "typeIdentifier": "t_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$", - "typeString": "function (address payable)" + 'id': 662, + 'name': 'selfdestruct', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [], + 'referencedDeclaration': 1359, + 'src': '14144:12:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_selfdestruct_nonpayable$_t_address_payable_$returns$__$', + 'typeString': 'function (address payable)' } }, - "id": 664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14144:20:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 664, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14144:20:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 665, - "nodeType": "ExpressionStatement", - "src": "14144:20:1" + 'id': 665, + 'nodeType': 'ExpressionStatement', + 'src': '14144:20:1' } ] }, - "documentation": null, - "id": 667, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "endContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 653, - "nodeType": "ParameterList", - "parameters": [], - "src": "14077:2:1" + 'documentation': null, + 'id': 667, + 'implemented': true, + 'kind': 'function', + 'modifiers': [], + 'name': 'endContract', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 653, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14077:2:1' }, - "returnParameters": { - "id": 654, - "nodeType": "ParameterList", - "parameters": [], - "src": "14101:0:1" + 'returnParameters': { + 'id': 654, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14101:0:1' }, - "scope": 675, - "src": "14057:114:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '14057:114:1', + 'stateMutability': 'nonpayable', + 'superFunction': null, + 'visibility': 'external' }, { - "body": { - "id": 673, - "nodeType": "Block", - "src": "14277:25:1", - "statements": [ + 'body': { + 'id': 673, + 'nodeType': 'Block', + 'src': '14277:25:1', + 'statements': [ { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 670, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ + 'expression': { + 'argumentTypes': null, + 'arguments': [], + 'expression': { + 'argumentTypes': [], + 'id': 670, + 'name': 'revert', + 'nodeType': 'Identifier', + 'overloadedDeclarations': [ 1356, 1357 ], - "referencedDeclaration": 1356, - "src": "14286:6:1", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" + 'referencedDeclaration': 1356, + 'src': '14286:6:1', + 'typeDescriptions': { + 'typeIdentifier': 't_function_revert_pure$__$returns$__$', + 'typeString': 'function () pure' } }, - "id": 671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14286:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + 'id': 671, + 'isConstant': false, + 'isLValue': false, + 'isPure': false, + 'kind': 'functionCall', + 'lValueRequested': false, + 'names': [], + 'nodeType': 'FunctionCall', + 'src': '14286:9:1', + 'typeDescriptions': { + 'typeIdentifier': 't_tuple$__$', + 'typeString': 'tuple()' } }, - "id": 672, - "nodeType": "ExpressionStatement", - "src": "14286:9:1" + 'id': 672, + 'nodeType': 'ExpressionStatement', + 'src': '14286:9:1' } ] }, - "documentation": null, - "id": 674, - "implemented": true, - "kind": "fallback", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 668, - "nodeType": "ParameterList", - "parameters": [], - "src": "14257:2:1" + 'documentation': null, + 'id': 674, + 'implemented': true, + 'kind': 'fallback', + 'modifiers': [], + 'name': '', + 'nodeType': 'FunctionDefinition', + 'parameters': { + 'id': 668, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14257:2:1' }, - "returnParameters": { - "id": 669, - "nodeType": "ParameterList", - "parameters": [], - "src": "14277:0:1" + 'returnParameters': { + 'id': 669, + 'nodeType': 'ParameterList', + 'parameters': [], + 'src': '14277:0:1' }, - "scope": 675, - "src": "14248:54:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" + 'scope': 675, + 'src': '14248:54:1', + 'stateMutability': 'payable', + 'superFunction': null, + 'visibility': 'external' } ], - "scope": 676, - "src": "1091:13213:1" + 'scope': 676, + 'src': '1091:13213:1' } ], - "src": "0:14305:1" + 'src': '0:14305:1' }, - "compiler": { - "name": "solc", - "version": "0.5.2+commit.1df8f40c.Emscripten.clang" + 'compiler': { + 'name': 'solc', + 'version': '0.5.2+commit.1df8f40c.Emscripten.clang' }, - "networks": {}, - "schemaVersion": "3.0.6", - "updatedAt": "2019-05-12T15:53:10.470Z", - "devdoc": { - "methods": {} + 'networks': {}, + 'schemaVersion': '3.0.6', + 'updatedAt': '2019-05-12T15:53:10.470Z', + 'devdoc': { + 'methods': {} }, - "userdoc": { - "methods": {} + 'userdoc': { + 'methods': {} } }; From 476e046eccbceb57db7f3aa1cb47b2357619833a Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:26:40 +0900 Subject: [PATCH 21/25] pin slackclient --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index cbaa737c97b..0e60bc671d8 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -22,7 +22,7 @@ PyJWT==1.5.3 PyPdf2 python-twitter==3.2 sendgrid==5.6.0 -slackclient +slackclient==2.0.0 eth-tester websockets web3==4.5.0 From b43248dfca7ab690c52f0c10f793f453c1bd3414 Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:36:32 +0900 Subject: [PATCH 22/25] update reqs --- requirements/base.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 0e60bc671d8..a948ee26df3 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -77,6 +77,7 @@ pyvips==2.1.4 redis-semaphore watchtower==0.5.4 Wand==0.4.4 -wagtail==2.3 raven==6.9.0 sentry-sdk +websocket-client +bleach From afc4b5ac41d394831ab5e5387d6181f194a7917a Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:43:13 +0900 Subject: [PATCH 23/25] add taggit --- requirements/base.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements/base.txt b/requirements/base.txt index a948ee26df3..0ac2f28051d 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -81,3 +81,4 @@ raven==6.9.0 sentry-sdk websocket-client bleach +taggit From b4f055623e6305beb9ba0e8dc364a12a767945ed Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 17:59:55 +0900 Subject: [PATCH 24/25] fix eslint --- .../v2/js/grants/compiledSubscriptionContract1.js | 2 +- app/assets/v2/js/grants/fund.js | 13 ++++--------- app/assets/v2/js/grants/new.js | 4 +++- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/assets/v2/js/grants/compiledSubscriptionContract1.js b/app/assets/v2/js/grants/compiledSubscriptionContract1.js index e9b969ec531..5f3b1ef84a2 100644 --- a/app/assets/v2/js/grants/compiledSubscriptionContract1.js +++ b/app/assets/v2/js/grants/compiledSubscriptionContract1.js @@ -506,7 +506,7 @@ let compiledSubscription1 = { 'deployedBytecode': '0x608060405260043610610110576000357c010000000000000000000000000000000000000000000000000000000090048063a3d53d18116100a7578063c814786511610076578063c814786514610646578063d3c576cd14610713578063d933c0661461087c578063ff59bff8146109e557610110565b8063a3d53d1814610516578063a6c3e6b91461057b578063ae702ba4146105d2578063bb6e7de91461062f57610110565b80636b40bba1116100e35780636b40bba1146102d45780636f264b2e146102ff57806371d22d4d146103565780638406c079146104bf57610110565b806310d920601461011557806318f321a31461014057806329d428ca14610252578063384c33351461027d575b600080fd5b34801561012157600080fd5b5061012a610a34565b6040518082815260200191505060405180910390f35b34801561014c57600080fd5b506102106004803603604081101561016357600080fd5b81019080803590602001909291908035906020019064010000000081111561018a57600080fd5b82018360208201111561019c57600080fd5b803590602001918460018302840111640100000000831117156101be57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610a3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025e57600080fd5b50610267610a5f565b6040518082815260200191505060405180910390f35b34801561028957600080fd5b50610292610a65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e057600080fd5b506102e9610a8b565b6040518082815260200191505060405180910390f35b34801561030b57600080fd5b50610314610a91565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036257600080fd5b506104a5600480360361010081101561037a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561041f57600080fd5b82018360208201111561043157600080fd5b8035906020019184600183028401116401000000008311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ab7565b604051808215151515815260200191505060405180910390f35b3480156104cb57600080fd5b506104d4610cfd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561052257600080fd5b506105656004803603602081101561053957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d23565b6040518082815260200191505060405180910390f35b34801561058757600080fd5b50610590610d3b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105de57600080fd5b50610615600480360360408110156105f557600080fd5b810190808035906020019092919080359060200190929190505050610d60565b604051808215151515815260200191505060405180910390f35b34801561063b57600080fd5b50610644610dd8565b005b34801561065257600080fd5b506106fd600480360360e081101561066957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610862600480360361010081101561073757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190803590602001906401000000008111156107dc57600080fd5b8201836020820111156107ee57600080fd5b8035906020019184600183028401116401000000008311171561081057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061146a565b604051808215151515815260200191505060405180910390f35b34801561088857600080fd5b506109cb60048036036101008110156108a057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561094557600080fd5b82018360208201111561095757600080fd5b8035906020019184600183028401116401000000008311171561097957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611bb0565b604051808215151515815260200191505060405180910390f35b3480156109f157600080fd5b50610a1e60048036036020811015610a0857600080fd5b8101908080359060200190929190505050611e8a565b6040518082815260200191505060405180910390f35b60065481565b6000610a5782610a4985611ea2565b611efa90919063ffffffff16565b905092915050565b60045481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610ac98a8a8a8a8a8a8a610e6d565b90506000610ad78285610a3a565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610b5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180612061602f913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16141515610c02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f6d73672e73656e646572206973206e6f7420746865207375627363726962657281525060200191505060405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000848152602001908152602001600020819055508973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f51a97a25211c2be9b0b1dd64ee1de490cdb047390e6eba984e6a1d126e6ac4568b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a360019250505098975050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60086020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60076000858152602001908152602001600020541415610da65760009050610dd2565b610dcc82600760008681526020019081526020016000205461200190919063ffffffff16565b42111590505b92915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e3357600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b60008073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f185750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b1515610f8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f7265717569726564546f41646472657373204661696c7572650000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806110365750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15156110aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f7265717569726564546f6b656e41646472657373204661696c7572650000000081525060200191505060405180910390fd5b600060045414806110bc575060045485145b1515611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f7265717569726564546f6b656e416d6f756e74204661696c757265000000000081525060200191505060405180910390fd5b60006005541480611142575060055484145b15156111b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f7265717569726564506572696f645365636f6e6473204661696c75726500000081525060200191505060405180910390fd5b600060065414806111c8575060065483145b151561123c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f72657175697265644761735072696365204661696c757265000000000000000081525060200191505060405180910390fd5b60197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308a8a8a8a8a8a604051602001808a7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018381526020018281526020019950505050505050505050604051602081830303815290604052805190602001209050979650505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156114c857600080fd5b60006114d98a8a8a8a8a8a8a610e6d565b90506114eb8a8a8a8a8a8a8a8a611bb0565b1515611542576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806121086041913960600191505060405180910390fd5b611555864261200190919063ffffffff16565b6007600083815260200190815260200160002081905550600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411156115f85783600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60008873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561169357600080fd5b505afa1580156116a7573d6000803e3d6000fd5b505050506040513d60208110156116bd57600080fd5b810190808051906020019092919050505090508873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c8c8b6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156117a757600080fd5b505af11580156117bb573d6000803e3d6000fd5b505050506040513d60208110156117d157600080fd5b8101908080519060200190929190505050508873ffffffffffffffffffffffffffffffffffffffff166370a082318b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561187c57600080fd5b505afa158015611890573d6000803e3d6000fd5b505050506040513d60208110156118a657600080fd5b8101908080519060200190929190505050888201141515611912576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806121496026913960400191505060405180910390fd5b61191a612022565b1515611971576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806120906035913960400191505060405180910390fd5b8973ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f96d296c945eee0618d3cc6f435f4d59f14bcefd708eab22c3de30df20b1347938b8b8b8b8b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a36000861115611b9e578873ffffffffffffffffffffffffffffffffffffffff166323b872dd8c33896040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611b0257600080fd5b505af1158015611b16573d6000803e3d6000fd5b505050506040513d6020811015611b2c57600080fd5b810190808051906020019092919050505050611b46612022565b1515611b9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806120c56043913960600191505060405180910390fd5b5b60019250505098975050505050505050565b600080611bc28a8a8a8a8a8a8a610e6d565b90506000611bd08285610a3a565b905060008973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8d306040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015611ca157600080fd5b505afa158015611cb5573d6000803e3d6000fd5b505050506040513d6020811015611ccb57600080fd5b8101908080519060200190929190505050905060008a73ffffffffffffffffffffffffffffffffffffffff166370a082318e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d7957600080fd5b505afa158015611d8d573d6000803e3d6000fd5b505050506040513d6020811015611da357600080fd5b810190808051906020019092919050505090508c73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e1d57508b73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060076000858152602001908152602001600020544210155b8015611e5a5750611e56888b61200190919063ffffffff16565b8210155b8015611e785750611e74888b61200190919063ffffffff16565b8110155b94505050505098975050505050505050565b60076020528060005260406000206000915090505481565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b600060418251141515611f105760009050611ffb565b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a082600190041115611f655760009350505050611ffb565b601b8160ff1614158015611f7d5750601c8160ff1614155b15611f8e5760009350505050611ffb565b60018682858560405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611feb573d6000803e3d6000fd5b5050506020604051035193505050505b92915050565b600080828401905083811015151561201857600080fd5b8091505092915050565b600080600090503d6000811461203f576020811461204857612054565b60019150612054565b60206000803e60005191505b5060008114159150509056fe496e76616c6964205369676e617475726520666f7220737562736372697074696f6e2063616e63656c6c6174696f6e537562736372697074696f6e3a3a65786563757465537562736372697074696f6e205472616e7366657246726f6d206661696c6564537562736372697074696f6e3a3a65786563757465537562736372697074696f6e204661696c656420746f20706179206761732061732066726f6d206163636f756e74537562736372697074696f6e206973206e6f74207265616479206f7220636f6e646974696f6e73206f66207472616e736374696f6e20617265206e6f74206d657445524332302042616c616e636520646964206e6f74206368616e676520636f72726563746c79a165627a7a72305820c2a8cbb755ebd520096559ff42aaaa53fe5eb026b695da6ae213734d1aabdb780029', 'sourceMap': '1091:13213:1:-;;;3145:489;8:9:-1;5:2;;;30:1;27;20:12;5:2;3145:489:1;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3145:489:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3396:10;3378:17;;:28;;;;;;;;;;;;;;;;;;3437:13;3416:20;;:34;;;;;;;;;;;;;;;;;;3480:12;3460:19;:32;;;;3524:14;3502:21;:36;;;;3565:9;3548:16;:26;;;;3591:10;3584:6;;:17;;;;;;;;;;;;;;;;;;3619:8;3611:7;;:16;;;;;;;;;;;;;;;;;;3145:489;;;;;;;1091:13213;;;;;;', 'deployedSourceMap': '1091:13213:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14286:9;;;1631:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1631:31:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6029:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6029:318:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6029:318:1;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6029:318:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6029:318:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6029:318:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6029:318:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1549:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1549:34:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1470:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1470:32:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1589:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1589:36:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1508:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1508:35:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7985:1423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7985:1423:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7985:1423:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7985:1423:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7985:1423:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7985:1423:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1288:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1288:22:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2088:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2088:45:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2088:45:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1212:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1212:29:1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3874:390;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3874:390:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3874:390:1;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14057:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14057:114:1;;;:::i;:::-;;4420:1548;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4420:1548:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4420:1548:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9566:3091;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9566:3091:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;9566:3091:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9566:3091:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9566:3091:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;9566:3091:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6470:1261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6470:1261:1;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;6470:1261:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6470:1261:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6470:1261:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;6470:1261:1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1854:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1854:53:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1854:53:1;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1631:31;;;;:::o;6029:318::-;6250:7;6280:60;6330:9;6280:41;:16;:39;:41::i;:::-;:49;;:60;;;;:::i;:::-;6273:67;;6029:318;;;;:::o;1549:34::-;;;;:::o;1470:32::-;;;;;;;;;;;;;:::o;1589:36::-;;;;:::o;1508:35::-;;;;;;;;;;;;;:::o;7985:1423::-;8588:12;8616:24;8643:110;8676:4;8682:2;8686:12;8700:11;8713:13;8728:8;8738:5;8643:19;:110::i;:::-;8616:137;;8763:14;8780:50;8802:16;8820:9;8780:21;:50::i;:::-;8763:67;;8897:4;8887:14;;:6;:14;;;8879:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:10;9012:18;;:4;:18;;;9004:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9251:2;9206:18;:36;9225:16;9206:36;;;;;;;;;;;:48;;;;9308:2;9270:109;;9302:4;9270:109;;;9312:12;9326:11;9339:13;9354:8;9364:5;9270:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9397:4;9390:11;;;;7985:1423;;;;;;;;;;:::o;1288:22::-;;;;;;;;;;;;;:::o;2088:45::-;;;;;;;;;;;;;;;;;:::o;1212:29::-;;;;;;;;;;;;;:::o;3874:390::-;4027:4;4096:2;4050:18;:36;4069:16;4050:36;;;;;;;;;;;;:49;4047:88;;;4119:5;4112:12;;;;4047:88;4187:60;4228:18;4187;:36;4206:16;4187:36;;;;;;;;;;;;:40;;:60;;;;:::i;:::-;4152:15;:95;;4144:113;;3874:390;;;;;:::o;14057:114::-;14129:6;;;;;;;;;;;14117:18;;:10;:18;;;14109:27;;;;;;;;14157:6;;;;;;;;;;;14144:20;;;4420:1548;4956:7;5122:1;5093:31;;:17;;;;;;;;;;;:31;;;:58;;;;5134:17;;;;;;;;;;;5128:23;;:2;:23;;;5093:58;5084:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5233:1;5201:34;;:20;;;;;;;;;;;:34;;;:74;;;;5255:20;;;;;;;;;;;5239:36;;:12;:36;;;5201:74;5192:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5352:1;5329:19;;:24;:62;;;;5372:19;;5357:11;:34;5329:62;5320:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5469:1;5444:21;;:26;:68;;;;5491:21;;5474:13;:38;5444:68;5435:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5587:1;5567:16;;:21;:53;;;;5604:16;;5592:8;:28;5567:53;5558:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5731:4;5726:10;;5759:1;5754:7;;5787:4;5810;5832:2;5852:12;5882:11;5911:13;5942:8;5692:268;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5692:268:1;;;5669:292;;;;;;5662:299;;4420:1548;;;;;;;;;:::o;9566:3091::-;10171:12;10221:7;;;;;;;;;;;10207:21;;:10;:21;;;10199:30;;;;;;;;10239:24;10266:110;10299:4;10305:2;10309:12;10323:11;10336:13;10351:8;10361:5;10266:19;:110::i;:::-;10239:137;;10453:99;10473:4;10479:2;10483:12;10497:11;10510:13;10525:8;10535:5;10542:9;10453:19;:99::i;:::-;10444:179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10752:34;10772:13;10752:15;:19;;:34;;;;:::i;:::-;10713:18;:36;10732:16;10713:36;;;;;;;;;;;:73;;;;10913:10;:16;10924:4;10913:16;;;;;;;;;;;;;;;;10905:5;:24;10902:75;;;10961:5;10942:10;:16;10953:4;10942:16;;;;;;;;;;;;;;;:24;;;;10902:75;11062:23;11094:12;11088:29;;;11118:2;11088:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11088:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11088:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11088:33:1;;;;;;;;;;;;;;;;11062:59;;11137:12;11131:32;;;11164:4;11169:2;11172:11;11131:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11131:53:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11131:53:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11131:53:1;;;;;;;;;;;;;;;;;11252:12;11246:29;;;11276:2;11246:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11246:33:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11246:33:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11246:33:1;;;;;;;;;;;;;;;;11230:11;11214:15;:27;11213:66;11194:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11371:14;:12;:14::i;:::-;11352:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11520:2;11481:110;;11514:4;11481:110;;;11524:12;11538:11;11551:13;11566:8;11576:5;11481:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11822:1;11811:8;:12;11807:822;;;12410:12;12404:32;;;12437:4;12443:10;12455:8;12404:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12404:60:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12404:60:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12404:60:1;;;;;;;;;;;;;;;;;12503:14;:12;:14::i;:::-;12478:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:822;12646:4;12639:11;;;;9566:3091;;;;;;;;;;:::o;6470:1261::-;7088:4;7108:24;7135:110;7168:4;7174:2;7178:12;7192:11;7205:13;7220:8;7230:5;7135:19;:110::i;:::-;7108:137;;7255:14;7272:50;7294:16;7312:9;7272:21;:50::i;:::-;7255:67;;7332:17;7358:12;7352:29;;;7382:4;7396;7352:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7352:50:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7352:50:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7352:50:1;;;;;;;;;;;;;;;;7332:70;;7412:15;7436:12;7430:29;;;7460:4;7430:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7430:35:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7430:35:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7430:35:1;;;;;;;;;;;;;;;;7412:53;;7507:4;7497:14;;:6;:14;;;:40;;;;;7535:2;7527:10;;:4;:10;;;;7497:40;:111;;;;;7572:18;:36;7591:16;7572:36;;;;;;;;;;;;7553:15;:55;;7497:111;:165;;;;;7637:25;7653:8;7637:11;:15;;:25;;;;:::i;:::-;7624:9;:38;;7497:165;:217;;;;;7689:25;7705:8;7689:11;:15;;:25;;;;:::i;:::-;7678:7;:36;;7497:217;7476:248;;;;;;6470:1261;;;;;;;;;;:::o;1854:53::-;;;;;;;;;;;;;;;;;:::o;2650:265:2:-;2719:7;2902:4;2849:58;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2849:58:2;;;2839:69;;;;;;2832:76;;2650:265;;;:::o;609:1891::-;687:7;768:2;748:9;:16;:22;;744:72;;;802:1;786:19;;;;744:72;882:9;901;920:7;1166:4;1155:9;1151:20;1145:27;1140:32;;1211:4;1200:9;1196:20;1190:27;1185:32;;1264:4;1253:9;1249:20;1243:27;1240:1;1235:36;1230:41;;2182:66;2177:1;2169:10;;;:79;2165:127;;;2279:1;2264:17;;;;;;;2165:127;2311:2;2306:1;:7;;;;:18;;;;;2322:2;2317:1;:7;;;;2306:18;2302:66;;;2355:1;2340:17;;;;;;;2302:66;2469:24;2479:4;2485:1;2488;2491;2469:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2469:24:2;;;;;;;;2462:31;;;;;609:1891;;;;;:::o;1439:145:3:-;1497:7;1516:9;1532:1;1528;:5;1516:17;;1556:1;1551;:6;;1543:15;;;;;;;;1576:1;1569:8;;;1439:145;;;;:::o;13072:855:1:-;13147:4;13167:19;13189:1;13167:23;;13368:14;13450:3;13445:57;;;;13573:4;13568:220;;;;13361:516;;13445:57;13487:1;13472:16;;13445:57;;13568:220;13673:4;13668:3;13663;13648:30;13770:3;13764:10;13749:25;;13361:516;;13919:1;13904:11;:16;;13897:23;;;13072:855;:::o', - 'source': 'pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \'openzeppelin-solidity/contracts/cryptography/ECDSA.sol\';\nimport \'openzeppelin-solidity/contracts/math/SafeMath.sol\';\nimport \'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\';\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //we'll use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \'paid\' and \'active\'\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let's make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \'requiredToAddress Failure\' );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \'requiredTokenAddress Failure\' );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \'requiredTokenAmount Failure\' );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \'requiredPeriodSeconds Failure\' );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \'requiredGasPrice Failure\' );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don't really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I'll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \'Invalid Signature for subscription cancellation\');\n\n //make sure it's the subscriber\n require(from == msg.sender, 'msg.sender is not the subscriber');\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \'Subscription is not ready or conditions of transction are not met\' );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we'll set that for this 'from'\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \'ERC20 Balance did not change correctly\'\n );\n\n require(\n checkSuccess(),\n \'Subscription::executeSubscription TransferFrom failed\'\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \'Subscription::executeSubscription Failed to pay gas as from account\'\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let's go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n', + 'source': 'pragma solidity ^0.5.2;\n\n/*\n Super Simple Token Subscriptions - https://tokensubscription.com\n //// Breakin’ Through @ University of Wyoming ////\n Austin Thomas Griffith - https://austingriffith.com\n Building on previous works:\n https://github.com/austintgriffith/token-subscription\n https://gist.github.com/androolloyd/0a62ef48887be00a5eff5c17f2be849a\n https://media.consensys.net/subscription-services-on-the-blockchain-erc-948-6ef64b083a36\n https://medium.com/gitcoin/technical-deep-dive-architecture-choices-for-subscriptions-on-the-blockchain-erc948-5fae89cabc7a\n https://github.com/ethereum/EIPs/pull/1337\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1077.md\n https://github.com/gnosis/safe-contracts\n Earlier Meta Transaction Demo:\n https://github.com/austintgriffith/bouncer-proxy\n Huge thanks, as always, to OpenZeppelin for the rad contracts:\n */\n\nimport \\"openzeppelin-solidity/contracts/cryptography/ECDSA.sol\\";\nimport \\"openzeppelin-solidity/contracts/math/SafeMath.sol\\";\nimport \\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\\";\n\n\ncontract Subscription {\n using ECDSA for bytes32;\n using SafeMath for uint256;\n\n //who deploys the contract\n address payable public author;\n\n //restrict who can relay the metatx\n address public relayer;\n\n // the publisher may optionally deploy requirements for the subscription\n // so only meta transactions that match the requirements can be relayed\n address public requiredToAddress;\n address public requiredTokenAddress;\n uint256 public requiredTokenAmount;\n uint256 public requiredPeriodSeconds;\n uint256 public requiredGasPrice;\n\n\n // similar to a nonce that avoids replay attacks this allows a single execution\n // every x seconds for a given subscription\n // subscriptionHash => next valid block number\n mapping(bytes32 => uint256) public nextValidTimestamp;\n\n //well use a nonce for each from but because transactions can go through\n //multiple times, we allow anything but users can use this as a signal for\n //uniqueness\n mapping(address => uint256) public extraNonce;\n\n event ExecuteSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n event CancelSubscription(\n address indexed from, //the subscriber\n address indexed to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n );\n\n constructor(\n address _toAddress,\n address _tokenAddress,\n uint256 _tokenAmount,\n uint256 _periodSeconds,\n uint256 _gasPrice,\n uint8 _version,\n address _relayer\n ) public {\n requiredToAddress=_toAddress;\n requiredTokenAddress=_tokenAddress;\n requiredTokenAmount=_tokenAmount;\n requiredPeriodSeconds=_periodSeconds;\n requiredGasPrice=_gasPrice;\n author=msg.sender;\n relayer=_relayer;\n }\n\n // this is used by external smart contracts to verify on-chain that a\n // particular subscription is \\"paid\\" and \\"active\\"\n // there must be a small grace period added to allow the publisher\n // or desktop miner to execute\n function isSubscriptionActive(\n bytes32 subscriptionHash,\n uint256 gracePeriodSeconds\n )\n external\n view\n returns (bool)\n {\n if(nextValidTimestamp[subscriptionHash]==uint256(-1)){\n return false;\n }\n return (block.timestamp <=\n nextValidTimestamp[subscriptionHash].add(gracePeriodSeconds)\n );\n }\n\n // given the subscription details, generate a hash and try to kind of follow\n // the eip-191 standard and eip-1077 standard from my dude @avsa\n function getSubscriptionHash(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce // to allow multiple subscriptions with the same parameters\n )\n public\n view\n returns (bytes32)\n {\n // if there are requirements from the deployer, let\"s make sure\n // those are met exactly\n require( requiredToAddress == address(0) || to == requiredToAddress, \\"requiredToAddress Failure\\" );\n require( requiredTokenAddress == address(0) || tokenAddress == requiredTokenAddress, \\"requiredTokenAddress Failure\\" );\n require( requiredTokenAmount == 0 || tokenAmount == requiredTokenAmount, \\"requiredTokenAmount Failure\\" );\n require( requiredPeriodSeconds == 0 || periodSeconds == requiredPeriodSeconds, \\"requiredPeriodSeconds Failure\\" );\n require( requiredGasPrice == 0 || gasPrice == requiredGasPrice, \\"requiredGasPrice Failure\\" );\n\n return keccak256(\n abi.encodePacked(\n byte(0x19),\n byte(0),\n address(this),\n from,\n to,\n tokenAddress,\n tokenAmount,\n periodSeconds,\n gasPrice\n ));\n }\n\n //ecrecover the signer from hash and the signature\n function getSubscriptionSigner(\n bytes32 subscriptionHash, //hash of subscription\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n pure\n returns (address)\n {\n return subscriptionHash.toEthSignedMessageHash().recover(signature);\n }\n\n //check if a subscription is signed correctly and the timestamp is ready for\n // the next execution to happen\n function isSubscriptionReady(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of the token to incentivize the relay network\n uint256 nonce,// to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n view\n returns (bool)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n uint256 allowance = ERC20(tokenAddress).allowance(from, address(this));\n uint256 balance = ERC20(tokenAddress).balanceOf(from);\n\n return (\n signer == from &&\n from != to &&\n block.timestamp >= nextValidTimestamp[subscriptionHash] &&\n allowance >= tokenAmount.add(gasPrice) &&\n balance >= tokenAmount.add(gasPrice)\n );\n }\n\n // you don\"t really need this if you are using the approve/transferFrom method\n // because you control the flow of tokens by approving this contract address,\n // but to make the contract an extensible example for later user I\"ll add this\n function cancelSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, //to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n address signer = getSubscriptionSigner(subscriptionHash, signature);\n\n //the signature must be valid\n require(signer == from, \\"Invalid Signature for subscription cancellation\\");\n\n //make sure it\"s the subscriber\n require(from == msg.sender, \"msg.sender is not the subscriber\");\n\n //nextValidTimestamp should be a timestamp that will never\n //be reached during the brief window human existence\n nextValidTimestamp[subscriptionHash]=uint256(-1);\n\n emit CancelSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n return true;\n }\n\n // execute the transferFrom to pay the publisher from the subscriber\n // the subscriber has full control by approving this contract an allowance\n function executeSubscription(\n address from, //the subscriber\n address to, //the publisher\n address tokenAddress, //the token address paid to the publisher\n uint256 tokenAmount, //the token amount paid to the publisher\n uint256 periodSeconds, //the period in seconds between payments\n uint256 gasPrice, //the amount of tokens or eth to pay relayer (0 for free)\n uint256 nonce, // to allow multiple subscriptions with the same parameters\n bytes memory signature //proof the subscriber signed the meta trasaction\n )\n public\n returns (bool success)\n {\n require(msg.sender == relayer);\n bytes32 subscriptionHash = getSubscriptionHash(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // make sure the subscription is valid and ready\n require( isSubscriptionReady(from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce, signature), \\"Subscription is not ready or conditions of transction are not met\\" );\n\n //increment the timestamp by the period so it wont be valid until then\n nextValidTimestamp[subscriptionHash] = block.timestamp.add(periodSeconds);\n\n //check to see if this nonce is larger than the current count and we\"ll set that for this \"from\"\n if(nonce > extraNonce[from]){\n extraNonce[from] = nonce;\n }\n\n // now, let make the transfer from the subscriber to the publisher\n uint256 startingBalance = ERC20(tokenAddress).balanceOf(to);\n ERC20(tokenAddress).transferFrom(from,to,tokenAmount);\n require(\n (startingBalance+tokenAmount) == ERC20(tokenAddress).balanceOf(to),\n \\"ERC20 Balance did not change correctly\\"\n );\n\n require(\n checkSuccess(),\n \\"Subscription::executeSubscription TransferFrom failed\\"\n );\n\n\n emit ExecuteSubscription(\n from, to, tokenAddress, tokenAmount, periodSeconds, gasPrice, nonce\n );\n\n // it is possible for the subscription execution to be run by a third party\n // incentivized in the terms of the subscription with a gasPrice of the tokens\n // - pay that out now...\n if (gasPrice > 0) {\n //the relayer is incentivized by a little of the same token from\n // the subscriber ... as far as the subscriber knows, they are\n // just sending X tokens to the publisher, but the publisher can\n // choose to send Y of those X to a relayer to run their transactions\n // the publisher will receive X - Y tokens\n // this must all be setup in the constructor\n // if not, the subscriber chooses all the params including what goes\n // to the publisher and what goes to the relayer\n ERC20(tokenAddress).transferFrom(from, msg.sender, gasPrice);\n require(\n checkSuccess(),\n \\"Subscription::executeSubscription Failed to pay gas as from account\\"\n );\n }\n\n return true;\n }\n\n // because of issues with non-standard erc20s the transferFrom can always return false\n // to fix this we run it and then check the return of the previous function:\n // https://github.com/ethereum/solidity/issues/4116\n /**\n * Checks the return value of the previous function. Returns true if the previous function\n * function returned 32 non-zero bytes or returned zero bytes.\n */\n function checkSuccess(\n )\n private\n pure\n returns (bool)\n {\n uint256 returnValue = 0;\n\n /* solium-disable-next-line security/no-inline-assembly */\n assembly {\n // check number of bytes returned from last function call\n switch returndatasize\n\n // no bytes returned: assume success\n case 0x0 {\n returnValue := 1\n }\n\n // 32 bytes returned: check if non-zero\n case 0x20 {\n // copy 32 bytes into scratch space\n returndatacopy(0x0, 0x0, 0x20)\n\n // load those bytes into returnValue\n returnValue := mload(0x0)\n }\n\n // not sure what was returned: dont mark as success\n default { }\n }\n\n return returnValue != 0;\n }\n\n //we would like a way for the author to completly destroy the subscription\n // contract to prevent further transfers\n function endContract()\n external\n {\n require(msg.sender==author);\n selfdestruct(author);\n }\n\n // let\"s go ahead and revert any ETH sent directly to the contract\n function () external payable {\n revert ();\n }\n}\n', 'sourcePath': '/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol', 'ast': { 'absolutePath': '/Users/danlipert/gitcoin/grants1337/contracts/Subscription.sol', diff --git a/app/assets/v2/js/grants/fund.js b/app/assets/v2/js/grants/fund.js index 0aaef80c65c..916b4cceef0 100644 --- a/app/assets/v2/js/grants/fund.js +++ b/app/assets/v2/js/grants/fund.js @@ -158,12 +158,7 @@ $(document).ready(function() { return; } - - - - let realTokenAmount = Number(data.amount_per_period * Math.pow(10, decimals)); - //let amountSTR = realTokenAmount.toLocaleString('fullwide', { useGrouping: false }); let realApproval; if (data.contract_version == 0) { @@ -185,7 +180,7 @@ $(document).ready(function() { // if (realPeriodSeconds < 2592000) { // charge gas for intervals less than a month // realGasPrice = Math.ceil($('#gasPrice').val() * Math.pow(10, 9)); - //} + // } let approvalSTR = realApproval.toLocaleString('fullwide', { useGrouping: false }); @@ -303,12 +298,12 @@ const subscribeToGrant = (transactionHash) => { web3.utils.toChecksumAddress($('#admin_address').val()), // admin_address web3.utils.toChecksumAddress(selected_token), // token denomination / address web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false})), - //web3.utils.toTwosComplement(amountSTR), web3.utils.toTwosComplement(realPeriodSeconds), web3.utils.toTwosComplement(data.gas_price), web3.utils.toTwosComplement(nonce) ]; - console.log('correct grant amount is: ' + web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false}))) + + console.log('correct grant amount is: ' + web3.utils.toTwosComplement(Number(grant_amount * Math.pow(10, decimals)).toLocaleString('fullwide', {useGrouping: false}))); console.log('current grant amount is: ' + parts[3]); console.log(parts); @@ -383,7 +378,7 @@ const splitPayment = (account, toFirst, toSecond, valueFirst, valueSecond) => { let token_address = $('#js-token').length ? $('#js-token').val() : $('#sub_token_address').val(); - console.log('splitting payment') + console.log('splitting payment'); console.log('tofirst: ' + toFirst); console.log('tosecond: ' + toSecond); console.log('valueFirst: ' + valueFirst); diff --git a/app/assets/v2/js/grants/new.js b/app/assets/v2/js/grants/new.js index f4e6ca33455..ac8b05a2500 100644 --- a/app/assets/v2/js/grants/new.js +++ b/app/assets/v2/js/grants/new.js @@ -92,10 +92,12 @@ const init = () => { // Begin New Deploy Subscription Contract let SubscriptionContract = new web3.eth.Contract(compiledSubscription.abi); + console.log(compiledSubscription.abi); // These args are baseline requirements for the contract set by the sender. Will set most to zero to abstract complexity from user. let args; + if ($('#contract_version').val() == 1) { args = [ // admin_address @@ -126,7 +128,7 @@ const init = () => { // data.gas_price web3.utils.toTwosComplement(0), // contract version - web3.utils.toTwosComplement(0), + web3.utils.toTwosComplement(0) ]; } From 017b28876b04a0680c608621f9510143c55adedf Mon Sep 17 00:00:00 2001 From: Dan Lipert Date: Wed, 22 May 2019 18:18:02 +0900 Subject: [PATCH 25/25] fix req --- requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/base.txt b/requirements/base.txt index 0ac2f28051d..bf677edb6e2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -81,4 +81,4 @@ raven==6.9.0 sentry-sdk websocket-client bleach -taggit +django-taggit