Apply PHP regex replace on a multi-line repeated pattern - php

Let's say I have this input:
I can haz a listz0rs!
# 42
# 126
I can haz another list plox?
# Hello, world!
# Welcome!
I want to split it so that each set of hash-started lines becomes a list:
I can haz a listz0rs!
<ul>
<li>42</li>
<li>126</li>
</ul>
I can haz another list plox?
<ul>
<li>Hello, world!</li>
<li>Welcome!</li>
</ul>
If I run the input against the regex "/(?:(?:(?<=^# )(.*)$)+)/m", I get the following result:
Array
(
[0] => Array
(
[0] => 42
)
[1] => Array
(
[0] => 126
)
[2] => Array
(
[0] => Hello, world!
)
[3] => Array
(
[0] => Welcome!
)
)
This is fine and dandy, but it doesn't distinguish between the two different lists. I need a way to either make the quantifier return a concatenated string of all the occurrences, or, ideally, an array of all the occurrences.
Ideally, this should be my output:
Array
(
[0] => Array
(
[0] => 42
[1] => 126
)
[1] => Array
(
[0] => Hello, world!
[1] => Welcome!
)
)
Is there any way of achieving this, and if not, is there a close alternative?

If you want to do this with regular expressions, you'll need two. Use the regex ^(#.*\r?\n)+ to match each list and add tags around it. Within each list (as matched by the first regex), search-and-replace ^#.* with <li>$0</li> to add tags around each list item. Both regexes require ^ to match at line breaks (/m flag in PHP).
In PHP you can use preg_replace_callback and preg_replace to achieve this in just a few lines of code.
$result = preg_replace_callback('/^(#.*\r?\n)+/m', 'replacelist', $subject);
function replacelist($groups) {
return "<ul>\n" .
preg_replace('/^#.*/m', ' <li>$0</li>', $groups[0])
. "</ul>\n";
}

I'd say don't try to do it all in a single regex - instead, first use a regex to match sets of consecutive lines that all begin with # signs and wrap those lines with a <ul></ul> pair. Then use a second regex (or not even a regex at all - you could just split on line breaks) to match each individual line and convert it to <li></li> format.

If it was me I would:
explode("\n", $input) into an array where 1 key = line
foreach through that array
whenever you get a line that doesn't start with a #, that's when you add your closing/opening ul tags
Add a little more to deal with unexpected input (like two non hash lines in a row) and you're good.

Looks like Syntax Error has already explained what I'm doing. But here goes the link to a working example.

With structured content like this, I would not do this as a regex. How about another approach?
$your_text = <<<END
I can haz a listz0rs!
# 42
# 126
I can haz another list plox?
# Hello, world!
# Welcome!
END;
function printUnorderedList($temp) {
if (count($temp)>0) {
print "<ul>\n\t<li>" .implode("</li>\n\t<li>", $temp) . "</li>\n</ul>\n";
}
}
$lines = explode("\n", $your_text);
$temp = array();
foreach($lines as $line) {
if (substr($line, 0, 1) == '#') {
$temp[] = trim(substr($line,1));
} else {
printUnorderedList($temp);
$temp = array();
echo $line . "\n";
}
}
printUnorderedList($temp);

You could avoid regex altogether, and simply try a simpler approach by having it read the file, line by line (an array of lines), and every time it encounters a non-hash-started line, it starts a new list. Like so:
// You can get this by using file('filename') or
// just doing an explode("\n", $input)
$lines = array(
'I can haz a listz0rs!',
'# 42',
'# 126',
'I can haz another list plox?',
'# Hello, world!',
'# Welcome!'
);
$hashline = false;
$lists = array();
$curlist = array();
foreach ($lines as $line) {
if ($line[0] == '#')
$curlist[] = $line;
elseif ($hashline) {
$lists[] = $curlist;
$curlist = array();
$hashline = false;
}
}
A little clean-up may be in order, but hopefully it helps.
(after reading new answers, this is basically an indepth explanation of Syntax Error's answer.)
EDIT: You may want it to strip off the # at the beginning of each line too.

Related

PHP preg_match_all to find multiple base64 images

I have a JSON string that may contain one or multiple base64 images.
Here is an example of the JSON string and the REGEX which only find the first occurance.
<?php
preg_match_all('/(data:\s*\S*\/(\w*);base64,[^\"]+)/', $content, $result);
Here is my content,
<?php
$content = '{"textArea":"one","signature":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAASLElEQVR4nO3dT2ij553A8bc726Qp1Eq30Py1vKXZQFvbh266EE9k2JJSZpChdAmdWbvNaT00MjulywzFvi0uVHNYikNZNNCDCwWFXNxeFHLwVSdd35Ou72nPOT97WF6t\/nnGfmW9r175c\/gcmvrPI3nA8lfP83uiL774nwAAAADA1URFLwAAAACgjEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFWBm3e554WsAAADIm6gCZNLtnoe9vfshiqIQRVH41rf+vvA1AQAA5ElUAS4tSfrhk0\/+FNbWqoOYMqzdPi18jQAAAHkRVYDnSpJ+ODp6HN58842pMUVUAQAAbiJRBbhQGlNefrkyEk82NtbD4eGjUK2uDv5bpbJS+HoBAADyJKoAU7XbpxPHfDY21sMf\/vBfIUn6odk8Hvn\/dnfvFb5mAACAPIkqwIg47oXt7dsjwaRaXQ2t1snIx4zvXonjXuFrBwAAyJOoAgwcHj4aiSWVykpoNo8nPq5W2xoJKo3GfuFrBwAAyJuoAkw96lOrbU3dfdJo7E\/sYkmSfuGPAQAAIG+iCtxg02JKtbp64S0+7fbpxI0\/3e554Y8DAACgCKIK3DBx3AtHR4\/DK698cySOXHTUZ\/jzxueoHB4+KvzxAAAAFEVUgRsgSfrh6dOPJwbQpjtTnhVTUuNzVGq1rcIfFwAAQJFEFVhSaUjZ2bk7EVLGr0d+3tc6PHw0savFHBUAAOCmE1VgiTwvpERRFOr1OxfOTJmm2z2fOPZzlc8HAABYVqIKLIF2+\/SZIaVSWQmNxn6mobI\/+ME\/TkSZoh8vAADAIhBVoKTiuBcODh5M7CIZDyCt1knmozrjt\/185SsvTr1mGQAovyTph08++ZPf9QBXIKpAiaTHezY318OtW38zl5AyrFJZGfnaDx9+VPhzAADMx+7uvRBFUVhbqxa+FoCyEFWgBDqds7C3d\/\/CXSm12talbvC5ivHhtNXqquG0ALDEqtVVN\/wBXJGoAgus2TwOa2vVqSFlZeVr4Re\/+Ne5bNGN457htABwgyRJf\/A7\/\/DwUeHrASgLUQUWzPNmpVz19p4sxnepeMcKAJZbs3k8+L3f6ZwVvh6AshBVYEGkN\/h8+ct\/OxFSqtXV0Gwe53L8ZvidKi+uAOBmqNfvDH7vF70WgDIRVaBASdIPT578duoRn0plJdTrdzJdgzyLdEidK5QB4ObY2FgPURSFjY31wtcCUCaiChQgSfrh6Ojx1CM+KytfCx9+uFvIdYZJ0p9Yk2sVAWD5eTMFIBtRBXKUJP1wcPBg6qyUanU1tFonha5vfJbK7u69wp8zAGC+ut1zQ2oBMhJVIAfp8NmLrkMuOqZ88cX\/BZ\/hY0iVyoorlAHgBuh0zga\/\/5vN48LXA1AmogrMSRz3LpyXkm6vXaQBsK3Wycj6vKgCgJth+DXAIr02ASgDUQWuUZL0w9OnH4ednbtTQ0qlshJ2d+\/lPnz2MtIBdYbUAcDNMnz8V1QBuBpRBa5Berxn2uDZ1HvvvbuwQ18\/\/fTPI+HHCyoAuDmGo8oivvEDsMhEFZhBHPfC3t79C0NKOoC23T4tfK3P8uMfvz9Yb6OxX\/h6AID8fPDBTwevA4peC0DZiCqQwWViSjpBf9GHvbbbp4P1vvrqK4WvBwDI1zvvfD9EURRefPGFwtcCUDaiClxBHPfC0dHj58aUWm2rNNtnh2epLNqOmiTph1\/96iC8995W+P3vnxS+HgBYRrXa1mB3bdFrASgbUQUuqds9f+bMlLIc9RnWbB6P3EZU9HqGxXEvbG6ujzy\/i3D1NAAsm0plxaB6gIxEFbik3d17z4wpZfuDP0n6I9c9L9LOmiTpTwSVRQw\/ALAMhnfaFr0WgLIRVeCSpkWVanU1NJvHCz83ZZpGY39hY0W6DXnasaqi1wYAyyRJ+gv7egCgDEQVuKQ47oVqdXVw7XAZhtA+67EMX6G8SFc9D8eeKIrC17\/+8sjg36LXBwDLpNs993sWYAaiClxRp3NW2piSGt4J0mweF76eVKt1MhJU3nrr2yP\/u0zzagCgDDqdM1EFYAaiCtwwwy+eqtXVhQlEw1c7pztofv7z0WurF2lHDQAsA1EFYDaiCtww6RGmRdr50W6fTtys9Pnnfx3cRhBFUXj99dcKXycALJvhNzXKNnQfYBGIKnCDHB4+Wrihr+32abh169bE1cnjR4E2N13zCADXbfi1QadzVvh6AMpGVIEbIkn6I7tBFuEK5WbzeOKGn\/RdsvHblhqN\/cLXCwDLRlQBmI2oAjfEcKQoOlAkST\/s7Y3OS3nhhRfCH\/\/434OPGT7644UeAMyHqAIwG1EFboDh6xIrlZVCh9PGcS9sbq6PBJONjfWRIbTDQ\/PSgbpFP4cAsIxEFYDZiCpwA9TrdxZiOG23ex5eeeWbE8d6xiNPo7E\/8jG7u\/cKfw4BYBkNRxW37AFcnagCS25410eRw2m73fORmS6VysqFgWf86I\/bCABgPoajSpE7WQHKSlSBJVerbQ0iRlHvQI3f5PPaa69euJbho0qpop9DAFhWw1Gl6LUAlJGoAktseJfK4eGjQtYwHlR2d+89852w8aM\/9fqdwp9HAFhWogrAbEQVWGLpLpVqdbWQLb3jgeQytw6NH\/0pcgYMACy7NKoYCg+QjagCS2r4GE3eYSJJ+uHg4MHI\/JTLzEVpt08d\/QGAHDWbx6IKwAxEFVhS6S6VvIfTjl+ZXK2uhm73\/FKfu7t7z60\/AJCjdKdKkcPsAcpMVIElNLzjI8\/htN3ueVhbq47cNnTZ758k\/ZHbgaIounSMAQCyefjwoxBFUXj33X8qfC0AZSSqwBJKd6nkOZy21ToZiSLvv\/\/DK81xGR9oaxsyAMxfulPF7lCAbEQVWDLpLpW3334rt+G04wNps7wwS0NQ0bcVAcBNUq\/fEVUAZiCqwJJJ48RlBsPOKkn6YWfn7swxJI57I1+jUlkp5LYiALhpNjbWvZkBMANRBZZIp3M2iBLz\/l7jA2mjKArN5nGmr5XePGBALQDkq1JZKeSmQIBlIarAEkl3qWSNG5fV6ZyNzE+pVFZmejGWvktmQC0A5KfbPR\/87u10zgpfD0AZiSqwJPLapTI+kLZSWZkpgiRJfySouNIRAPKRvnawUwUgO1EFlsS8B80lST8cHDwYCSAbG+szzz4Zv\/Unj1kwAMBoVDFTBSAbUQWWwPBuj3m80xTHvbC9fXti7sl1DJPd3b03suul6OeSfMRxL\/zsZ\/8S3n77H8Knn\/658PUA3FSNxn6o1++EOO4VvhaAMhJVYAmkVxpXq6vX\/rXb7dPwjW\/83dyuO65WV71LdoMkST8cHT0e+fcURZHbngAAKCVRBUpueJdKo7F\/rV87jTXDO0mue5Dd8Nf3Ltny6nbPQ6OxH9bWqhNBxYBEAADKSlSBkkuPz7z44ovXFiWSpD9xXfKbb75x7dFj+Cz3PHbZUKxO5ywcHDwI3\/vedybi3Pvv\/\/PIfyt6rQAAkIWoAiUWx71rvzWn2z0fud3nugbSTnN4+MiA2iXTap2EnZ27E\/+GoigK9fqd0Gwej8S0eeywAgCAvIgqUGIbG\/+\/m2SWa41T4zfxzPuK4\/TGIkd\/yitJ+uHp04\/Dzs7dqcd6arWt0GweDz4+jnsTV3KbpwIAQFmJKlBSw7fmzHqNcpL0p\/5RfF03\/FwkHVI7z3DD9et2z8PR0eOJI2LDO5tarZOJUDbtWNk8bqsCAIC8iCpQQsM7SqrV1ZnCR7t9OvWoxqyh5jLS7zW8k4HFkyT98Mknfwp7e\/cvHDSb7kh51o6j7373O7n\/GwMAgHkSVaBkho9PVCormY\/9xHHvwiMbeVxtPDxXY9mOf\/zud\/8ZtrffK\/UujE7nLBwdPQ7b27en\/htJZ6RM25EyTbN5PPK51zlYGQAAiiKqQMkMD3fNGj8ePvxo6u6USmUltxDQbp+GKIrC5uZ64c\/pdUmS\/kSEKEs46HbPw5Mnvw17e\/dDpTL5byPdFdVo7Id2+\/RKIWzarJ6HDz8q\/DEDAMCsRBUombfe+nbmP9jb7dPwxhuvX7jrIM8dI43Gfm67YvIwbV7Ioh5tSpJ++Oyzvwx2okwLbGlESW\/sybojalpQmddtUgAAkDdRBUrmpZdeClEUhS996UuX\/pw47l14jKNaXQ2dzlnuj6NW21qaQaUXBZWijzZ1u+eh0zkLT59+HA4OHoTt7dsXzkQZjyiff\/7Xmb\/\/+NXJsx5ZAwCARSOqQMkMD\/t83h+ncdwLe3v3p\/4BfevWrfDrX\/97YY9jEaLDdUiS\/iBUrKx8bW6DWLvd8\/DZZ38Jn332l\/DkyW\/D0dHjcHT0OOzs3A3b27cHwSTddfLSS1+5MJ4M7xhJI8o8jiml4Ww4qJTlOBQAAFyGqAIlM3yV8ubm6DGKJOmHbvc8PH36cdjbu3\/hsY5abavQ3QLd7vlgLUU\/n7PodM5GhgZ\/+OHeyPN8evp06mO\/KJAcHDwYiSQX\/fyuYmNjfRBPDg8fhXb7NLeffb1+xw4VAACWmqgCJTMcJFIvvPDlS\/2BXamshFbrpPDHkB4LqdW2Cl9LFknSD7\/85b+NhIs47oUPPvjpxHO+tlZ95pGb61arbQ3iSdHPUxz3Qr1+J2xsrC\/EegAA4LqJKlBCwzcAXeWP7UU5epGuv4xRpd0+HYkkw0d8pg1lnafhGShFzMUBAICbTlSBkmo2j0OlsnKpmLJof3CnUeU6Z47MW5L0R+bTXHT99PCRl+s0fISn0zkr\/SwaAABYBqIKlFgc90KrdRJef\/218NWvfjXUaluhVtsKjcb+3IaPXoeyRZVO52xkd8rzdv20WiehWl197lGsSmVl8DNLf26Hh48G4aTTOVvYnyEAACCqAAVIo0qjsV\/4Wp4lSfrh4ODBSAzZ3b136V0icdwbiSMCCQAALBdRBchdGWaqjO9Ouei4DwAAcHOJKkDuFj2qjA8CTm\/3KXpdAADAYhFVgNwtalTpds\/D5ub6SFBpNPYNhQUAAKYSVYDcLWJUGd+d4rgPAADwPKIKkLtm8zhEURTq9TuFryWOexO7U2q1LbtTAACA5xJVgNwtyk6V8d0pURSFw8NHhT8\/AABAOYgqQO5+85v\/CFEUhXfe+X4h33\/a7JSNjfXQ7Z4X\/twAAADlIaoAuUt3iOzu3sv1+yZJPxwdPZ6YndJsHhf+nAAAAOUjqgC5q9fv5D5TpdU6Ca+++spIUKnX77gqGQAAyExUAXKXRpU85pd0OmcTR32q1VU3+wAAADMTVYDcVaurIYqi0GqdzO17xHEv7OzcnRhE+5Of1N3sAwAAXAtRBchVkvQHgWMeg2HTuSkvv1yZ2J0yz4gDAADcPKIKkKtO52wQOq7z614UU9Krm81OAQAArpuoAuSq0dgfhI7r+Hrd7nnY27s\/Naa42QcAAJgnUQXIVa22FaIoCo3G\/kxfp90+nRhAO2x3957dKQAAwFyJKkCuKpWVEEVR5tt3Wq2TsLZWvTCm1Ot35jKrBQAAYJyoAuSm2z0fxI9O5+xKn\/usnSmVyko4PHzkVh8AACBXogqQmyxDarvd87C9fXtqTLl9+93MO14AAABmJaoAuRmOKs+bdxLHvbCzc\/fC4bN2pQAAAEUTVYDcxHFvEEd+9KMfTg0j3e751JhSra6GVuuk8McAAACQElWAXKVXKqd2du6Go6PHYWfn7tQBtBsb62IKAACwkEQVIFdJ0g9vv\/3Whbf3pGq1rSsPswUAAMiTqAIUot0+Dbu790K1ujqYlVKrbYVm8\/i581YAAAAWgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQwf8CRSWrT8oxtvoAAAAASUVORK5CYII=",'.
'"textArea1":"","signature1":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAAgAElEQVR4nO3dT2wj55nncbr\/pNNuN4uIk3YSW9S2bdjtNsnMJu32WAqZwONsQqGITWy4Rxoy44MNCRNy7YE70iRkkDEWEhASwTZAOR4UgRmEAhKQMDyQvAcSPQCRW\/nCHOvEa5181vmZg1MVFoukyBKl4p\/v4QMkbol6q0RSVT8+z\/MGjo8\/FwAAAAAAAIwn4PcCAAAAAAAAZhGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqALMKcNoi2G05eHDT6XZPJJKZV9yuS1JJFYlFFLk1q3nJB5fEcNo+75WAAAAAJhFhCrADDLNjjSbR1KvH0iptCe53JZkMhvyN38Tk0AgMLZcbsv3YwIAAACAWUOoAkw50+xIvX4ghcKOXWXiJTg5SSwWEdPs+H68AABMI9Ps2FWgfq8FADA9CFWAKWOaHdG0smQyGxKLRUYORRQlKM8++4wkEquSz29LPr8tqpqUGze+Zv97NBqRdHpd8vltuXlz2fUYicSq78cPAIAfDKMtzeaRFAo7kslsSCKxOvYHFI8\/\/hWJxSKSSKxKobAjzeaR78cFADhbhCrAFDCMthQKO3Lz5v8Y6aItGo2IqiYln9+WWq3q+VMzTSuLogQdj61pZd\/PBwAAZ8kw2qJpZSkUdiSVWpNg8PqZVIFaMpkNefjwUypCAWAOEaoAPqrVqid+EhYOL4mqJqVY3JVG43Dia9D1lqsNyO\/zAgDApFhttNaw9nEqQOPxFVs6vS6qmhRVTTr+ezy+Yv+3N9983a4Wzee3JR5fsR\/vypUrEgopksttia63fD8vAIDJIFQBfKBpZVleDve9iLt9+5Zks5uiaeVz69tW1aRjDVzsAQBmlRWijNJGGw4vSTQakWx2Uz788IHUatUz+RvYaBzKO++85QhZQiFFMpkNqdcPfD9nAADvCFWAc2IYbfn5z99zhSnh8JJks5tnUoUyqrfffsuxpl\/9asf38wUAwKgMoy2l0t6JIUo8vmJ\/cOHXBwim2ZFarSrZ7KZEoxFHwMIQXACYPYQqwBkyzY6USnt9q1Ki0YhoWnkq+qs\/+KDgWFs6ve77mgAAGEbXWycGKfH4iuTz275+cHESw2hLsbhrByyEKwAwWwhVgDOgaWVJpdb6XuCpanLq2msajUPXRajfawIAoJcVpAxqobVaeabt7+w4x6eqSQmFFCkUqBoFgFlAqAJMSKNxKJnMhoRCysyEKRbT7DjWGgopvq8JAIDj4y+ChkJhp29FSji8JOn0+tRUfk6KYbTtcGWaq2wAAIQqwKmYZkcqlf2huwnE4yszcUHUu26\/1wMAWEzWzJFUak2effaZuatGGYeut0RRgvKrX+3MxLUEACwiQhXAA9PsSKGwM7AqZZbCFEs4vMQOQACAc2eaHdH1luRyW65qlBs3btghSqNxOFfVKOPIZjftbZ2ZtwIA04VQBRiDYbQll9uaqzDF0r3NYyAQmMljAADMhpNaelQ1udAhSj+NxqH9t5p5KwAwPQhVgBEYRlsymY2h2zRO88yUURCqAADOUqNxKLnc1sAd8fL5baowTmCaHcnnt+3zVqnsEzwBgM8IVYAhdL11YpgyL6W4hCoAgEmzKlJ6g5RweEmy2U2p1aqEAh7UalW7bTcWi0i9fuD7mgBgURGqAAMYRntom8+8hCkWQhUAwCSYZkfq9QO5e\/dO36pO\/r5M7jyn0+v2uU0kVme6YhYAZhWhCjBAo3HouhhUlKDk89tz+akaoQoA4DSs6s7uDySuXbsm0WhEisVd39c3r7qrVgKBgORyW3N5nQIA04pQBRjANDsSjUbsMKVY3J3rixRCFQDAuAyjLaXSnqu9R1GCC7Pt8TQwzY6oatI+\/6GQwjBbADgnhCrACRZl94HeUGURjhkA4E2jcdh35lg8viKaVvZ9fYtK08qiKEH79xGLRaRWq\/q+LgCYZ4QqAOT42B2q+L0eAMB0Mc2OVCr7rm2QFSU4d3PGZplhtF1\/01OpNX4\/AHBGCFUAyPHx566tLf1eDwBgOphmp2+LTzQaoSplihWLu46qlUAgIIXCDpWoADBhhCoA5Pj4c1f5tt\/rAQC\/GEZb6vUDuX\/\/Xfne9+KSSq1JIrEqy8thWV4OSywWkUxmY+4\/+TfNjhQKO66d8NLpdeZuzYh+VSvLy2FaggBggghVAMjxsTNUyWY3fV8PAJy3Wq0qqdSaa07IIHfv3vF9zWfBMNqSy205whRr8Oy8B0nzqljcdT1\/aQkCgMkgVAEgx8fOUCWf3\/Z9PQBwXgyjLYnE6shhyrzOnzKMtmv4bDi8NPe73y0KXW+5qlZCIUVKpT3f1wYAs4xQBYAcHztDFXrkASwC0+zIP\/3TO0NDk0uXLkk8vir5\/LY0Gofy5puv2\/92+\/YLvh\/DJOh6S3K5LealLIh8ftv1PE8kVqlaAQCPCFUAyPHx53LhwgX74urjj\/\/g+3oA4Kz0a2\/p3c0mm92UWq3quNFMp9cdXzPrN6GG0Za\/+7vvO45dVZOi6y3f14az1WgcSji8RNUKAEwAoQoAOT52VqowgBDAPNL11tCZKYoSFE0ru1pdGo1Dx8434fDSTAcqvbNjbt5clmx2kzBlwZhmxxEUUrUCAN4QqgAQ0+wQqgCYW43G4dAw5caNr8kHHxRc32eaHdeMkVke5N1oHEosFjkxRMJiqdWqrq2XQyGF9i8AGBGhCgAxjDahCoC50xsi9IrHVwZWZ9RqVUd1iqIEZ\/a9sVarusIUBpKjW7+tl60dggjdAGA4QhUAoustQhUAc+OkMGXY3BDDaDuqWqz5Kn4fkxfF4q4jGLJ2d+MmGYP0G2IbCilSq1V9XxsATCtCFQDSaBw6LqDopQYwi3S9NXRr5Gx2c+j7W7G46xhe+9prr87cnBFrJ5\/HHrvmCpJ4b8codL3lGmIbCAQkl9sikAOAPghVAIimlR0XTn6vBwDGYRht1+yT7qGyxeLuwJtB0+xIpbLvCFPC4aWZ+WTeNDvy0UcP5Ec\/+oFrN6MLFy5INBqh+hBjM82OqGrS9XqKxSIzFzQCwFkjVAEgb775un3BFI1GfF8PAIyqX7uCNS9l2KBNw2hLobDjClOKxV3fj2lUvbNSeo9\/VoIhTC9NK7uG2AYCAbZeBoAuhCoAJBi8bl8ovfPOW76vBwCGMc2OlEp78uijV103e+n0+tBP0q32mO4wJRqNzMxOJ9ax985KCQQC8uUvX5Ef\/1iVjz56IM3mEe0+mAjDaEs06g7vEolV2oEA4JhQBVh4vdspf\/zxH3xfEwAMks9vOwKRCxcunNjic3zcfwDtSQHMtDCMtjSbR3Lv3uty5cqXBs6MGSQUUiSRWJVEYlUymXVpNo98PybMnkFDbGkvA7DoCFWABdd9kRQOL\/m+HgDop3eL45O2RLY0GoeSSq3J1atftt\/nThpYe9ZMsyPN5pE0m0dSrx9IqbQnhcKOFAo7kslsSCq1JonE6tAdjCYhl9vihhhjqdWqfduBGGILYJERqgALrrukN51e9309ANCt344+o8wLaTaPHN+nKEHZ3\/\/tudz4WaGJFZRYAUnvINlpQRsHxmGaHYnHV1zPI4bYAlhUhCrAAqvVqo4LIj6xBDAtTLMjhcKO4z1KUYJDZ59YO\/l0V3iEw0uSz2+f2ToNoy2Vyr7kcluSSKxOJDgJh5ckHl8RVU3K449\/pafdIiSvvfaq5PPbks1uSj6\/bf9vVU1KPL4i8fiKRKORvhUFw4IVv3\/nmC3F4m7fdiCG2AJYNIQqwALr\/qSJ1h\/Mi48\/\/gOfus+4fq0++fz20G2Re4e3RqORE+eseNFoHEqhsCOp1NrIAYoVksTjK3YIks9vS61WlUbjUBqNQ1c7kml2+lToeKsoMYy2NBqHomll2dv7VzuECYeXHI9PlQHGpest1\/MoEAhIKrXG+zCAhUGoAiyoRuPQcQE0KztfAMPcvn3Lfk4\/8sgXlQ1PPvlNuXlzWW7del4KhR0plfakXj+QZvOIi\/4pM6jVZ9D8k0HbIk\/q\/cwKI3K5LXn22WdODE3S6XU7LNH11qmeX+n0uuNnnEV7Zu\/fAaoV4YVpdiSb3XS9LpaXwwR1ABYCoQqwoLpnqVClgnnhtd2ie3cUaw4Gwcv5aTQOXWHKsFYfw2hLJrPhCjZOE6YYRtseGtuvjefGjRt2eJLPb4umlftWmExCb1vFWQQqvT\/j8uXLvj8PMNsajcO+LWeFwo7vawOAs0SoAiwgXW\/x6STm0nvv\/ezU8ywGicUiduhSqezzCewpWVUmvW0+ihIc2OrTL3yJRiNjhyndg2QHzUGxtlzO57el0Tg813Ct+8Y0Go1M9GdrWtl1zq32Kr+fE5h9g4bYJhKrJwaQhtEWXW\/ZO2P1Y4Xdlcq+3L\/\/rvziFz+32\/FSqTXJ5bakUNiR3\/3u\/0mzecT7NIBzQagCLKDuKpV4fMX39QCTpust0bSyqGpSrl9\/7MyCFutmIZfbknr9wNdtemeBNdT17t07fVtoBs1A6R0+a4UNJ+0A1P18sCpQ+gUK1nthNrtpt+74dY56K0gmtZZG43DgFs3s\/IZJy+e3Xc+zS5cuycsvv2RXBZ7l+3KvVGqN92cAZ4ZQBVgwvVUqn3zyR9\/XBJw1w2iLppWlWNyVbHZTotGIfPWrj5\/Jxfv1649JLBaRXG5LSqU9KZX2FrqNyKoI6a0GuXjxol0N0q9art\/w2UAgIKqaHFpdZ7Xx5HJbA0OE3hYev89Rt3j8rzeb0WhkIs\/9VGqt73lQlKAUi7u+HzNmj1XtVansS6m0J4XCjmQyG5JIrMoLLzw\/tduHMz8OwFkgVAEWTHeViqomfV8P4Ld\/\/\/ePJJn8oVy79ujQi\/Fr167Jo48O\/5pRxGIRyWQ2pFDYmcvydKsaJZPZ6FsVYrX3DDpuqy2o9\/vS6fW+32Nto5zJbPQNUcLhJVHVpN3G4\/f5OencXbhwwV77a6+9eqrHunfvDbl06WLf52E6vb6wQR9G190qN8ltw\/30m9\/8X9\/PK4D5QqgCLJDectxpv8EAzlutVpV0er3vsEXL5cuX5Ec\/+oGUSntiGH8WXW\/Z2+LWalV58OA3ks9vSzq9LqqadASZwyQSq5LJbEilsi\/N5pHv52Ic1jbDw1prisXdoeX3\/SoqFCUo2eym6\/uazSP7Bq\/3Z0WjEbuNZ9bK\/Wu1quNYfvGL+2M\/hqaVB1boWL+LWTsvOFuG0ZZm80hKpT3J5bYklVqTF1+8LY8+evXE961oNCKqmpRsdlOKxV0pFnfl97+viKaVpVar2tuGf\/jhA7lx44bjezc337bfO8eh6y0xjPbQXcFqtapdmdjv\/XzewmwA\/iJUARaEYbQdFxRUqQDD1WpVUdXk0IAlFFIkk9mQev3gxMez5rwUi7uiqsm+wxx7xWIRSaXW7KqWaaks0PWWPeS137oVJSiqmhw4I6XboJ1\/uofVmmZH6vUDyWQ2XJ+Sd89C8fu8nNZpgu9arTo0TLlx4wZB+gKzBr12V5wMCkGHvaatLcO9BHOm2XFsFb68HD6XYzfNjjz99E3Xe\/e0vJ8CmH2EKsCC6O7TDwQCXEwAY9C0suNmYFAAUqnsj\/3aMoy2NBqHdnXLSZUty8thWVl5We7de0MqlX2p1apnWtkyyk45gcAXbTbZ7ObIN+79hs9a2yKbZsdu6+mtXolGI5JOr0utVp279zFVTTqOddTfTyLx3aHPmXv3Xvf92HC2rNdpvX7gmG8ybquOVXmSz29LtVqxq0Imuc5xn+OT+rnR6IuOn51IrPr+ewMwHwhVgAVgGG25fPmSfSHxyit3fV8TMKusXYUG3ZRY7UGjVK8MY7UV5fPbks9vSzy+IuHw0tDKGauypXtmy7jVCVYbwKAZJb3hhqaVx7rpqlT2XZ+Qx+Mr9uNYu\/R0f0Lu5efMot7qpZNCI8NoD602UNUkbQ5zptE4dAUn44Qm1uutd1jzeT5Prl27Zq\/lvF\/TveE4g2sBTAKhCrAAevv03377Ld\/XBMw60+yIppUlHF4aePMSCilSKu1NvKLCqm7RtLIduAwLW6wKl0RiVQqFHSmV9qReP5Df\/e6BVCr79k45wz7VjkYj9k3YuDdCVtVJv9ad\/f3fSqm05whwrBu+RQsEem\/4vvWt6MDnjq63BoZe\/ebQYDZYW2qn0+v2rjpeWnXi8RW74mTadrl67rln7bX68RrvrgYMhRTfzweA2UeoAiyA3k\/Vx7nYtkqKrbJi6yKv19tvvyX3778rhcKOpFJrkkisSiKxKqXSnu\/HD5y1RuNwaHvQ8nJYcrmtM29XMc2Oo53Imt1yUuDiDlBelJ\/+dEOKxd1T3fSYZqfvANtEYlV+8pOUHeRYO\/TMw1yU09C0ct\/qo3r9wH4PVtWk3Lr1fN\/fWzgcls8++5Pvx4HRWMNWK5V9yWa3xnqddlebWDtbTVNwMkx3RZYf4Z9pdhznelbOG4DpRagCLADnRfeS69+tIZC53JbcuvWcPPPMzYlumbhonzZjcfUOYuwnFovIL3\/58zMPWHS9dWIbj6IE5fLlyydWuFjDcsfZmahQ2HG9j9y+\/YK8+ur3JBAI2INseX9wGjcA+2sQFpm7GTPzwjQ7oustKRZ35cGD3wzcbtz5WrnlCk10vTUXv+PuD3r8ev13ryGf3\/b9nACYbYQqwJzT9ZbjQu2555517AIwbGbCpCz6p89YPI3G4dC2oO6Kje6Kr3r9wPOuGtZ2zv22Je4ePtloHLp+hml27C2hrYG51gyXYWGLtf5KZd8eaFkq7bnClKefvinXrz8mH374QGq1KkHKEJ988sex32Pj8ZW5uNmeVVa1ibWrTiKxOrCdLpn8X3aVSTa7Kffuve7YujidXp\/732U2u2kfr19VIq+88rK9hmJx1\/dzAmC2EaoAc643VDlvfHqKRaZp5bErDx55JCBPPvlN++YskViVb30r6vj\/3UIhxb55e+ONH0s6vW7PI5nUa89qKSoWd6VY3JVsdlNUNSnRaMRxfI884jyWq1evyk9+8r9lf\/+3vA+MQddbI4VyihLkhtAHjcahFAo7srLysiMQ6f67Z4UmxeKuHST2vgZ6272y2U3fj+08dIcq5xmwGkZbms0jyeW2HOed+UMATotQBVgAV65cmXhQEo+v2DdvxeKu3c\/dfdHIhQrwhZN2DBpXOLxkvwatFho\/QgvT7EiptOcKjoLBoHz\/+3G71UdRghIKKXYrUffuRPPS0nAWisVd+3mjKEEJh5fkpZe+Lf\/4j\/9Atc85sgYt99tp5+LFi\/Z24uNs8\/3ee1nH4yxSC0p3qHJWr\/1G41BKpT1JpdaGVuQ+\/\/xzvp8PALOPUAVYAP\/5n3+UixcvjhSWvPLKXTsssXYM6NcuAGB8ptmR\/f3fyk9\/uiHx+IpjFwrL5cuX5fbtF+xPuvP5balWK3Z7jd\/HYCmV9mRp6SnH2l966TvyX\/\/1\/11f213pks1u9j3uQOCLlqJYLCKJxHdlZeVle6eiUmmPAAa+qNWqfdt4rN2wvIRbvXOXFilQOT52zjOZ5ONabVhPP31z5A+IeD8BMAmEKsCCMIy2FIu79o2cVW1izVjwe30AZkOptCcvvnjbcXPyne\/8T0+7zuh6S2q1qt1ONErLizuAWbUrX6y5NNbcKG6YcBr5\/LbjORePr3jaUtximh1Xtcs777zl+3GeNytUjUYjE3k8XW9JJrNx4oB9a75UOr0umlb2\/TwAmB+EKgAAYCjT7Ei1WnGFKbFYRAzjzxP\/WQ8ffirF4q5oWlny+W17sOc4oUsvawaNFcBUKvtSrx9MXQUQpkN3oKIowVMPXNf1lqsNZVFmqHQzjLZ9\/On0+qkeq1jcHbiL0vXrj9ntkXxwBOCsEaoAAIC+TLMjhcKOq80nFovIJ5\/80dd1Wa2JxeKuve2sFb70DtAdVSwWkVRqTe7de8MOXgYNGcX8qtWqjufFaW\/KNa3sqKJQlODCVkoUi7unOq+G0Za33koPrERJp9cJUQCcO0IVAADgMGgA7de+9lWpViu+r29c1kyX7m2j8\/ltu+3ICmMUJSiKEpRr1x7te9MWCil2y5E176VeP3AN6cbsMs2Oo\/rhNOGHaXZcO81MouplllnVZooSHPtc9mvxUZSgqGpyYUMqANOBUAUAANg0rSxPPvlNx43LtWvX5P79d31f23kxzY7oeksajUNHC9KgAbvdocs3vvF1uXv3jmQyG5LLbdnBizXnhVaj6dbd9qOqSc+PYxhtV7tPNBpZ6N9\/9xbSow7n1fWWK5gKBAJy+\/YtKRZ3F\/p8ApgehCoAAEB0vdV3y9h0ep0qjD7nyqp4SafXPbcbhUKKPesll9uyt5nmRtE\/3b9Hr78HXW+5Kip4Hf11QK2iBAeeC8Noy8OHn0out9U3lCoWd30\/DgDoRagCAMCCe\/\/9d103\/MvLYU\/bxS4ya8iu1VqUTq\/bbUXjBi7Xrz8md+\/esatdms0j349v3ul6y3ED7\/UxmJ\/i1l2l0h2MGEZbSqU9SaXW+g6dtbauJmgEMM0IVQAAWFAPH34qTzxxw3Uj8\/77i9Pqc96s2S7drUXdW0oPC2CWl8PcoJ+h7hv\/eHxl7O83jLYjUAmHlwgmj78IG7\/+9SckEAjIE0\/ckPv33+1bFWedM1VNMqcIwEwhVAEAYMGYZkd+8INXXTc0Tz31JDtnTIHuipd0et0RtIRCiu\/rm1fd81RGnfnRrXvmzqLPTzk+\/iJALJX25KmnnhxalRWPr1CNAmCmEaoAALBAfv3rX8jFixddNzaqmuST4SmWTq9LIBCQbHbT97XMqx\/+8DXPoUo2u+kIVBbttaTrLSmV9iST2RhYhdJ9frLZTQJcAHODUAUAgAXw8cd\/kGDwuusGR1GCDH8Ejj+Xq1ev2q+Lvb1\/Hfn7utuGFqHlxzQ7UqtVpVDYkURi1TWUd5APP3ywcGETgMVAqAIAwBz77LM\/yZ073x5Ydk\/JPeAcUhsIBEauougeTHvlypW5DFR0vSWVyr788z\/nTgxRrCqUt95KO\/47wS2AeUaoAgDAnPrZzzb73vgoSpDSe6BLsbjreI2MUlFhmh3Htr+1WtX345gEaxZKKrU2NEBRlKA9D8UaLGuaHUml1hxfl06v+35MAHCWCFUAAJgztVpVvvGNr\/e9EcrntynBB3qoatLRwjPK93TPUZnV4MA0O1KvH0gut+UIiPoFKE899aRks5tSq1X7VrhpWtkVwjADCMAiIFQBAGBO6HpLXnzxBVp9gDF179yjqskTv757++RweGkmgkrDaEu9fjDyLBSrlWdQiGLpV52iKMG5qdwBgJMQqgAAMCe6P21\/\/PGviKomRdPKM3HDB\/ipe9vqUXb+6a5S0bSy7+u36HpLms0jKZX27N147tz5tgSD18cKUUZ9z9D1liwvh9lJDMBCI1QBAGBONBqHY98UAfhc4vEVOxR49dXvjfX1v\/995VzWaBhtaTaPpFLZl0Jhx96++KQtjPsJh5dc81DGXc8HHxRcj0l1CoBFRKgCAACAhdZdeXLp0sUTW+W6Q5VAICC53NbEgkzD+LNUKvt2pcmwWSejeOyxa\/L3f\/+G1GpV0fXWqddpmh3JZDZcs1MIcgEsKkIVAAAALLTPPvuTa6DzsK\/\/l3+53zfASCRWpVDYkVJpT+r1A2k2j6TZPJJ6\/cAOSiqVfWk2j+Q\/\/uPf7H+vVPYlk9lwtdJ4EY+vjDQLxYvedh9FCU5V+xMA+IFQBQAAAAuveyZRKKScWHnhpe1mkqLRiKhqUvL5bdG0suh668zOjWl2pFDYcYU3Z\/kzAWBWEKoAAABg4TUah2NVqxwff7F9effOQZOkKEFXcOJ1\/slpaFrZVZ1SLO76\/vsCgGlBqAIAAAAcO2elhELKyO0zut6SbHZzrIDlS1\/6kqvyJJvdlEbj0PfzcHz8uRSLu652JLZmBwA3QhUAAADg2F2tkkisen4s0+zM3PBW0+zIr3\/9S1eYEo1G2NkHAAYgVAEAAAD+onu2yqhtQLPOMNqSy21JKKS4KlOmpXIGAKYVoQoAAADwF6bZEUUJOsKFed3hxjDakslsuMIUVU0yhBYARkSoAgAAAHTR9ZYrWCkUdnxf16RoWlliMff8F8IUABgfoQoAAADQo9E4dAUr9+694fu6vNL1luRyW655KYQpAHA6hCoAAABAH7recu3oE4tFZmYHHMNoS6Wy3zdICQQCkk6vE6YAwCkRqgAAAAADmGZH0ul1RxgRCilSKOxM7e4+mlaWRGK1b5ASDi9JPr89M8EQAEw7QhUAAADgBJpWlnB4yRVSJBKrksttSam0J5XKvm+75eh6S+7de6NvkGK1+LCTDwBMHqEKAAAAMAJdb7m2XB5keTksicSqFAo7Uq8fnFmbzaChs4oSFFVNzu3ORQAwLQhVAAAAgDFoWlni8ZWRwpV+lS2ZzIYdtjSbR2O3Eel6S0qlvb6zUu7c+bZoWpn2HgA4J4QqAAAAgAem2ZFG41CKxV3J57flb\/\/2ZXnqqSdduwaNKxaLSCKx+hfflbt370gsFhk4cDYcXpJicZcgBQB8QKgCAAAATJBpdkTXW1KrVSWf3\/Zc1TJMOLwk6fS61GpV348XABYZoQoAAABwDqzKlnx+W\/L5bVHVpMTjK32palKy2U15\/\/3\/I++\/\/64Ui7uiaWVpNA7ZBhkApgihCtJSuJsAAAEQSURBVAAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAH\/w3LpRObNOQA2gAAAABJRU5ErkJggg==",'.
'"textArea2":"three","signature2":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAAXIklEQVR4nO3dT2yc93kncNqS48iyNYSF2klkjtaKVoldkl47zgYmM0S3SdqIINGiQBBqh6h34YRCPYwMWCDbziTZBKCKHWKBAtShGAItTAMpRkhaULkM4QOvc+Ie58TrnHr2+enBmAmHHP57RerlDD+HD0xIovwbAu+r9\/d9f8\/zDHz++X8EAAAAAMczkPYCAAAAAHqRUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAADgDKjXN6PR2IqNjcdt9fpm6usCYH9CFQAASNnIyHAMDAwcaHAwE4ODmZiYGG+bnb0TpdJilEqLsbz8oB3GpP15AM4LoQoAAKSoVls\/NFBJanR0OCYmxmN+\/m6USotCF4ATJlQBAIAUNRpbpxaqHHbypXXa5de\/\/nk8evRp1Oubbc3mduo\/G4CzTqgCAAApq1bXYmrqduTzM5HPz0SxuBDF4kLk8z+ODz54P\/L5mcjlxiKXG4uRkeHIZK6kEsK0Tr60wpif\/vR\/xf3792J19WE8evSpPjDAuSNUgTOs2dxuvy3a2bRuY+Nx1Grr7f+2Gts1GlsdX3vDBAD9r\/Xvf622HrXaepTLS+1Q5g\/hzB9Cme7G480334hsdujEQpgXXrgUt27915ifvxvLyw9idfVhO3TxjAL0C6EKnJJmcztKpcVYXX0Yy8sP2k3k5ufvxvz83ZienuxoNDc6OhyDg5lTPd47PT0Zf\/mX03H\/\/r32w83udbXWnPbPDwBI186gplZbj0plJYrFhSgU5tohzRtvfOPEer9MT0\/G8vKDaDS2Uv\/sAEclVIFTUiwunEpAkslciWx2qOPtUuu48F\/8xXT769bvJT0e\/N3vvpf6zxAA6A3N5nY7fCkU5mJkZDguXLiQ+GVQqbSY+mcCOAqhCpySanUtBgYGIpsdimx2KDKZKzEyMtz1yG2hMNdxRLdaXet4M\/Ska2k0tqJSWYlCYS7efPONIz\/UeFMEACTVClrK5aUoFOba\/WCOWmL07W9\/K\/XPAHAYoQqcU83mdrv3ys5f3\/kwcxKBDgDAQWq19ahW16JQmNtzwrZSWUl9fQAHEaoAbbXaeseDTNrrAQDOl2ZzOy5evNh+FikWF1JfE8BBhCpAfP75F83odjbKnZq6nfqaAIDzZXdPunJ5KfU1ARxEqAJEuby0pxmuUYfA559\/Ebi2JphVq2uprwfoT83mdkxPT3oeAXqOUAXOsbW11RgdHd7TGM7GCfpXo7EV9fpmbGw8jkePPo1f\/\/rn7bHqs7N3YmJiPG7ceD1eeunFrmPeh4au2eQAJ6pe34zr17N7ApV6fTP1tQEcRqgC51C1utY1TBGoQO+r1dZjY+NxOyiZnp6MiYnxEx3tXijMpf45gf5Qqazsucdks0MCFaBnCFXgHKnV1vccrfVGCHpHo7EVGxuPY2PjcSwvP4jZ2ZkYG\/tOjI4Odz1VcpqcVgGe1NTU7T33llxuzP0F6ClCFTgHarX1A99Uv\/XWiAcYOANaZTn\/8i\/\/FKXSYrsc5yQCk0zmSuRyYzE1dTuKxYWoVFaiVlvfE6Y2m9vx29\/+JsrlpY7f39080sh1IKlGY6vridlCYc7zCNBzhCrQxw4LU7LZIV314SlrNrfb5TknHZpks0ORy41FPj\/TEZycxCblRz\/6K6EK8MRqtfWu97yPP\/5Z6msDSEKoAn2oUlnZt2dKa\/NVLi95GwSnrNHYikePPo1SaTEmJsb3NGI8zMjIcEdI0lKprES1uha12vqJhSaHfY6LFy8o\/wESaza3Y37+btd7nX5uQC8TqkCfaDa3Y3n5wYGbtkzmShSLCzZD8ITq9c12WLLTxMR43Lp1M27dunns0yfZ7FDk8zNRqaycuf5GhcJcx1qvXn059TUBvaNaXev6fJLJXHHqDeh5QhXocbXaeszO3jm0LECYAsk0m9uxuvowZmfvxKuvvvLEZTotudxYFIsLUa2unelrs9nc7nJM\/17q6wLOvmZze98G+RrSAv1CqAI9qNHYilJp8dBSgmx2SJgCCdTrm7G6+nDfzcBxe520ApSzeArlMOXy0p7P5J4CHKZSWYmrV1\/etwQ57fUBnBShCvSIRmMr5ufvHtgrZWcfhkplxcYHEhgZOfwa2y84yeXG4uOPfxYPH\/6\/qNc3e\/4abDa395Qx5fMzqa8LOLtqtfWuzypOzQL9SqgCZ1irT8pRgpRM5krk8zNqk+EJ1GrrB15nN29+PaambrebxPbz5qBe3+x67+m1kzbA09F6+bP7nvHcc8+Z7AP0NaEKnDGNxlasrj48cBTy7iBF13w4GY3G1r7XWaOxlfr6noZabX3fsqdCYS719QFnT7m81LU5d6Ewd27uncD5JVSBM6A1dvW9975zpNKeYnHB22I4JdXq2pmdwnNajjI9TNkPsNt+pT4jI8Pn5v4JIFSBp6zR2Iq1tdW4f\/9eTE7+MK5d+9qhIUqhMKdHCpyCZnM7Go2t2Nh4HBsbj7uOSS6VFuPRo09jY+Nx35XXVatrhzbj\/cpXXo1KZSX1tQJnR6Ox1fXeoQktcB4JVSChen0zarX1+N3vfhP\/8A+\/itnZmZidvRPf+96fxPXrQ\/HVr34lvvSlLx274eWzzz4bV6++HD\/4wZ\/G\/fv3OjZ0GxuPvfmBJ9CanDU9PRmZzJVjX587jY4Ox8TEeHzve38S9+\/fi+XlB7G8\/KAdxCwvP4jV1Yfta\/cs9GCp1zdjeflBTE9Pdj2qv\/tkSr+FSMCTaTS2Ynb2zr73jLTvcQBpEKrALo3G\/49cbjxyufEYGnotMpkrkclcicuXL8fFixeeaBN20lqbuunpyfZGTvACnWq19ZidvXPoCPKn6fr1bExMfDcKhbuxuvqwHZye5OdujYUulRZjYmL80BCl9ZbZdA5gt2ZzO+bn73a9j+RyY547gHNNqAK73LjxeuobrpMOXUqlxVhdfeihh3Nlv+k1Z90Xgct4zM\/fbQelhzV6bPVlOk6AsjNImZq67VQKsEezuR2zszNd7x35\/IznCoDPhSqwx\/3797o+PFy4cCEuXboUr7zyR5HNDsWtWzfj1q2b8e1vfytyubGYnp6Mv\/mbn8Tc3Afx0Ucfxj\/\/8z\/Fgwf\/J4rFhahUVqJaXWuPYW2p1zej0diKZnO7rdHYinp9s11eVKmsRLG4EMXiQuTzM5HLjUUuNxbZ7NATb9paJQo2U\/SjbgHphQvPtk+cvfDCC+1f\/\/KXn49Ll74cly9\/8Wsvvng5Xnzxcty48XqMjg63vfPOWzE5+cMoFO62y\/OWlx+0S3w2Nh7HZ5\/9Pj777Pcd13qttr7nOj5u+dHgYCYmJsbjJz95Pz788Kdx\/\/69eOed\/xaXLn352PeAbHbI5DBgX7XaetcphK3TbCb6APyBUAX6QGvTVq2utTduU1O3I5cbi5GR472pHxzMxOBgph287CwvOunyBDhNt2\/\/WQwMfNGn6I03vhFTU7ejXF6KYnEhCoW5+OCD99vXSavM72mcQNlpenoyJia+G++++07cvHkjrl37Wly79tUT\/f9ms0ORy421A16bIWA\/5fJS11LJ8fH3hLAA+xCqwDnSOv1Sra5FubwU5fJSfPjh3LFPv9y48XosLz9I\/fPAYY7bG6TZ3O64TrqFlKcdvjyJl156Kb7+9RsxP383\/v3f\/zX1nz\/Qqdncjo2Nxx3Txebn78bs7J12yd9+za5\/97vftJten2Q42mo+u7tsUI8lgKMRqgBdtU6\/lMtLUSjMdQ1cRkeH1VNzbjUaW3tKe3aX6bWCmCcp19vta1\/7arz33n9v\/92vvXbt0NNnExPjsbr60OYIUjQy8scnHqSOjg7H\/PzdePTo02Nd383mdqyuPuzadyqbHYpyecn9AuCIhCrAkVUqK3sewAYHM4IVeEKtEzI7g5rdDrrOWt9fqaxEPv\/jfU\/UZDJXolxeSv3zwnnz0UeFp3JarVVmODt7J0qlxT2TxVrT0Lo1s56auq3EByABoQpwbNXqWseb9+npydTXBHRqNb4ul5f2nJSZnb2T+vrgPPnVr0qplgYODAzEs88+0\/VUSqEw5+UIwBMQqgCJVKtrHQ9mjgnD2dVsbse7774jWIEU3bz59X0Djxs3Xm+X6HWbGlYozMW3vvV2vP32W088AbDb6ZadDen9ew5wPEIVIJHf\/vY3HQ9lxeJC6msCDpbPz3Rct8apw9PV7eTY7pLa2dk78ejRp0f6+1rhy0cfFeJHP\/qruH59KJ5\/\/vkTCVp++MMfxP3799olRLXausAFoAuhCpBIvb7Z8QBWKMylvibgcLncmNI9SFGzuR2VykrHtXhYj5Tp6cmYnp6Mv\/7r\/9kxEahUWoyJifGu35vLjUU+\/+P46KMPO6aYncQEs8HBTLz66ivx5pvfjPn5u7G6+lAJEXBuCVWARJrN7Y4HrKmp26mvCThcsbigdA\/OiEZjKz744P14++23njjsyOXG4he\/+Psjn0BrNcbeOT4+n59phy\/ZbDbROiYmxtulRCc5+hngrBKqAIkIVaA3ffJJRekenFGtPiqtkem7A4tnn322\/XUmcyVyubEol5dO9ZRIa7pYrbYe5fJSFApzkcuNxeXLLxy5lCjJ2GeAXiFUARKp1daV\/0APajS2BKLQg+r1zTMXSrSClnx+pmsItN9JltXVh06xAH1DqAIkUi4vdTwklctLqa8JOJqdZQajo8OprwfoD63pRa0eLoeVNA0NvRY\/+cn7TrEAPU2oAiQyNXW748HIFBHoHTvfKA8OZlJfD9C\/Go2tqFRWIp+fOXQU9PT0pFMsQM8RqgCJ7H4QSns9wNHtnDoiVAGepmZzO6rVtSgU5uKtt0b2DViy2aGYnb0jZAHOPKEKcGyfffb7jgeft99+K\/U1AUe380h+LjeW+nqA861aXdtzArZbw9vZ2Tvx6NGnqa8XYCehCnBslcpKx4PO97\/\/p6mvCTi6nddvPj+T+noAPv\/8i1KhYnHh0MlCFy9eiNnZO0qPgTNBqAIcW7G4YCQr9DDXL3CWtRreHqXZ7eBgJubn757qWGmAgwhVgGMTqkBv23n9fvJJJfX1ABykXt9sN7t95plnDiwRWl5+kPp6gfNFqAIcm1AFelejsWVyF9Czms3tKJeXOqaYdTu9UiotGtMMPBVCFeBYms3tuHz5csfDS6Wykvq6gKOp1dY7rl9TNYBeVa9vRqEwt2+J0OBgJpaXHwhXgFMlVAGOJZ+f6Xhgef755z2sQA8pl5eMQwf6zkEThK5efVm4ApwaoQpwZLun\/gwMDMTHH99LfV3A0RUKc+3rN5sdSn09ACep2dyOYnEhstmhfZvaOqEHnCShCnAk3QKVqanbqa8LOJ5XXvmj9jX853\/+\/dTXA3BaKpWVGB3d23tlcDBjWhBwYoQqwKF2lwsMDAzEyMiwY7TQY3Y3qf3lL\/8u9TUBnLZupUGZzBXPMcCJEKoA+2o0tmJiYnxPoJLJXHF0FnrQ7hNnrmPgPPnkk1XTz4ATJ1QBuvrHf\/y\/MTiY6RqoODILvWlnPxVNaoHz6MUX\/zDBMJ+fSX09QO8TqgAd9jud0ir58WYbetfIyB96C+RyY6mvB+Bpy+XG2vfB0dHh1NcD9D6hCvSxZnM7arX1WF19GKXSYpRKizExMR4TE+NRra61\/1ytth7Lyw+6NnNrKRYXUv88QHLN5rZrGjj3isUFJ\/aAEyVUgR7XbG7HxsbjePTo0yiVFmN6ejJGR4fj4sUL+wYkO9\/QHPZn3n33HadToA9Uq2t6CQDn3u6GtWmvB+h9QhXoEdXqWly79tV49dVX4urVlyOTuRIvvPBCPPPMM4cGI0lkMleiUllJ\/XMDJyOfn7GRAM61zz77\/Z6y5rTXBPQ+oQr0iMuXL59KeLJbNjsUxeKCMYPQZ7LZofZ1PjV1O\/X1ADxNzeZ2ZDKdDfiVQQInQagCPeKb37x14gFKLjcWxeJC\/OIXfx+12rogBfpUo7HVce2Xy0uprwngadrZqHtgYCCee+455c3AiRCqQA\/55JNKlMtL8ctf\/l3kcmPx\/e\/\/j3jjjW\/Ea69di5GRP45cbiympm7Hhx\/ORbG4EOXyUhSLC\/Hzny9GpbIS1epa1GrrRiLDOVOprHRsJmwkgPOi2dyO6enJPS+W5uY+SH1tQH8QqgBAn9vZT0UPAeC8aDS2ujblVwIJnCShCgD0uZ3H3pX+AP2u2dyOUmkxBgczewKVkZFh5c7AiRKqAECf27mhUP4H9LNKZSWuX8927SUnUAFOg1AFAPpYvb7ZMSo97fUAnIZGY6tr75SdJT8CFeA0CFUAoI9Vq2vtTUU+P5P6egBOWqWyElevvrzvpMNabT31NQL9S6gCAH3sgw\/eb28ubCyAflKvb3ZtRNs6maLcEXgahCoA0Mfee+87MTAwEF\/60nOprwXgJDSb2zE\/f3dPkHLx4sUoFOaMjQeeKqEKAPSxbHbIKGWgb1QqK12n+hQKc3qmAKkQqgBAn2o0tvRTAXpeo7EVy8sP9h2RrMwHSJNQBQD6VK223t54FIsLqa8H4Kgaja1YXX0Yb775za49UzKZK+5rwJkgVAGAPlUuL7U3IJXKSurrAThIs7kdy8sPYmJivOuplJ1hilIf4KwQqgBAnyoU5kz+Ac60VmnPflN8BgYG4sqVl2Jq6nZUq2uprxdgN6EKAPSpW7duClWAM6de34xSafHAICWTuRJTU7ejVlt3KgU404QqANCndm5QNHIE0tLqjzI9PblvWU8rSMnnZ5xIAXqKUAUA+tTOzYo3vcDT0gpRZmfvxPXr2X1DlIGBgchmh6JQmBOkAD1LqAIAfWjnOOWBgYHU1wP0t1pt\/UghysDAQORyY1EuL0WjsZX6ugGelFAFAPrQznHKQhXgpNVq6\/Hxxz87sC\/Kzt4o5fKS3k5AXxKqAEAfEqoAT6LZ3I56fTM2Nh7H6urDKJUWY3b2zoEhysjIcOTzM1EsLkS1uuYkCnAuCFUAoA\/tDFUGBzOprwc4W5rN7djYeByl0mJ8+OFcTE9PxsTE+IGNZHeX8Ny\/f88JFODcE6oAQB\/K52eEKkA0GluxsfE4lpcfxPz83WMFJ63ynVxuLPL5mahUVkwSA9hFqAIAfSiXG+t4o5z2eoBOjcZWlEqLJ1oiU69vxurqw\/jpT\/93vPvuO0dqGruzbKdcXopqdS1qtXUTwwCOSKgCAH2oUllpb5iMKoWzJ5O50r5GR0eHY2JivMP169m4detmvP76f9nzezsNDAzEpUuXjhyetJrGVqtrTp0AnAChCgD0qWZz29tmOIN2jzw\/DVevvtwRoLgXAJwOoQoAADxlO\/senZRWiGLqDsDTI1QBAIAUNBpbUS4vRbG40FaprLT7mlSra\/G3f3s\/isWFKBTmIp+faSsU5trf82\/\/9q9OogCkRKgCAAAAkIBQBQAAACABoQoAAABAAkIVAAAAgASEKgAAAAAJCFUAAAAAEhCqAAAAACQgVAEAAABIQKgCAAAAkIBQBQAAACABoQoAAABAAkIVAAAAgASEKgAAAAAJCFUAAAAAEhCqAAAAACTwn4U+fJ+Q3+ITAAAAAElFTkSuQmCC",'.
'"textArea3":"fourrrr4444"}';
Thanks.
This is much easier if you first json_decode the text; then you can simply check each value in the decoded result to see if it begins with a valid data:image and if so, add it to your output:
$data = json_decode($content, true);
$images = array();
foreach ($data as $value) {
if (preg_match('#^data:image.*?base64,#', $value)) {
$images[] = $value;
}
}
print_r($images);
Output:
Array
(
[0] => data:image/png;base64,iVBORw0KGgoAAAANSU...
[1] => data:image/png;base64,iVBORw0KGgoAAAANSU...
[2] => data:image/png;base64,iVBORw0KGgoAAAANSU...
)
Demo on 3v4l.org
The regex syntax gets tricky here, because you have the literal text image\/png in your input. The backslash must be escaped six times here, four for a literal backslash, and two for an escape for the forward slash (which is also the delimiter used in the call to preg_match_all). Consider this script:
$content = '{"textArea":"one","signature":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAASLElEQVR4nO3dT2ij553A8bc726Qp1Eq30Py1vKXZQFvbh266EE9k2JJSZpChdAmdWbvNaT00MjulywzFvi0uVHNYikNZNNCDCwWFXNxeFHLwVSdd35Ou72nPOT97WF6t\/nnGfmW9r175c\/gcmvrPI3nA8lfP83uiL774nwAAAADA1URFLwAAAACgjEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFQAAAIAMRBUAAACADEQVAAAAgAxEFWBm3e554WsAAADIm6gCZNLtnoe9vfshiqIQRVH41rf+vvA1AQAA5ElUAS4tSfrhk0\/+FNbWqoOYMqzdPi18jQAAAHkRVYDnSpJ+ODp6HN58842pMUVUAQAAbiJRBbhQGlNefrkyEk82NtbD4eGjUK2uDv5bpbJS+HoBAADyJKoAU7XbpxPHfDY21sMf\/vBfIUn6odk8Hvn\/dnfvFb5mAACAPIkqwIg47oXt7dsjwaRaXQ2t1snIx4zvXonjXuFrBwAAyJOoAgwcHj4aiSWVykpoNo8nPq5W2xoJKo3GfuFrBwAAyJuoAkw96lOrbU3dfdJo7E\/sYkmSfuGPAQAAIG+iCtxg02JKtbp64S0+7fbpxI0\/3e554Y8DAACgCKIK3DBx3AtHR4\/DK698cySOXHTUZ\/jzxueoHB4+KvzxAAAAFEVUgRsgSfrh6dOPJwbQpjtTnhVTUuNzVGq1rcIfFwAAQJFEFVhSaUjZ2bk7EVLGr0d+3tc6PHw0savFHBUAAOCmE1VgiTwvpERRFOr1OxfOTJmm2z2fOPZzlc8HAABYVqIKLIF2+\/SZIaVSWQmNxn6mobI\/+ME\/TkSZoh8vAADAIhBVoKTiuBcODh5M7CIZDyCt1knmozrjt\/185SsvTr1mGQAovyTph08++ZPf9QBXIKpAiaTHezY318OtW38zl5AyrFJZGfnaDx9+VPhzAADMx+7uvRBFUVhbqxa+FoCyEFWgBDqds7C3d\/\/CXSm12talbvC5ivHhtNXqquG0ALDEqtVVN\/wBXJGoAgus2TwOa2vVqSFlZeVr4Re\/+Ne5bNGN457htABwgyRJf\/A7\/\/DwUeHrASgLUQUWzPNmpVz19p4sxnepeMcKAJZbs3k8+L3f6ZwVvh6AshBVYEGkN\/h8+ct\/OxFSqtXV0Gwe53L8ZvidKi+uAOBmqNfvDH7vF70WgDIRVaBASdIPT578duoRn0plJdTrdzJdgzyLdEidK5QB4ObY2FgPURSFjY31wtcCUCaiChQgSfrh6Ojx1CM+KytfCx9+uFvIdYZJ0p9Yk2sVAWD5eTMFIBtRBXKUJP1wcPBg6qyUanU1tFonha5vfJbK7u69wp8zAGC+ut1zQ2oBMhJVIAfp8NmLrkMuOqZ88cX\/BZ\/hY0iVyoorlAHgBuh0zga\/\/5vN48LXA1AmogrMSRz3LpyXkm6vXaQBsK3Wycj6vKgCgJth+DXAIr02ASgDUQWuUZL0w9OnH4ednbtTQ0qlshJ2d+\/lPnz2MtIBdYbUAcDNMnz8V1QBuBpRBa5Berxn2uDZ1HvvvbuwQ18\/\/fTPI+HHCyoAuDmGo8oivvEDsMhEFZhBHPfC3t79C0NKOoC23T4tfK3P8uMfvz9Yb6OxX\/h6AID8fPDBTwevA4peC0DZiCqQwWViSjpBf9GHvbbbp4P1vvrqK4WvBwDI1zvvfD9EURRefPGFwtcCUDaiClxBHPfC0dHj58aUWm2rNNtnh2epLNqOmiTph1\/96iC8995W+P3vnxS+HgBYRrXa1mB3bdFrASgbUQUuqds9f+bMlLIc9RnWbB6P3EZU9HqGxXEvbG6ujzy\/i3D1NAAsm0plxaB6gIxEFbik3d17z4wpZfuDP0n6I9c9L9LOmiTpTwSVRQw\/ALAMhnfaFr0WgLIRVeCSpkWVanU1NJvHCz83ZZpGY39hY0W6DXnasaqi1wYAyyRJ+gv7egCgDEQVuKQ47oVqdXVw7XAZhtA+67EMX6G8SFc9D8eeKIrC17\/+8sjg36LXBwDLpNs993sWYAaiClxRp3NW2piSGt4J0mweF76eVKt1MhJU3nrr2yP\/u0zzagCgDDqdM1EFYAaiCtwwwy+eqtXVhQlEw1c7pztofv7z0WurF2lHDQAsA1EFYDaiCtww6RGmRdr50W6fTtys9Pnnfx3cRhBFUXj99dcKXycALJvhNzXKNnQfYBGIKnCDHB4+Wrihr+32abh169bE1cnjR4E2N13zCADXbfi1QadzVvh6AMpGVIEbIkn6I7tBFuEK5WbzeOKGn\/RdsvHblhqN\/cLXCwDLRlQBmI2oAjfEcKQoOlAkST\/s7Y3OS3nhhRfCH\/\/434OPGT7644UeAMyHqAIwG1EFboDh6xIrlZVCh9PGcS9sbq6PBJONjfWRIbTDQ\/PSgbpFP4cAsIxEFYDZiCpwA9TrdxZiOG23ex5eeeWbE8d6xiNPo7E\/8jG7u\/cKfw4BYBkNRxW37AFcnagCS25410eRw2m73fORmS6VysqFgWf86I\/bCABgPoajSpE7WQHKSlSBJVerbQ0iRlHvQI3f5PPaa69euJbho0qpop9DAFhWw1Gl6LUAlJGoAktseJfK4eGjQtYwHlR2d+89852w8aM\/9fqdwp9HAFhWogrAbEQVWGLpLpVqdbWQLb3jgeQytw6NH\/0pcgYMACy7NKoYCg+QjagCS2r4GE3eYSJJ+uHg4MHI\/JTLzEVpt08d\/QGAHDWbx6IKwAxEFVhS6S6VvIfTjl+ZXK2uhm73\/FKfu7t7z60\/AJCjdKdKkcPsAcpMVIElNLzjI8\/htN3ueVhbq47cNnTZ758k\/ZHbgaIounSMAQCyefjwoxBFUXj33X8qfC0AZSSqwBJKd6nkOZy21ToZiSLvv\/\/DK81xGR9oaxsyAMxfulPF7lCAbEQVWDLpLpW3334rt+G04wNps7wwS0NQ0bcVAcBNUq\/fEVUAZiCqwJJJ48RlBsPOKkn6YWfn7swxJI57I1+jUlkp5LYiALhpNjbWvZkBMANRBZZIp3M2iBLz\/l7jA2mjKArN5nGmr5XePGBALQDkq1JZKeSmQIBlIarAEkl3qWSNG5fV6ZyNzE+pVFZmejGWvktmQC0A5KfbPR\/87u10zgpfD0AZiSqwJPLapTI+kLZSWZkpgiRJfySouNIRAPKRvnawUwUgO1EFlsS8B80lST8cHDwYCSAbG+szzz4Zv\/Unj1kwAMBoVDFTBSAbUQWWwPBuj3m80xTHvbC9fXti7sl1DJPd3b03suul6OeSfMRxL\/zsZ\/8S3n77H8Knn\/658PUA3FSNxn6o1++EOO4VvhaAMhJVYAmkVxpXq6vX\/rXb7dPwjW\/83dyuO65WV71LdoMkST8cHT0e+fcURZHbngAAKCVRBUpueJdKo7F\/rV87jTXDO0mue5Dd8Nf3Ltny6nbPQ6OxH9bWqhNBxYBEAADKSlSBkkuPz7z44ovXFiWSpD9xXfKbb75x7dFj+Cz3PHbZUKxO5ywcHDwI3\/vedybi3Pvv\/\/PIfyt6rQAAkIWoAiUWx71rvzWn2z0fud3nugbSTnN4+MiA2iXTap2EnZ27E\/+GoigK9fqd0Gwej8S0eeywAgCAvIgqUGIbG\/+\/m2SWa41T4zfxzPuK4\/TGIkd\/yitJ+uHp04\/Dzs7dqcd6arWt0GweDz4+jnsTV3KbpwIAQFmJKlBSw7fmzHqNcpL0p\/5RfF03\/FwkHVI7z3DD9et2z8PR0eOJI2LDO5tarZOJUDbtWNk8bqsCAIC8iCpQQsM7SqrV1ZnCR7t9OvWoxqyh5jLS7zW8k4HFkyT98Mknfwp7e\/cvHDSb7kh51o6j7373O7n\/GwMAgHkSVaBkho9PVCormY\/9xHHvwiMbeVxtPDxXY9mOf\/zud\/8ZtrffK\/UujE7nLBwdPQ7b27en\/htJZ6RM25EyTbN5PPK51zlYGQAAiiKqQMkMD3fNGj8ePvxo6u6USmUltxDQbp+GKIrC5uZ64c\/pdUmS\/kSEKEs46HbPw5Mnvw17e\/dDpTL5byPdFdVo7Id2+\/RKIWzarJ6HDz8q\/DEDAMCsRBUombfe+nbmP9jb7dPwxhuvX7jrIM8dI43Gfm67YvIwbV7Ioh5tSpJ++Oyzvwx2okwLbGlESW\/sybojalpQmddtUgAAkDdRBUrmpZdeClEUhS996UuX\/pw47l14jKNaXQ2dzlnuj6NW21qaQaUXBZWijzZ1u+eh0zkLT59+HA4OHoTt7dsXzkQZjyiff\/7Xmb\/\/+NXJsx5ZAwCARSOqQMkMD\/t83h+ncdwLe3v3p\/4BfevWrfDrX\/97YY9jEaLDdUiS\/iBUrKx8bW6DWLvd8\/DZZ38Jn332l\/DkyW\/D0dHjcHT0OOzs3A3b27cHwSTddfLSS1+5MJ4M7xhJI8o8jiml4Ww4qJTlOBQAAFyGqAIlM3yV8ubm6DGKJOmHbvc8PH36cdjbu3\/hsY5abavQ3QLd7vlgLUU\/n7PodM5GhgZ\/+OHeyPN8evp06mO\/KJAcHDwYiSQX\/fyuYmNjfRBPDg8fhXb7NLeffb1+xw4VAACWmqgCJTMcJFIvvPDlS\/2BXamshFbrpPDHkB4LqdW2Cl9LFknSD7\/85b+NhIs47oUPPvjpxHO+tlZ95pGb61arbQ3iSdHPUxz3Qr1+J2xsrC\/EegAA4LqJKlBCwzcAXeWP7UU5epGuv4xRpd0+HYkkw0d8pg1lnafhGShFzMUBAICbTlSBkmo2j0OlsnKpmLJof3CnUeU6Z47MW5L0R+bTXHT99PCRl+s0fISn0zkr\/SwaAABYBqIKlFgc90KrdRJef\/218NWvfjXUaluhVtsKjcb+3IaPXoeyRZVO52xkd8rzdv20WiehWl197lGsSmVl8DNLf26Hh48G4aTTOVvYnyEAACCqAAVIo0qjsV\/4Wp4lSfrh4ODBSAzZ3b136V0icdwbiSMCCQAALBdRBchdGWaqjO9Ouei4DwAAcHOJKkDuFj2qjA8CTm\/3KXpdAADAYhFVgNwtalTpds\/D5ub6SFBpNPYNhQUAAKYSVYDcLWJUGd+d4rgPAADwPKIKkLtm8zhEURTq9TuFryWOexO7U2q1LbtTAACA5xJVgNwtyk6V8d0pURSFw8NHhT8\/AABAOYgqQO5+85v\/CFEUhXfe+X4h33\/a7JSNjfXQ7Z4X\/twAAADlIaoAuUt3iOzu3sv1+yZJPxwdPZ6YndJsHhf+nAAAAOUjqgC5q9fv5D5TpdU6Ca+++spIUKnX77gqGQAAyExUAXKXRpU85pd0OmcTR32q1VU3+wAAADMTVYDcVaurIYqi0GqdzO17xHEv7OzcnRhE+5Of1N3sAwAAXAtRBchVkvQHgWMeg2HTuSkvv1yZ2J0yz4gDAADcPKIKkKtO52wQOq7z614UU9Krm81OAQAArpuoAuSq0dgfhI7r+Hrd7nnY27s\/Naa42QcAAJgnUQXIVa22FaIoCo3G\/kxfp90+nRhAO2x3957dKQAAwFyJKkCuKpWVEEVR5tt3Wq2TsLZWvTCm1Ot35jKrBQAAYJyoAuSm2z0fxI9O5+xKn\/usnSmVyko4PHzkVh8AACBXogqQmyxDarvd87C9fXtqTLl9+93MO14AAABmJaoAuRmOKs+bdxLHvbCzc\/fC4bN2pQAAAEUTVYDcxHFvEEd+9KMfTg0j3e751JhSra6GVuuk8McAAACQElWAXKVXKqd2du6Go6PHYWfn7tQBtBsb62IKAACwkEQVIFdJ0g9vv\/3Whbf3pGq1rSsPswUAAMiTqAIUot0+Dbu790K1ujqYlVKrbYVm8\/i581YAAAAWgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQgagCAAAAkIGoAgAAAJCBqAIAAACQwf8CRSWrT8oxtvoAAAAASUVORK5CYII=",'.
'"textArea1":"","signature1":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAAgAElEQVR4nO3dT2wj55nncbr\/pNNuN4uIk3YSW9S2bdjtNsnMJu32WAqZwONsQqGITWy4Rxoy44MNCRNy7YE70iRkkDEWEhASwTZAOR4UgRmEAhKQMDyQvAcSPQCRW\/nCHOvEa5181vmZg1MVFoukyBKl4p\/v4QMkbol6q0RSVT8+z\/MGjo8\/FwAAAAAAAIwn4PcCAAAAAAAAZhGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqALMKcNoi2G05eHDT6XZPJJKZV9yuS1JJFYlFFLk1q3nJB5fEcNo+75WAAAAAJhFhCrADDLNjjSbR1KvH0iptCe53JZkMhvyN38Tk0AgMLZcbsv3YwIAAACAWUOoAkw50+xIvX4ghcKOXWXiJTg5SSwWEdPs+H68AABMI9Ps2FWgfq8FADA9CFWAKWOaHdG0smQyGxKLRUYORRQlKM8++4wkEquSz29LPr8tqpqUGze+Zv97NBqRdHpd8vltuXlz2fUYicSq78cPAIAfDKMtzeaRFAo7kslsSCKxOvYHFI8\/\/hWJxSKSSKxKobAjzeaR78cFADhbhCrAFDCMthQKO3Lz5v8Y6aItGo2IqiYln9+WWq3q+VMzTSuLogQdj61pZd\/PBwAAZ8kw2qJpZSkUdiSVWpNg8PqZVIFaMpkNefjwUypCAWAOEaoAPqrVqid+EhYOL4mqJqVY3JVG43Dia9D1lqsNyO\/zAgDApFhttNaw9nEqQOPxFVs6vS6qmhRVTTr+ezy+Yv+3N9983a4Wzee3JR5fsR\/vypUrEgopksttia63fD8vAIDJIFQBfKBpZVleDve9iLt9+5Zks5uiaeVz69tW1aRjDVzsAQBmlRWijNJGGw4vSTQakWx2Uz788IHUatUz+RvYaBzKO++85QhZQiFFMpkNqdcPfD9nAADvCFWAc2IYbfn5z99zhSnh8JJks5tnUoUyqrfffsuxpl\/9asf38wUAwKgMoy2l0t6JIUo8vmJ\/cOHXBwim2ZFarSrZ7KZEoxFHwMIQXACYPYQqwBkyzY6USnt9q1Ki0YhoWnkq+qs\/+KDgWFs6ve77mgAAGEbXWycGKfH4iuTz275+cHESw2hLsbhrByyEKwAwWwhVgDOgaWVJpdb6XuCpanLq2msajUPXRajfawIAoJcVpAxqobVaeabt7+w4x6eqSQmFFCkUqBoFgFlAqAJMSKNxKJnMhoRCysyEKRbT7DjWGgopvq8JAIDj4y+ChkJhp29FSji8JOn0+tRUfk6KYbTtcGWaq2wAAIQqwKmYZkcqlf2huwnE4yszcUHUu26\/1wMAWEzWzJFUak2effaZuatGGYeut0RRgvKrX+3MxLUEACwiQhXAA9PsSKGwM7AqZZbCFEs4vMQOQACAc2eaHdH1luRyW65qlBs3btghSqNxOFfVKOPIZjftbZ2ZtwIA04VQBRiDYbQll9uaqzDF0r3NYyAQmMljAADMhpNaelQ1udAhSj+NxqH9t5p5KwAwPQhVgBEYRlsymY2h2zRO88yUURCqAADOUqNxKLnc1sAd8fL5baowTmCaHcnnt+3zVqnsEzwBgM8IVYAhdL11YpgyL6W4hCoAgEmzKlJ6g5RweEmy2U2p1aqEAh7UalW7bTcWi0i9fuD7mgBgURGqAAMYRntom8+8hCkWQhUAwCSYZkfq9QO5e\/dO36pO\/r5M7jyn0+v2uU0kVme6YhYAZhWhCjBAo3HouhhUlKDk89tz+akaoQoA4DSs6s7uDySuXbsm0WhEisVd39c3r7qrVgKBgORyW3N5nQIA04pQBRjANDsSjUbsMKVY3J3rixRCFQDAuAyjLaXSnqu9R1GCC7Pt8TQwzY6oatI+\/6GQwjBbADgnhCrACRZl94HeUGURjhkA4E2jcdh35lg8viKaVvZ9fYtK08qiKEH79xGLRaRWq\/q+LgCYZ4QqAOT42B2q+L0eAMB0Mc2OVCr7rm2QFSU4d3PGZplhtF1\/01OpNX4\/AHBGCFUAyPHx566tLf1eDwBgOphmp2+LTzQaoSplihWLu46qlUAgIIXCDpWoADBhhCoA5Pj4c1f5tt\/rAQC\/GEZb6vUDuX\/\/Xfne9+KSSq1JIrEqy8thWV4OSywWkUxmY+4\/+TfNjhQKO66d8NLpdeZuzYh+VSvLy2FaggBggghVAMjxsTNUyWY3fV8PAJy3Wq0qqdSaa07IIHfv3vF9zWfBMNqSy205whRr8Oy8B0nzqljcdT1\/aQkCgMkgVAEgx8fOUCWf3\/Z9PQBwXgyjLYnE6shhyrzOnzKMtmv4bDi8NPe73y0KXW+5qlZCIUVKpT3f1wYAs4xQBYAcHztDFXrkASwC0+zIP\/3TO0NDk0uXLkk8vir5\/LY0Gofy5puv2\/92+\/YLvh\/DJOh6S3K5LealLIh8ftv1PE8kVqlaAQCPCFUAyPHx53LhwgX74urjj\/\/g+3oA4Kz0a2\/p3c0mm92UWq3quNFMp9cdXzPrN6GG0Za\/+7vvO45dVZOi6y3f14az1WgcSji8RNUKAEwAoQoAOT52VqowgBDAPNL11tCZKYoSFE0ru1pdGo1Dx8434fDSTAcqvbNjbt5clmx2kzBlwZhmxxEUUrUCAN4QqgAQ0+wQqgCYW43G4dAw5caNr8kHHxRc32eaHdeMkVke5N1oHEosFjkxRMJiqdWqrq2XQyGF9i8AGBGhCgAxjDahCoC50xsi9IrHVwZWZ9RqVUd1iqIEZ\/a9sVarusIUBpKjW7+tl60dggjdAGA4QhUAoustQhUAc+OkMGXY3BDDaDuqWqz5Kn4fkxfF4q4jGLJ2d+MmGYP0G2IbCilSq1V9XxsATCtCFQDSaBw6LqDopQYwi3S9NXRr5Gx2c+j7W7G46xhe+9prr87cnBFrJ5\/HHrvmCpJ4b8codL3lGmIbCAQkl9sikAOAPghVAIimlR0XTn6vBwDGYRht1+yT7qGyxeLuwJtB0+xIpbLvCFPC4aWZ+WTeNDvy0UcP5Ec\/+oFrN6MLFy5INBqh+hBjM82OqGrS9XqKxSIzFzQCwFkjVAEgb775un3BFI1GfF8PAIyqX7uCNS9l2KBNw2hLobDjClOKxV3fj2lUvbNSeo9\/VoIhTC9NK7uG2AYCAbZeBoAuhCoAJBi8bl8ovfPOW76vBwCGMc2OlEp78uijV103e+n0+tBP0q32mO4wJRqNzMxOJ9ax985KCQQC8uUvX5Ef\/1iVjz56IM3mEe0+mAjDaEs06g7vEolV2oEA4JhQBVh4vdspf\/zxH3xfEwAMks9vOwKRCxcunNjic3zcfwDtSQHMtDCMtjSbR3Lv3uty5cqXBs6MGSQUUiSRWJVEYlUymXVpNo98PybMnkFDbGkvA7DoCFWABdd9kRQOL\/m+HgDop3eL45O2RLY0GoeSSq3J1atftt\/nThpYe9ZMsyPN5pE0m0dSrx9IqbQnhcKOFAo7kslsSCq1JonE6tAdjCYhl9vihhhjqdWqfduBGGILYJERqgALrrukN51e9309ANCt344+o8wLaTaPHN+nKEHZ3\/\/tudz4WaGJFZRYAUnvINlpQRsHxmGaHYnHV1zPI4bYAlhUhCrAAqvVqo4LIj6xBDAtTLMjhcKO4z1KUYJDZ59YO\/l0V3iEw0uSz2+f2ToNoy2Vyr7kcluSSKxOJDgJh5ckHl8RVU3K449\/pafdIiSvvfaq5PPbks1uSj6\/bf9vVU1KPL4i8fiKRKORvhUFw4IVv3\/nmC3F4m7fdiCG2AJYNIQqwALr\/qSJ1h\/Mi48\/\/gOfus+4fq0++fz20G2Re4e3RqORE+eseNFoHEqhsCOp1NrIAYoVksTjK3YIks9vS61WlUbjUBqNQ1c7kml2+lToeKsoMYy2NBqHomll2dv7VzuECYeXHI9PlQHGpest1\/MoEAhIKrXG+zCAhUGoAiyoRuPQcQE0KztfAMPcvn3Lfk4\/8sgXlQ1PPvlNuXlzWW7del4KhR0plfakXj+QZvOIi\/4pM6jVZ9D8k0HbIk\/q\/cwKI3K5LXn22WdODE3S6XU7LNH11qmeX+n0uuNnnEV7Zu\/fAaoV4YVpdiSb3XS9LpaXwwR1ABYCoQqwoLpnqVClgnnhtd2ie3cUaw4Gwcv5aTQOXWHKsFYfw2hLJrPhCjZOE6YYRtseGtuvjefGjRt2eJLPb4umlftWmExCb1vFWQQqvT\/j8uXLvj8PMNsajcO+LWeFwo7vawOAs0SoAiwgXW\/x6STm0nvv\/ezU8ywGicUiduhSqezzCewpWVUmvW0+ihIc2OrTL3yJRiNjhyndg2QHzUGxtlzO57el0Tg813Ct+8Y0Go1M9GdrWtl1zq32Kr+fE5h9g4bYJhKrJwaQhtEWXW\/ZO2P1Y4Xdlcq+3L\/\/rvziFz+32\/FSqTXJ5bakUNiR3\/3u\/0mzecT7NIBzQagCLKDuKpV4fMX39QCTpust0bSyqGpSrl9\/7MyCFutmIZfbknr9wNdtemeBNdT17t07fVtoBs1A6R0+a4UNJ+0A1P18sCpQ+gUK1nthNrtpt+74dY56K0gmtZZG43DgFs3s\/IZJy+e3Xc+zS5cuycsvv2RXBZ7l+3KvVGqN92cAZ4ZQBVgwvVUqn3zyR9\/XBJw1w2iLppWlWNyVbHZTotGIfPWrj5\/Jxfv1649JLBaRXG5LSqU9KZX2FrqNyKoI6a0GuXjxol0N0q9art\/w2UAgIKqaHFpdZ7Xx5HJbA0OE3hYev89Rt3j8rzeb0WhkIs\/9VGqt73lQlKAUi7u+HzNmj1XtVansS6m0J4XCjmQyG5JIrMoLLzw\/tduHMz8OwFkgVAEWTHeViqomfV8P4Ld\/\/\/ePJJn8oVy79ujQi\/Fr167Jo48O\/5pRxGIRyWQ2pFDYmcvydKsaJZPZ6FsVYrX3DDpuqy2o9\/vS6fW+32Nto5zJbPQNUcLhJVHVpN3G4\/f5OencXbhwwV77a6+9eqrHunfvDbl06WLf52E6vb6wQR9G190qN8ltw\/30m9\/8X9\/PK4D5QqgCLJDectxpv8EAzlutVpV0er3vsEXL5cuX5Ec\/+oGUSntiGH8WXW\/Z2+LWalV58OA3ks9vSzq9LqqadASZwyQSq5LJbEilsi\/N5pHv52Ic1jbDw1prisXdoeX3\/SoqFCUo2eym6\/uazSP7Bq\/3Z0WjEbuNZ9bK\/Wu1quNYfvGL+2M\/hqaVB1boWL+LWTsvOFuG0ZZm80hKpT3J5bYklVqTF1+8LY8+evXE961oNCKqmpRsdlOKxV0pFnfl97+viKaVpVar2tuGf\/jhA7lx44bjezc337bfO8eh6y0xjPbQXcFqtapdmdjv\/XzewmwA\/iJUARaEYbQdFxRUqQDD1WpVUdXk0IAlFFIkk9mQev3gxMez5rwUi7uiqsm+wxx7xWIRSaXW7KqWaaks0PWWPeS137oVJSiqmhw4I6XboJ1\/uofVmmZH6vUDyWQ2XJ+Sd89C8fu8nNZpgu9arTo0TLlx4wZB+gKzBr12V5wMCkGHvaatLcO9BHOm2XFsFb68HD6XYzfNjjz99E3Xe\/e0vJ8CmH2EKsCC6O7TDwQCXEwAY9C0suNmYFAAUqnsj\/3aMoy2NBqHdnXLSZUty8thWVl5We7de0MqlX2p1apnWtkyyk45gcAXbTbZ7ObIN+79hs9a2yKbZsdu6+mtXolGI5JOr0utVp279zFVTTqOddTfTyLx3aHPmXv3Xvf92HC2rNdpvX7gmG8ybquOVXmSz29LtVqxq0Imuc5xn+OT+rnR6IuOn51IrPr+ewMwHwhVgAVgGG25fPmSfSHxyit3fV8TMKusXYUG3ZRY7UGjVK8MY7UV5fPbks9vSzy+IuHw0tDKGauypXtmy7jVCVYbwKAZJb3hhqaVx7rpqlT2XZ+Qx+Mr9uNYu\/R0f0Lu5efMot7qpZNCI8NoD602UNUkbQ5zptE4dAUn44Qm1uutd1jzeT5Prl27Zq\/lvF\/TveE4g2sBTAKhCrAAevv03377Ld\/XBMw60+yIppUlHF4aePMSCilSKu1NvKLCqm7RtLIduAwLW6wKl0RiVQqFHSmV9qReP5Df\/e6BVCr79k45wz7VjkYj9k3YuDdCVtVJv9ad\/f3fSqm05whwrBu+RQsEem\/4vvWt6MDnjq63BoZe\/ebQYDZYW2qn0+v2rjpeWnXi8RW74mTadrl67rln7bX68RrvrgYMhRTfzweA2UeoAiyA3k\/Vx7nYtkqKrbJi6yKv19tvvyX3778rhcKOpFJrkkisSiKxKqXSnu\/HD5y1RuNwaHvQ8nJYcrmtM29XMc2Oo53Imt1yUuDiDlBelJ\/+dEOKxd1T3fSYZqfvANtEYlV+8pOUHeRYO\/TMw1yU09C0ct\/qo3r9wH4PVtWk3Lr1fN\/fWzgcls8++5Pvx4HRWMNWK5V9yWa3xnqddlebWDtbTVNwMkx3RZYf4Z9pdhznelbOG4DpRagCLADnRfeS69+tIZC53JbcuvWcPPPMzYlumbhonzZjcfUOYuwnFovIL3\/58zMPWHS9dWIbj6IE5fLlyydWuFjDcsfZmahQ2HG9j9y+\/YK8+ur3JBAI2INseX9wGjcA+2sQFpm7GTPzwjQ7oustKRZ35cGD3wzcbtz5WrnlCk10vTUXv+PuD3r8ev13ryGf3\/b9nACYbYQqwJzT9ZbjQu2555517AIwbGbCpCz6p89YPI3G4dC2oO6Kje6Kr3r9wPOuGtZ2zv22Je4ePtloHLp+hml27C2hrYG51gyXYWGLtf5KZd8eaFkq7bnClKefvinXrz8mH374QGq1KkHKEJ988sex32Pj8ZW5uNmeVVa1ibWrTiKxOrCdLpn8X3aVSTa7Kffuve7YujidXp\/732U2u2kfr19VIq+88rK9hmJx1\/dzAmC2EaoAc643VDlvfHqKRaZp5bErDx55JCBPPvlN++YskViVb30r6vj\/3UIhxb55e+ONH0s6vW7PI5nUa89qKSoWd6VY3JVsdlNUNSnRaMRxfI884jyWq1evyk9+8r9lf\/+3vA+MQddbI4VyihLkhtAHjcahFAo7srLysiMQ6f67Z4UmxeKuHST2vgZ6272y2U3fj+08dIcq5xmwGkZbms0jyeW2HOed+UMATotQBVgAV65cmXhQEo+v2DdvxeKu3c\/dfdHIhQrwhZN2DBpXOLxkvwatFho\/QgvT7EiptOcKjoLBoHz\/+3G71UdRghIKKXYrUffuRPPS0nAWisVd+3mjKEEJh5fkpZe+Lf\/4j\/9Atc85sgYt99tp5+LFi\/Z24uNs8\/3ee1nH4yxSC0p3qHJWr\/1G41BKpT1JpdaGVuQ+\/\/xzvp8PALOPUAVYAP\/5n3+UixcvjhSWvPLKXTsssXYM6NcuAGB8ptmR\/f3fyk9\/uiHx+IpjFwrL5cuX5fbtF+xPuvP5balWK3Z7jd\/HYCmV9mRp6SnH2l966TvyX\/\/1\/11f213pks1u9j3uQOCLlqJYLCKJxHdlZeVle6eiUmmPAAa+qNWqfdt4rN2wvIRbvXOXFilQOT52zjOZ5ONabVhPP31z5A+IeD8BMAmEKsCCMIy2FIu79o2cVW1izVjwe30AZkOptCcvvnjbcXPyne\/8T0+7zuh6S2q1qt1ONErLizuAWbUrX6y5NNbcKG6YcBr5\/LbjORePr3jaUtximh1Xtcs777zl+3GeNytUjUYjE3k8XW9JJrNx4oB9a75UOr0umlb2\/TwAmB+EKgAAYCjT7Ei1WnGFKbFYRAzjzxP\/WQ8ffirF4q5oWlny+W17sOc4oUsvawaNFcBUKvtSrx9MXQUQpkN3oKIowVMPXNf1lqsNZVFmqHQzjLZ9\/On0+qkeq1jcHbiL0vXrj9ntkXxwBOCsEaoAAIC+TLMjhcKOq80nFovIJ5\/80dd1Wa2JxeKuve2sFb70DtAdVSwWkVRqTe7de8MOXgYNGcX8qtWqjufFaW\/KNa3sqKJQlODCVkoUi7unOq+G0Za33koPrERJp9cJUQCcO0IVAADgMGgA7de+9lWpViu+r29c1kyX7m2j8\/ltu+3ICmMUJSiKEpRr1x7te9MWCil2y5E176VeP3AN6cbsMs2Oo\/rhNOGHaXZcO81MouplllnVZooSHPtc9mvxUZSgqGpyYUMqANOBUAUAANg0rSxPPvlNx43LtWvX5P79d31f23kxzY7oeksajUNHC9KgAbvdocs3vvF1uXv3jmQyG5LLbdnBizXnhVaj6dbd9qOqSc+PYxhtV7tPNBpZ6N9\/9xbSow7n1fWWK5gKBAJy+\/YtKRZ3F\/p8ApgehCoAAEB0vdV3y9h0ep0qjD7nyqp4SafXPbcbhUKKPesll9uyt5nmRtE\/3b9Hr78HXW+5Kip4Hf11QK2iBAeeC8Noy8OHn0out9U3lCoWd30\/DgDoRagCAMCCe\/\/9d103\/MvLYU\/bxS4ya8iu1VqUTq\/bbUXjBi7Xrz8md+\/esatdms0j349v3ul6y3ED7\/UxmJ\/i1l2l0h2MGEZbSqU9SaXW+g6dtbauJmgEMM0IVQAAWFAPH34qTzxxw3Uj8\/77i9Pqc96s2S7drUXdW0oPC2CWl8PcoJ+h7hv\/eHxl7O83jLYjUAmHlwgmj78IG7\/+9SckEAjIE0\/ckPv33+1bFWedM1VNMqcIwEwhVAEAYMGYZkd+8INXXTc0Tz31JDtnTIHuipd0et0RtIRCiu\/rm1fd81RGnfnRrXvmzqLPTzk+\/iJALJX25KmnnhxalRWPr1CNAmCmEaoAALBAfv3rX8jFixddNzaqmuST4SmWTq9LIBCQbHbT97XMqx\/+8DXPoUo2u+kIVBbttaTrLSmV9iST2RhYhdJ9frLZTQJcAHODUAUAgAXw8cd\/kGDwuusGR1GCDH8Ejj+Xq1ev2q+Lvb1\/Hfn7utuGFqHlxzQ7UqtVpVDYkURi1TWUd5APP3ywcGETgMVAqAIAwBz77LM\/yZ073x5Ydk\/JPeAcUhsIBEauougeTHvlypW5DFR0vSWVyr788z\/nTgxRrCqUt95KO\/47wS2AeUaoAgDAnPrZzzb73vgoSpDSe6BLsbjreI2MUlFhmh3Htr+1WtX345gEaxZKKrU2NEBRlKA9D8UaLGuaHUml1hxfl06v+35MAHCWCFUAAJgztVpVvvGNr\/e9EcrntynBB3qoatLRwjPK93TPUZnV4MA0O1KvH0gut+UIiPoFKE899aRks5tSq1X7VrhpWtkVwjADCMAiIFQBAGBO6HpLXnzxBVp9gDF179yjqskTv757++RweGkmgkrDaEu9fjDyLBSrlWdQiGLpV52iKMG5qdwBgJMQqgAAMCe6P21\/\/PGviKomRdPKM3HDB\/ipe9vqUXb+6a5S0bSy7+u36HpLms0jKZX27N147tz5tgSD18cKUUZ9z9D1liwvh9lJDMBCI1QBAGBONBqHY98UAfhc4vEVOxR49dXvjfX1v\/995VzWaBhtaTaPpFLZl0Jhx96++KQtjPsJh5dc81DGXc8HHxRcj0l1CoBFRKgCAACAhdZdeXLp0sUTW+W6Q5VAICC53NbEgkzD+LNUKvt2pcmwWSejeOyxa\/L3f\/+G1GpV0fXWqddpmh3JZDZcs1MIcgEsKkIVAAAALLTPPvuTa6DzsK\/\/l3+53zfASCRWpVDYkVJpT+r1A2k2j6TZPJJ6\/cAOSiqVfWk2j+Q\/\/uPf7H+vVPYlk9lwtdJ4EY+vjDQLxYvedh9FCU5V+xMA+IFQBQAAAAuveyZRKKScWHnhpe1mkqLRiKhqUvL5bdG0suh668zOjWl2pFDYcYU3Z\/kzAWBWEKoAAABg4TUah2NVqxwff7F9effOQZOkKEFXcOJ1\/slpaFrZVZ1SLO76\/vsCgGlBqAIAAAAcO2elhELKyO0zut6SbHZzrIDlS1\/6kqvyJJvdlEbj0PfzcHz8uRSLu652JLZmBwA3QhUAAADg2F2tkkisen4s0+zM3PBW0+zIr3\/9S1eYEo1G2NkHAAYgVAEAAAD+onu2yqhtQLPOMNqSy21JKKS4KlOmpXIGAKYVoQoAAADwF6bZEUUJOsKFed3hxjDakslsuMIUVU0yhBYARkSoAgAAAHTR9ZYrWCkUdnxf16RoWlliMff8F8IUABgfoQoAAADQo9E4dAUr9+694fu6vNL1luRyW655KYQpAHA6hCoAAABAH7recu3oE4tFZmYHHMNoS6Wy3zdICQQCkk6vE6YAwCkRqgAAAAADmGZH0ul1RxgRCilSKOxM7e4+mlaWRGK1b5ASDi9JPr89M8EQAEw7QhUAAADgBJpWlnB4yRVSJBKrksttSam0J5XKvm+75eh6S+7de6NvkGK1+LCTDwBMHqEKAAAAMAJdb7m2XB5keTksicSqFAo7Uq8fnFmbzaChs4oSFFVNzu3ORQAwLQhVAAAAgDFoWlni8ZWRwpV+lS2ZzIYdtjSbR2O3Eel6S0qlvb6zUu7c+bZoWpn2HgA4J4QqAAAAgAem2ZFG41CKxV3J57flb\/\/2ZXnqqSdduwaNKxaLSCKx+hfflbt370gsFhk4cDYcXpJicZcgBQB8QKgCAAAATJBpdkTXW1KrVSWf3\/Zc1TJMOLwk6fS61GpV348XABYZoQoAAABwDqzKlnx+W\/L5bVHVpMTjK32palKy2U15\/\/3\/I++\/\/64Ui7uiaWVpNA7ZBhkApgihCtJSuJsAAAEQSURBVAAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAHhCoAAAAAAAAeEKoAAAAAAAB4QKgCAAAAAADgAaEKAAAAAACAB4QqAAAAAAAAHhCqAAAAAAAAeECoAgAAAAAA4AGhCgAAAAAAgAeEKgAAAAAAAB4QqgAAAAAAAHhAqAIAAAAAAOABoQoAAAAAAIAH\/w3LpRObNOQA2gAAAABJRU5ErkJggg==",'.
'"textArea2":"three","signature2":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABFUAAACWCAYAAAAfULfCAAAXIklEQVR4nO3dT2yc93kncNqS48iyNYSF2klkjtaKVoldkl47zgYmM0S3SdqIINGiQBBqh6h34YRCPYwMWCDbziTZBKCKHWKBAtShGAItTAMpRkhaULkM4QOvc+Ie58TrnHr2+enBmAmHHP57RerlDD+HD0xIovwbAu+r9\/d9f8\/zDHz++X8EAAAAAMczkPYCAAAAAHqRUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAAAAABIQqgAAAAAkIFQBAAAASECoAgAAAJCAUAUAAAAgAaEKAAAAQAJCFQAAAIAEhCoAAAAACQhVAADgDKjXN6PR2IqNjcdt9fpm6usCYH9CFQAASNnIyHAMDAwcaHAwE4ODmZiYGG+bnb0TpdJilEqLsbz8oB3GpP15AM4LoQoAAKSoVls\/NFBJanR0OCYmxmN+\/m6USotCF4ATJlQBAIAUNRpbpxaqHHbypXXa5de\/\/nk8evRp1Oubbc3mduo\/G4CzTqgCAAApq1bXYmrqduTzM5HPz0SxuBDF4kLk8z+ODz54P\/L5mcjlxiKXG4uRkeHIZK6kEsK0Tr60wpif\/vR\/xf3792J19WE8evSpPjDAuSNUgTOs2dxuvy3a2bRuY+Nx1Grr7f+2Gts1GlsdX3vDBAD9r\/Xvf622HrXaepTLS+1Q5g\/hzB9Cme7G480334hsdujEQpgXXrgUt27915ifvxvLyw9idfVhO3TxjAL0C6EKnJJmcztKpcVYXX0Yy8sP2k3k5ufvxvz83ZienuxoNDc6OhyDg5lTPd47PT0Zf\/mX03H\/\/r32w83udbXWnPbPDwBI186gplZbj0plJYrFhSgU5tohzRtvfOPEer9MT0\/G8vKDaDS2Uv\/sAEclVIFTUiwunEpAkslciWx2qOPtUuu48F\/8xXT769bvJT0e\/N3vvpf6zxAA6A3N5nY7fCkU5mJkZDguXLiQ+GVQqbSY+mcCOAqhCpySanUtBgYGIpsdimx2KDKZKzEyMtz1yG2hMNdxRLdaXet4M\/Ska2k0tqJSWYlCYS7efPONIz\/UeFMEACTVClrK5aUoFOba\/WCOWmL07W9\/K\/XPAHAYoQqcU83mdrv3ys5f3\/kwcxKBDgDAQWq19ahW16JQmNtzwrZSWUl9fQAHEaoAbbXaeseDTNrrAQDOl2ZzOy5evNh+FikWF1JfE8BBhCpAfP75F83odjbKnZq6nfqaAIDzZXdPunJ5KfU1ARxEqAJEuby0pxmuUYfA559\/Ebi2JphVq2uprwfoT83mdkxPT3oeAXqOUAXOsbW11RgdHd7TGM7GCfpXo7EV9fpmbGw8jkePPo1f\/\/rn7bHqs7N3YmJiPG7ceD1eeunFrmPeh4au2eQAJ6pe34zr17N7ApV6fTP1tQEcRqgC51C1utY1TBGoQO+r1dZjY+NxOyiZnp6MiYnxEx3tXijMpf45gf5Qqazsucdks0MCFaBnCFXgHKnV1vccrfVGCHpHo7EVGxuPY2PjcSwvP4jZ2ZkYG\/tOjI4Odz1VcpqcVgGe1NTU7T33llxuzP0F6ClCFTgHarX1A99Uv\/XWiAcYOANaZTn\/8i\/\/FKXSYrsc5yQCk0zmSuRyYzE1dTuKxYWoVFaiVlvfE6Y2m9vx29\/+JsrlpY7f39080sh1IKlGY6vridlCYc7zCNBzhCrQxw4LU7LZIV314SlrNrfb5TknHZpks0ORy41FPj\/TEZycxCblRz\/6K6EK8MRqtfWu97yPP\/5Z6msDSEKoAn2oUlnZt2dKa\/NVLi95GwSnrNHYikePPo1SaTEmJsb3NGI8zMjIcEdI0lKprES1uha12vqJhSaHfY6LFy8o\/wESaza3Y37+btd7nX5uQC8TqkCfaDa3Y3n5wYGbtkzmShSLCzZD8ITq9c12WLLTxMR43Lp1M27dunns0yfZ7FDk8zNRqaycuf5GhcJcx1qvXn059TUBvaNaXev6fJLJXHHqDeh5QhXocbXaeszO3jm0LECYAsk0m9uxuvowZmfvxKuvvvLEZTotudxYFIsLUa2unelrs9nc7nJM\/17q6wLOvmZze98G+RrSAv1CqAI9qNHYilJp8dBSgmx2SJgCCdTrm7G6+nDfzcBxe520ApSzeArlMOXy0p7P5J4CHKZSWYmrV1\/etwQ57fUBnBShCvSIRmMr5ufvHtgrZWcfhkplxcYHEhgZOfwa2y84yeXG4uOPfxYPH\/6\/qNc3e\/4abDa395Qx5fMzqa8LOLtqtfWuzypOzQL9SqgCZ1irT8pRgpRM5krk8zNqk+EJ1GrrB15nN29+PaambrebxPbz5qBe3+x67+m1kzbA09F6+bP7nvHcc8+Z7AP0NaEKnDGNxlasrj48cBTy7iBF13w4GY3G1r7XWaOxlfr6noZabX3fsqdCYS719QFnT7m81LU5d6Ewd27uncD5JVSBM6A1dvW9975zpNKeYnHB22I4JdXq2pmdwnNajjI9TNkPsNt+pT4jI8Pn5v4JIFSBp6zR2Iq1tdW4f\/9eTE7+MK5d+9qhIUqhMKdHCpyCZnM7Go2t2Nh4HBsbj7uOSS6VFuPRo09jY+Nx35XXVatrhzbj\/cpXXo1KZSX1tQJnR6Ox1fXeoQktcB4JVSChen0zarX1+N3vfhP\/8A+\/itnZmZidvRPf+96fxPXrQ\/HVr34lvvSlLx274eWzzz4bV6++HD\/4wZ\/G\/fv3OjZ0GxuPvfmBJ9CanDU9PRmZzJVjX587jY4Ox8TEeHzve38S9+\/fi+XlB7G8\/KAdxCwvP4jV1Yfta\/cs9GCp1zdjeflBTE9Pdj2qv\/tkSr+FSMCTaTS2Ynb2zr73jLTvcQBpEKrALo3G\/49cbjxyufEYGnotMpkrkclcicuXL8fFixeeaBN20lqbuunpyfZGTvACnWq19ZidvXPoCPKn6fr1bExMfDcKhbuxuvqwHZye5OdujYUulRZjYmL80BCl9ZbZdA5gt2ZzO+bn73a9j+RyY547gHNNqAK73LjxeuobrpMOXUqlxVhdfeihh3Nlv+k1Z90Xgct4zM\/fbQelhzV6bPVlOk6AsjNImZq67VQKsEezuR2zszNd7x35\/IznCoDPhSqwx\/3797o+PFy4cCEuXboUr7zyR5HNDsWtWzfj1q2b8e1vfytyubGYnp6Mv\/mbn8Tc3Afx0Ucfxj\/\/8z\/Fgwf\/J4rFhahUVqJaXWuPYW2p1zej0diKZnO7rdHYinp9s11eVKmsRLG4EMXiQuTzM5HLjUUuNxbZ7NATb9paJQo2U\/SjbgHphQvPtk+cvfDCC+1f\/\/KXn49Ll74cly9\/8Wsvvng5Xnzxcty48XqMjg63vfPOWzE5+cMoFO62y\/OWlx+0S3w2Nh7HZ5\/9Pj777Pcd13qttr7nOj5u+dHgYCYmJsbjJz95Pz788Kdx\/\/69eOed\/xaXLn352PeAbHbI5DBgX7XaetcphK3TbCb6APyBUAX6QGvTVq2utTduU1O3I5cbi5GR472pHxzMxOBgph287CwvOunyBDhNt2\/\/WQwMfNGn6I03vhFTU7ejXF6KYnEhCoW5+OCD99vXSavM72mcQNlpenoyJia+G++++07cvHkjrl37Wly79tUT\/f9ms0ORy421A16bIWA\/5fJS11LJ8fH3hLAA+xCqwDnSOv1Sra5FubwU5fJSfPjh3LFPv9y48XosLz9I\/fPAYY7bG6TZ3O64TrqFlKcdvjyJl156Kb7+9RsxP383\/v3f\/zX1nz\/Qqdncjo2Nxx3Txebn78bs7J12yd9+za5\/97vftJten2Q42mo+u7tsUI8lgKMRqgBdtU6\/lMtLUSjMdQ1cRkeH1VNzbjUaW3tKe3aX6bWCmCcp19vta1\/7arz33n9v\/92vvXbt0NNnExPjsbr60OYIUjQy8scnHqSOjg7H\/PzdePTo02Nd383mdqyuPuzadyqbHYpyecn9AuCIhCrAkVUqK3sewAYHM4IVeEKtEzI7g5rdDrrOWt9fqaxEPv\/jfU\/UZDJXolxeSv3zwnnz0UeFp3JarVVmODt7J0qlxT2TxVrT0Lo1s56auq3EByABoQpwbNXqWseb9+npydTXBHRqNb4ul5f2nJSZnb2T+vrgPPnVr0qplgYODAzEs88+0\/VUSqEw5+UIwBMQqgCJVKtrHQ9mjgnD2dVsbse7774jWIEU3bz59X0Djxs3Xm+X6HWbGlYozMW3vvV2vP32W088AbDb6ZadDen9ew5wPEIVIJHf\/vY3HQ9lxeJC6msCDpbPz3Rct8apw9PV7eTY7pLa2dk78ejRp0f6+1rhy0cfFeJHP\/qruH59KJ5\/\/vkTCVp++MMfxP3799olRLXausAFoAuhCpBIvb7Z8QBWKMylvibgcLncmNI9SFGzuR2VykrHtXhYj5Tp6cmYnp6Mv\/7r\/9kxEahUWoyJifGu35vLjUU+\/+P46KMPO6aYncQEs8HBTLz66ivx5pvfjPn5u7G6+lAJEXBuCVWARJrN7Y4HrKmp26mvCThcsbigdA\/OiEZjKz744P14++23njjsyOXG4he\/+Psjn0BrNcbeOT4+n59phy\/ZbDbROiYmxtulRCc5+hngrBKqAIkIVaA3ffJJRekenFGtPiqtkem7A4tnn322\/XUmcyVyubEol5dO9ZRIa7pYrbYe5fJSFApzkcuNxeXLLxy5lCjJ2GeAXiFUARKp1daV\/0APajS2BKLQg+r1zTMXSrSClnx+pmsItN9JltXVh06xAH1DqAIkUi4vdTwklctLqa8JOJqdZQajo8OprwfoD63pRa0eLoeVNA0NvRY\/+cn7TrEAPU2oAiQyNXW748HIFBHoHTvfKA8OZlJfD9C\/Go2tqFRWIp+fOXQU9PT0pFMsQM8RqgCJ7H4QSns9wNHtnDoiVAGepmZzO6rVtSgU5uKtt0b2DViy2aGYnb0jZAHOPKEKcGyfffb7jgeft99+K\/U1AUe380h+LjeW+nqA861aXdtzArZbw9vZ2Tvx6NGnqa8XYCehCnBslcpKx4PO97\/\/p6mvCTi6nddvPj+T+noAPv\/8i1KhYnHh0MlCFy9eiNnZO0qPgTNBqAIcW7G4YCQr9DDXL3CWtRreHqXZ7eBgJubn757qWGmAgwhVgGMTqkBv23n9fvJJJfX1ABykXt9sN7t95plnDiwRWl5+kPp6gfNFqAIcm1AFelejsWVyF9Czms3tKJeXOqaYdTu9UiotGtMMPBVCFeBYms3tuHz5csfDS6Wykvq6gKOp1dY7rl9TNYBeVa9vRqEwt2+J0OBgJpaXHwhXgFMlVAGOJZ+f6Xhgef755z2sQA8pl5eMQwf6zkEThK5efVm4ApwaoQpwZLun\/gwMDMTHH99LfV3A0RUKc+3rN5sdSn09ACep2dyOYnEhstmhfZvaOqEHnCShCnAk3QKVqanbqa8LOJ5XXvmj9jX853\/+\/dTXA3BaKpWVGB3d23tlcDBjWhBwYoQqwKF2lwsMDAzEyMiwY7TQY3Y3qf3lL\/8u9TUBnLZupUGZzBXPMcCJEKoA+2o0tmJiYnxPoJLJXHF0FnrQ7hNnrmPgPPnkk1XTz4ATJ1QBuvrHf\/y\/MTiY6RqoODILvWlnPxVNaoHz6MUX\/zDBMJ+fSX09QO8TqgAd9jud0ir58WYbetfIyB96C+RyY6mvB+Bpy+XG2vfB0dHh1NcD9D6hCvSxZnM7arX1WF19GKXSYpRKizExMR4TE+NRra61\/1ytth7Lyw+6NnNrKRYXUv88QHLN5rZrGjj3isUFJ\/aAEyVUgR7XbG7HxsbjePTo0yiVFmN6ejJGR4fj4sUL+wYkO9\/QHPZn3n33HadToA9Uq2t6CQDn3u6GtWmvB+h9QhXoEdXqWly79tV49dVX4urVlyOTuRIvvPBCPPPMM4cGI0lkMleiUllJ\/XMDJyOfn7GRAM61zz77\/Z6y5rTXBPQ+oQr0iMuXL59KeLJbNjsUxeKCMYPQZ7LZofZ1PjV1O\/X1ADxNzeZ2ZDKdDfiVQQInQagCPeKb37x14gFKLjcWxeJC\/OIXfx+12rogBfpUo7HVce2Xy0uprwngadrZqHtgYCCee+455c3AiRCqQA\/55JNKlMtL8ctf\/l3kcmPx\/e\/\/j3jjjW\/Ea69di5GRP45cbiympm7Hhx\/ORbG4EOXyUhSLC\/Hzny9GpbIS1epa1GrrRiLDOVOprHRsJmwkgPOi2dyO6enJPS+W5uY+SH1tQH8QqgBAn9vZT0UPAeC8aDS2ujblVwIJnCShCgD0uZ3H3pX+AP2u2dyOUmkxBgczewKVkZFh5c7AiRKqAECf27mhUP4H9LNKZSWuX8927SUnUAFOg1AFAPpYvb7ZMSo97fUAnIZGY6tr75SdJT8CFeA0CFUAoI9Vq2vtTUU+P5P6egBOWqWyElevvrzvpMNabT31NQL9S6gCAH3sgw\/eb28ubCyAflKvb3ZtRNs6maLcEXgahCoA0Mfee+87MTAwEF\/60nOprwXgJDSb2zE\/f3dPkHLx4sUoFOaMjQeeKqEKAPSxbHbIKGWgb1QqK12n+hQKc3qmAKkQqgBAn2o0tvRTAXpeo7EVy8sP9h2RrMwHSJNQBQD6VK223t54FIsLqa8H4Kgaja1YXX0Yb775za49UzKZK+5rwJkgVAGAPlUuL7U3IJXKSurrAThIs7kdy8sPYmJivOuplJ1hilIf4KwQqgBAnyoU5kz+Ac60VmnPflN8BgYG4sqVl2Jq6nZUq2uprxdgN6EKAPSpW7duClWAM6de34xSafHAICWTuRJTU7ejVlt3KgU404QqANCndm5QNHIE0tLqjzI9PblvWU8rSMnnZ5xIAXqKUAUA+tTOzYo3vcDT0gpRZmfvxPXr2X1DlIGBgchmh6JQmBOkAD1LqAIAfWjnOOWBgYHU1wP0t1pt\/UghysDAQORyY1EuL0WjsZX6ugGelFAFAPrQznHKQhXgpNVq6\/Hxxz87sC\/Kzt4o5fKS3k5AXxKqAEAfEqoAT6LZ3I56fTM2Nh7H6urDKJUWY3b2zoEhysjIcOTzM1EsLkS1uuYkCnAuCFUAoA\/tDFUGBzOprwc4W5rN7djYeByl0mJ8+OFcTE9PxsTE+IGNZHeX8Ny\/f88JFODcE6oAQB\/K52eEKkA0GluxsfE4lpcfxPz83WMFJ63ynVxuLPL5mahUVkwSA9hFqAIAfSiXG+t4o5z2eoBOjcZWlEqLJ1oiU69vxurqw\/jpT\/93vPvuO0dqGruzbKdcXopqdS1qtXUTwwCOSKgCAH2oUllpb5iMKoWzJ5O50r5GR0eHY2JivMP169m4detmvP76f9nzezsNDAzEpUuXjhyetJrGVqtrTp0AnAChCgD0qWZz29tmOIN2jzw\/DVevvtwRoLgXAJwOoQoAADxlO\/senZRWiGLqDsDTI1QBAIAUNBpbUS4vRbG40FaprLT7mlSra\/G3f3s\/isWFKBTmIp+faSsU5trf82\/\/9q9OogCkRKgCAAAAkIBQBQAAACABoQoAAABAAkIVAAAAgASEKgAAAAAJCFUAAAAAEhCqAAAAACQgVAEAAABIQKgCAAAAkIBQBQAAACABoQoAAABAAkIVAAAAgASEKgAAAAAJCFUAAAAAEhCqAAAAACTwn4U+fJ+Q3+ITAAAAAElFTkSuQmCC",'.
'"textArea3":"fourrrr4444"}';
preg_match_all("/\"data:image\\\\\\/png;base64,([^\"]+)/", $content, $matches);
print_r($matches[1]);
This prints:
Array
(
[0] => iVBORw0KGgoAAAANSUhEUgAABFUAAA...
[1] => iVBORw0KGgoAAAANSUhEUgAABFUAAA...
[2] => iVBORw0KGgoAAAANSUhEUgAABFUAAA...
)

php explode by comma ignore thousands seperator

I am scraping the following kind of strings from an external resource which I can't change:
["one item",0,0,2,0,1,"800.12"],
["another item",1,3,2,5,1,"1,713.59"],
(etc...)
I use the following code to explode the elements into an array.
<?php
$id = 0;
foreach($lines AS $line) {
$id = 0;
// remove brackets and line end comma's
$found_data[] = str_replace(array('],', '[',']', '"'), array('','','',''), $line);
// add data to array
$results[$id] = explode(',', $line);
}
Which works fine for the first line, but as the second line uses a comma for the thousands seperator of the last item, it fails there. So somehow I need to disable the explode to replace stuff between " characters.
If all values would be surrounded by " characters, I could just use something like
explode('","', $line);
However, unfortunately that's not the case here: some values are surrounded by ", some aren't (not always the same values are). So I'm a bit lost in how I should proceed. Anyone who can point me in the right direction?
You can use json_decode here since your input string appears to be a valid json string.
$str = '["another item",1,3,2,5,1,"1,713.59"]'
$arr = json_decode($str);
You can then access individual indices from resulting array or print the whole array using:
print_r($arr);
Output:
Array
(
[0] => another item
[1] => 1
[2] => 3
[3] => 2
[4] => 5
[5] => 1
[6] => 1,713.59
)

Use regular expression to extract attribute value for custom tag

Thanks for taking a look at this. I'm using PHP. I have a string like so:
[QUOTE="name: Max-Fischer, post: 486662533, member: 123"]I don't so much dance as rhythmically convulse.[/QUOTE]
And I want to pull out the values in the quotes and create an associative array like so:
["name" => "Max-Fischer", "post" => "486662533", "member" => "123"]
Then, I would like to remove the opening and closing [QUOTE] tags and replace them with custom HTML like so:
<blockquote>Max-Fischer wrote: I don't so much dance as rhythmically convulse.</blockquote>
So the main problem is creating the preg_match() or preg_replace() to handle first: grabbing the values out in an array, and second: removing the tags and replacing them with my custom content. I can figure out how to use the array to create the custom HTML, I just can't figure how to use regular expressions well enough to achieve it.
I tried a match like this to get the attribute values:
/(\S+)=[\"\']?((?:.(?![\"\']?\s+(?:\S+)=|[>\"\']))+.)[\"\']?/
But this only returns:
[QUOTE
And that's not even addressing how to put the values (if I can get them) into an array.
Thanks in advance for your time.
Cheers.
If the tag you're looking for is always going to be quote, then perhaps something a little simpler is possible:
$s ='"[QUOTE="name: Max-Fischer, post: 486662533, member: 123"]I don\'t so much dance as rhythmically convulse.[/QUOTE]';
$r = '/\[QUOTE="(.*?)"\](.*)\[\/QUOTE\]/';
$m = array();
$arr = array();
preg_match($r, $s, $m);
// m[0] = the initial string
// m[1] = the string of attributes
// m[2] = the quote itself
foreach(explode(',', $m[1]) as $valuepair) { // split the attributes on the comma
preg_match('/\s*(.*): (.*)/', $valuepair, $mm);
// mm[0] = the attribute pairing
// mm[1] = the attribute name
// mm[2] = the attribute value
$arr[$mm[1]] = $mm[2];
}
print_r($arr);
print $m[2] . "\n";
this gives the following output:
Array
(
[name] => Max-Fischer
[post] => 486662533
[member] => 123
)
I don't so much dance as rhythmically convulse.
If you want to handle the case where there is more than one quote in the string, we can do this by modifying the regex to be slightly less greedy, and then using preg_match_all, instead of preg_match
$s ='[QUOTE="name: Max-Fischer, post: 486662533, member: 123"]I don\'t so much dance as rhythmically convulse.[/QUOTE]';
$s .='[QUOTE="name: Some-Guy, post: 486562533, member: 1234"]Quidquid latine dictum sit, altum videtur[/QUOTE]';
$r = '/\[QUOTE="(.*?)"\](.*?)\[\/QUOTE\]/';
// ^ <--- added to make it less greedy
$m = array();
$arr = array();
preg_match_all($r, $s, $m, PREG_SET_ORDER);
// m[0] = the first quote
// m[1] = the second quote
// m[0][0] = the initial string
// m[0][1] = the string of attributes
// m[0][2] = the quote itself
// element for each quote found in the string
foreach($m as $match) { // since there is more than quote, we loop and operate on them individually
$quote = array();
foreach(explode(',', $match[1]) as $valuepair) { // split the attributes on the comma
preg_match('/\s*(.*): (.*)/', $valuepair, $mm);
// mm[0] = the attribute pairing
// mm[1] = the attribute name
// mm[2] = the attribute value
$quote[$mm[1]] = $mm[2];
}
$arr[] = $quote; // we now build a parent array, to hold each individual quote
}
print_r($arr);
This gives output like:
Array
(
[0] => Array
(
[name] => Max-Fischer
[post] => 486662533
[member] => 123
)
[1] => Array
(
[name] => Some-Guy
[post] => 486562533
[member] => 1234
)
)
I managed to resolve yout problem: to get an associative array. I hope it will help you.
Here is code
$str = <<< PP
[QUOTE=" name : Max-Fischer,post : 486662533,member : 123 "]I don't so much dance as rhythmically convulse.[/QUOTE]
PP;
preg_match_all('/^\[QUOTE=\"(.*?)\"\](?:.*?)]$/', $str, $matches);
preg_match_all('/([a-zA-Z0-9]+)\s+:\s+([a-zA-Z0-9]+)/', $matches[1][0], $result);
$your_data = array_combine($result[1],$result[2]);
echo "<pre>";
print_r($your_data);

Add delimiter in string coming from url in PHP

Merchant Id|Merchant|Website|Transaction In Period|Voids In Period|Gross Sales Amount|Total Commision in Period
9766|Mountains Plus Outdoor Gear|www.MPGear.com|1|0|88.91|8.89
12447|Meritline.com|www.meritline.com|5|0|52.86|3.71
16213|East Coast Fashions|www.discountstripper.com|1|0|32.27|3.23
17226|HRM USA|www.HeartRateMonitorsUSA.com|1|0|189.9|6.65
I am getting above string from url now now I want convert that string to array based on split delimiter |
But there is a problem after end of each new row there is not placed delimiter | so I want that to placed that delimiter after each row end.
Note :: all columns will be predefined and it will return same all time request.
I am using this code to convert that string to array . This code is working perfect if there will be all delimiter placed correctly in string.
$NumColumns = 6;
$Delim = "|";
$data = array_chunk(explode($Delim,$contents), $NumColumns);
output will be like this
Array
(
[0] => Array
(
[0] => Merchant Id
[1] => Merchant
[2] => Website
[3] => Transaction In Period
[4] => Voids In Period
[5] => Gross Sales Amount
[6] => Total Commision in Period
)
[1] => Array
(
[0] => 9766
[1] => Mountains Plus Outdoor Gear
[2] => www.MPGear.com
[3] => 1
[4] => 0
[5] => 88.91
[6] => 8.89
)
-----
----
)
Try using str_getcsv or explode.
<?php
$data_from_url = "Merchant Id|Merchant|Website|Transaction In Period|Voids In Period|Gross Sales Amount|Total Commision in Period
9766|Mountains Plus Outdoor Gear|www.MPGear.com|1|0|88.91|8.89
12447|Meritline.com|www.meritline.com|5|0|52.86|3.71
16213|East Coast Fashions|www.discountstripper.com|1|0|32.27|3.23
17226|HRM USA|www.HeartRateMonitorsUSA.com|1|0|189.9|6.65";
$splitted_data = explode(PHP_EOL, $data_from_url);
/**
* print_r($splitted_data) will be
* Array
* (
[0] => "Merchant Id|Merchant|Website|Transaction In Period|Voids In Period|Gross Sales Amount|Total Commision in Period"
[1] => "9766|Mountains Plus Outdoor Gear|www.MPGear.com|1|0|88.91|8.89"
...
* )
*/
// You can now iterate through the lines
$output1 = array();
foreach($splitted_data as $row) {
$output1[] = str_getcsv(trim($row), '|'); // parses a
// OR
//$output1[] = explode('|', trim($row));
}
// OR use array_map with callback function
$output2 = array_map(function($line){ return explode('|', trim($line)); }, $splitted_data);
$output3 = array_map(function($line){ return str_getcsv(trim($line), '|'); }, $splitted_data);
var_dump($output1, $output2, $output3); // The result you want to achive
?>
I would do this as a 2-step process. First split it into lines on the \n (newline) character, and then split each line on the | character.
You can do that in only a couple lines, like this:
$lines = explode("\n", $contents);
$data = array_map(function($line) {return explode('|', trim($line));}, $lines);
You can see this working here: http://phpfiddle.org/main/code/9fv-h2c
Once I split the contents into individual lines, I'm using the array_map() function to apply the same operation to every element of the array (every line).
array_map() calls a callback function (which I define as an anonymous function) for each element in the array. In this instance, I've defined a simple function that trims the line to remove any extra spaces there may be, and then splits it on the | character to get the individual fields.
If the array_map line is a bit complicated, I could illustrate how it's working by rewriting it without the anonymous function like this:
function processLine($line) {
$line = trim($line);
$fields = explode('|', $line);
return $fields;
}
$data = array_map('processLine', $lines);
...or even rewriting it without using array_map like this:
function processLine($line) {
$line = trim($line);
$fields = explode('|', $line);
return $fields;
}
$data = array();
foreach ($lines as $l) {
$data[] = processLine($l);
}
If I understand your question correctly, you're trying to split the data, but want to keep the delimiter | as part of the string.
Using preg_split, you can do this like so:
$arr = preg_split('/([^|]*\|)/', $string, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
The expression matches zero or more chars that aren't | ([^|]*)
and matches the delimiting |. the combination of the two is used as delimiter. In other words, everything is a delimiter now.
That's why we have to use the predefined constant PREG_SPLIT_DELIM_CAPUTRE.
Of course, between the delimiters, there's nothing, but preg_split will capture this nothing-ness, too and add empty matches in the resulting array. That's why we have to use the other predefined constant: PREG_SPLIT_NO_EMPTY.
The two constants are combined by means of the bitwise OR operator |
$output = explode(PHP_EOL, $input);
foreach($output as &$line)
{//$line is a reference here, important!
$line = preg_split('/([^|]*\|)/', $line, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
}
This should produce the desired ouptut, assuming you want the delimiting | kept in the strings. if not:
$output = explode(PHP_EOL, $input);
foreach($output as &$line)
{
$line = explode('|', $line);
}
That's it, really...

Highlight match result in subject string from preg_match_all()

I am trying to highlight the subject string with the returned $matches array from preg_match_all(). Let me start off with an example:
preg_match_all("/(.)/", "abc", $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
This will return:
Array
(
[0] => Array
(
[0] => Array
(
[0] => a
[1] => 0
)
[1] => Array
(
[0] => a
[1] => 0
)
)
[1] => Array
(
[0] => Array
(
[0] => b
[1] => 1
)
[1] => Array
(
[0] => b
[1] => 1
)
)
[2] => Array
(
[0] => Array
(
[0] => c
[1] => 2
)
[1] => Array
(
[0] => c
[1] => 2
)
)
)
What I want to do in this case is to highlight the overall consumed data AND each backreference.
Output should look like this:
<span class="match0">
<span class="match1">a</span>
</span>
<span class="match0">
<span class="match1">b</span>
</span>
<span class="match0">
<span class="match1">c</span>
</span>
Another example:
preg_match_all("/(abc)/", "abc", $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
Should return:
<span class="match0"><span class="match1">abc</span></span>
I hope this is clear enough.
I want to highlight overall consumed data AND highlight each backreference.
Thanks in advance. If anything is unclear, please ask.
Note: It must not break html. The regex AND input string are both unknown by the code and completely dynamic. So the search string can be html and the matched data can contain html-like text and what not.
This seems to behave right for all the examples I've thrown at it so far. Note that I've broken the abstract highlighting part from the HTML-mangling part for reusability in other situations:
<?php
/**
* Runs a regex against a string, and return a version of that string with matches highlighted
* the outermost match is marked with [0]...[/0], the first sub-group with [1]...[/1] etc
*
* #param string $regex Regular expression ready to be passed to preg_match_all
* #param string $input
* #return string
*/
function highlight_regex_matches($regex, $input)
{
$matches = array();
preg_match_all($regex, $input, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
// Arrange matches into groups based on their starting and ending offsets
$matches_by_position = array();
foreach ( $matches as $sub_matches )
{
foreach ( $sub_matches as $match_group => $match_data )
{
$start_position = $match_data[1];
$end_position = $start_position + strlen($match_data[0]);
$matches_by_position[$start_position]['START'][] = $match_group;
$matches_by_position[$end_position]['END'][] = $match_group;
}
}
// Now proceed through that array, annotoating the original string
// Note that we have to pass through BACKWARDS, or we break the offset information
$output = $input;
krsort($matches_by_position);
foreach ( $matches_by_position as $position => $matches )
{
$insertion = '';
// First, assemble any ENDING groups, nested highest-group first
if ( is_array($matches['END']) )
{
krsort($matches['END']);
foreach ( $matches['END'] as $ending_group )
{
$insertion .= "[/$ending_group]";
}
}
// Then, any STARTING groups, nested lowest-group first
if ( is_array($matches['START']) )
{
ksort($matches['START']);
foreach ( $matches['START'] as $starting_group )
{
$insertion .= "[$starting_group]";
}
}
// Insert into output
$output = substr_replace($output, $insertion, $position, 0);
}
return $output;
}
/**
* Given a regex and a string containing unescaped HTML, return a blob of HTML
* with the original string escaped, and matches highlighted using <span> tags
*
* #param string $regex Regular expression ready to be passed to preg_match_all
* #param string $input
* #return string HTML ready to display :)
*/
function highlight_regex_as_html($regex, $raw_html)
{
// Add the (deliberately non-HTML) highlight tokens
$highlighted = highlight_regex_matches($regex, $raw_html);
// Escape the HTML from the input
$highlighted = htmlspecialchars($highlighted);
// Substitute the match tokens with desired HTML
$highlighted = preg_replace('#\[([0-9]+)\]#', '<span class="match\\1">', $highlighted);
$highlighted = preg_replace('#\[/([0-9]+)\]#', '</span>', $highlighted);
return $highlighted;
}
NOTE: As hakra has pointed out to me on chat, if a sub-group in the regex can occur multiple times within one overall match (e.g. '/a(b|c)+/'), preg_match_all will only tell you about the last of those matches - so highlight_regex_matches('/a(b|c)+/', 'abc') returns '[0]ab[1]c[/1][/0]' not '[0]a[1]b[/1][1]c[/1][/0]' as you might expect/want. All matching groups outside that will still work correctly though, so highlight_regex_matches('/a((b|c)+)/', 'abc') gives '[0]a[1]b[2]c[/2][/1][/0]' which is still a pretty good indication of how the regex matched.
Reading your comment under the first answer, I'm pretty sure you did not really formulated the question as you intended to. However following to what you ask for in concrete that is:
$pattern = "/(.)/";
$subject = "abc";
$callback = function($matches) {
if ($matches[0] !== $matches[1]) {
throw new InvalidArgumentException(
sprintf('you do not match thee requirements, go away: %s'
, print_r($matches, 1))
);
}
return sprintf('<span class="match0"><span class="match1">%s</span></span>'
, htmlspecialchars($matches[1]));
};
$result = preg_replace_callback($pattern, $callback, $subject);
Before you now start to complain, take a look first where your shortcoming in describing the problem is. I have the feeling you actually want to actually parse the result for matches. However you want to do sub-matches. That does not work unless you parse as well the regular expression to find out which groups are used. That is not the case so far, not in your question and also not in this answer.
So please this example only for one subgroup which must also be the whole pattern as an requirement. Apart from that, this is fully dynamic.
Related:
How to get all captures of subgroup matches with preg_match_all()?
Ignore html tags in preg_replace
I am not too familiar with posting on stackoverflow so I hope I don't mess this up. I do this in almost the same way as #IMSoP, however, slightly different:
I store the tags like this:
$tags[ $matched_pos ]['open'][$backref_nr] = "open tag";
$tags[ $matched_pos + $len ]['close'][$backref_nr] = "close tag";
As you can see, almost identical to #IMSoP.
Then I construct the string like this, instead of inserting and sorting like #IMSoP does:
$finalStr = "";
for ($i = 0; $i <= strlen($text); $i++) {
if (isset($tags[$i])) {
foreach ($tags[$i] as $tag) {
foreach ($tag as $span) {
$finalStr .= $span;
}
}
}
$finalStr .= $text[$i];
}
Where $text is the text used in preg_match_all()
I think my solution is slightly faster than #IMSoP's since he has to sort every time and what not. But I am not sure.
My main worry right now is performance. But it might just not be possible to make it work any faster than this?
I have been trying to get a recursive preg_replace_callback() thing going, but I've not been able to make it work so far. preg_replace_callback() seems to be very, very fast. Much faster than what I am currently doing anyway.
A quick mashup, why use regex?
$content = "abc";
$endcontent = "";
for($i = 0; $i > strlen($content); $i++)
{
$endcontent .= "<span class=\"match0\"><span class=\"match1\">" . $content[$i] . "</span></span>";
}
echo $endcontent;

Categories