<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>131691</bug_id>
          
          <creation_ts>2014-04-15 13:21:42 -0700</creation_ts>
          <short_desc>JSVirtualMachine could disappear and take its external object graph with it</short_desc>
          <delta_ts>2016-09-17 07:16:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000940</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-15 13:21:42 -0700</bug_when>
    <thetext>JSVirtualMachine is a thin Objective-C wrapper around JSC::VM. It is also used to store the external graph of Objective-C object references that JSC will use during garbage collection to determine object liveness. Because these JSVirtualMachine wrappers are cached in a weak map, they could disappear even though the VM is still alive taking their external object graphs with them. This could lead to premature reclamation, which is bad. We should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000951</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-04-15 14:08:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/16625128&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002723</commentid>
    <comment_count>2</comment_count>
      <attachid>229841</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-21 17:15:16 -0700</bug_when>
    <thetext>Created attachment 229841
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002726</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-21 17:16:46 -0700</bug_when>
    <thetext>Attachment 229841 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002748</commentid>
    <comment_count>4</comment_count>
      <attachid>229847</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-21 18:37:41 -0700</bug_when>
    <thetext>Created attachment 229847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002751</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-21 18:38:52 -0700</bug_when>
    <thetext>Attachment 229847 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002757</commentid>
    <comment_count>6</comment_count>
      <attachid>229847</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-21 18:51:34 -0700</bug_when>
    <thetext>Comment on attachment 229847
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=229847&amp;action=review

&gt; Source/JavaScriptCore/API/APIData.h:36
&gt; +class APIData {

Maybe this can just be a struct rather than having getters and setters.

&gt; Source/JavaScriptCore/API/APIData.h:40
&gt; +    APIData()
&gt; +    {
&gt; +    }

Should just omit this. Generated one should be fine.

&gt; Source/JavaScriptCore/API/APIData.h:62
&gt; +    RetainPtr&lt;CFTypeRef&gt; m_externalObjectGraph;
&gt; +    RetainPtr&lt;CFTypeRef&gt; m_externalRememberedSet;

Why so coy about the fact that the type is NSMapTable? Is there a problem compiling that when it’s non-Objective-C++?

&gt; Source/JavaScriptCore/API/JSVirtualMachine.mm:118
&gt; +        vm.apiData.setExternalObjectGraph(RetainPtr&lt;CFTypeRef&gt;(
&gt; +            [[NSMapTable alloc] initWithKeyOptions:weakIDOptions valueOptions:strongIDOptions capacity:0]));

This leaks. It needs to be adoptNS, not just a conversion to RetainPtr.

&gt; Source/JavaScriptCore/API/JSVirtualMachine.mm:125
&gt; +        vm.apiData.setExternalRememberedSet(RetainPtr&lt;CFTypeRef&gt;(
&gt; +            [[NSMapTable alloc] initWithKeyOptions:weakIDOptions valueOptions:integerOptions capacity:0]));

Ditto.

&gt; Source/JavaScriptCore/API/JSVirtualMachine.mm:187
&gt; +    NSMapTable *externalObjectGraph = static_cast&lt;id&gt;(vm.apiData.externalObjectGraph());

Why is this one casting to &lt;id&gt;, but all the others casting to NSMapTable?

&gt; Source/JavaScriptCore/runtime/VM.h:213
&gt; +        APIData apiData;

Why so high in the class? Is this in some sort of order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002778</commentid>
    <comment_count>7</comment_count>
      <attachid>229854</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-21 20:01:46 -0700</bug_when>
    <thetext>Created attachment 229854
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002781</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-21 20:04:27 -0700</bug_when>
    <thetext>Attachment 229854 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002786</commentid>
    <comment_count>9</comment_count>
      <attachid>229856</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-21 20:34:32 -0700</bug_when>
    <thetext>Created attachment 229856
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002787</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-21 20:35:41 -0700</bug_when>
    <thetext>Attachment 229856 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002917</commentid>
    <comment_count>11</comment_count>
      <attachid>229887</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 09:20:06 -0700</bug_when>
    <thetext>Created attachment 229887
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002919</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 09:22:52 -0700</bug_when>
    <thetext>Attachment 229887 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/APIData.h:26:  #ifndef header guard has wrong style, please use: APIData_h  [build/header_guard] [5]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002928</commentid>
    <comment_count>13</comment_count>
      <attachid>229890</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 09:47:18 -0700</bug_when>
    <thetext>Created attachment 229890
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002930</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 09:48:47 -0700</bug_when>
    <thetext>Attachment 229890 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/APIData.h:26:  #ifndef header guard has wrong style, please use: APIData_h  [build/header_guard] [5]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003088</commentid>
    <comment_count>15</comment_count>
      <attachid>229918</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 16:14:17 -0700</bug_when>
    <thetext>Created attachment 229918
Fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003089</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 16:15:30 -0700</bug_when>
    <thetext>Attachment 229918 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/APIData.h:26:  #ifndef header guard has wrong style, please use: APIData_h  [build/header_guard] [5]
Total errors found: 5 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003134</commentid>
    <comment_count>17</comment_count>
      <attachid>229933</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 17:50:54 -0700</bug_when>
    <thetext>Created attachment 229933
I have a dream</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003135</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 17:53:04 -0700</bug_when>
    <thetext>Attachment 229933 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/APIData.h:26:  #ifndef header guard has wrong style, please use: APIData_h  [build/header_guard] [5]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003153</commentid>
    <comment_count>19</comment_count>
      <attachid>229941</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 19:08:07 -0700</bug_when>
    <thetext>Created attachment 229941
that one day</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003156</commentid>
    <comment_count>20</comment_count>
      <attachid>229943</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 19:11:21 -0700</bug_when>
    <thetext>Created attachment 229943
we will live in a world</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003157</commentid>
    <comment_count>21</comment_count>
      <attachid>229944</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 19:25:08 -0700</bug_when>
    <thetext>Created attachment 229944
where a patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003158</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-22 19:26:57 -0700</bug_when>
    <thetext>Attachment 229944 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:161:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:170:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:193:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/tests/MemoryManagementTests.mm:196:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Source/JavaScriptCore/API/APIData.h:26:  #ifndef header guard has wrong style, please use: APIData_h  [build/header_guard] [5]
Total errors found: 5 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003160</commentid>
    <comment_count>23</comment_count>
      <attachid>229946</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-04-22 19:42:16 -0700</bug_when>
    <thetext>Created attachment 229946
will be judged</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029851</commentid>
    <comment_count>24</comment_count>
      <attachid>229946</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-08-18 13:40:56 -0700</bug_when>
    <thetext>Comment on attachment 229946
will be judged

is this patch still relevant?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230827</commentid>
    <comment_count>25</comment_count>
      <attachid>229946</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-09-17 07:16:24 -0700</bug_when>
    <thetext>Comment on attachment 229946
will be judged

Hi,

Apologies that your patch was not reviewed in a timely manner. Since it&apos;s now quite old, I am removing it from the review request queue. Please consider rebasing it on trunk and resubmitting.

To increase the chances of getting a review, consider using &apos;Tools/Scripts/webkit-patch upload --suggest-reviewers&apos; to CC reviewers who might be interested in this bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229841</attachid>
            <date>2014-04-21 17:15:16 -0700</date>
            <delta_ts>2014-04-21 18:37:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131691-20140421171456.patch</filename>
            <type>text/plain</type>
            <size>49649</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElEYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0FQSURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBBUElEYXRhX2gKKyNkZWZpbmUgQVBJRGF0YV9oCisKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitj
bGFzcyBBUElEYXRhIHsKK3B1YmxpYzoKKyAgICBBUElEYXRhKCkKKyAgICB7CisgICAgfQorCisg
ICAgQ0ZUeXBlUmVmIGV4dGVybmFsT2JqZWN0R3JhcGgoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKTsKKyAgICB9CisgICAgdm9pZCBzZXRF
eHRlcm5hbE9iamVjdEdyYXBoKFJldGFpblB0cjxDRlR5cGVSZWY+JiYgZXh0ZXJuYWxPYmplY3RH
cmFwaCkKKyAgICB7CisgICAgICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IGV4dGVybmFsT2Jq
ZWN0R3JhcGg7CisgICAgfQorCisgICAgQ0ZUeXBlUmVmIGV4dGVybmFsUmVtZW1iZXJlZFNldCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQuZ2V0
KCk7CisgICAgfQorICAgIHZvaWQgc2V0RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KFJldGFpblB0cjxD
RlR5cGVSZWY+JiYgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KQorICAgIHsKKyAgICAgICAgbV9leHRl
cm5hbFJlbWVtYmVyZWRTZXQgPSBleHRlcm5hbFJlbWVtYmVyZWRTZXQ7CisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBtX2V4dGVybmFsT2JqZWN0R3JhcGg7
CisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQ7Cit9Owor
CisjZWxzZQorCitjbGFzcyBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9F
TkFCTEVECisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQVBJRGF0YV9oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZp
c2lvbiAxNjc2MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgKyAoSlNWaXJ0dWFsTWFjaGlu
ZSAqKXdyYXBwZXJGb3JKU0NvbnRleAogQGltcGxlbWVudGF0aW9uIEpTVmlydHVhbE1hY2hpbmUg
ewogICAgIEpTQ29udGV4dEdyb3VwUmVmIG1fZ3JvdXA7CiAgICAgTlNNYXBUYWJsZSAqbV9jb250
ZXh0Q2FjaGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5T
TWFwVGFibGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OwogfQogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdApAQCAtMTEwLDEzICsxMDgsMjIgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGV4
dEdyb3VwUmVmOgogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5T
UG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBl
cnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBl
cnNvbmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0
V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFj
aXR5OjBdOwotICAgIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0
aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9u
c09iamVjdFBlcnNvbmFsaXR5OwotICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFtbTlNNYXBU
YWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25z
OnN0cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTowXTsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09w
dGlvbnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBO
U1BvaW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbFJlbWVt
YmVyZWRTZXQgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURP
cHRpb25zIHZhbHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXTsKKyAgICBKU0M6
OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgoKSkgeworICAgICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5j
dGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7Cisg
ICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25zID0gTlNQb2lu
dGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7CisgICAgICAgIHZtLmFwaURhdGEuc2V0RXh0ZXJuYWxPYmplY3RHcmFwaChSZXRhaW5Q
dHI8Q0ZUeXBlUmVmPigKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhL
ZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9ucyBjYXBh
Y2l0eTowXSkpOworICAgIH0KKworICAgIGlmICghdm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVy
ZWRTZXQoKSkgeworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlv
bnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2Jq
ZWN0UGVyc29uYWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdl
ck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5j
dGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFwaURhdGEuc2V0RXh0ZXJuYWxS
ZW1lbWJlcmVkU2V0KFJldGFpblB0cjxDRlR5cGVSZWY+KAorICAgICAgICAgICAgW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6
aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF0pKTsKKyAgICB9CiAgICAKICAgICBbSlNWTVdyYXBw
ZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApA
QCAtMTI3LDggKzEzNCw2IEBAIC0gKHZvaWQpZGVhbGxvYwogewogICAgIEpTQ29udGV4dEdyb3Vw
UmVsZWFzZShtX2dyb3VwKTsKICAgICBbbV9jb250ZXh0Q2FjaGUgcmVsZWFzZV07Ci0gICAgW21f
ZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRT
ZXQgcmVsZWFzZV07CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCkBAIC0xNTksNyArMTY0LDgg
QEAgLSAoYm9vbClpc09sZEV4dGVybmFsT2JqZWN0OihpZClvYmplY3QKIC0gKHZvaWQpYWRkRXh0
ZXJuYWxSZW1lbWJlcmVkT2JqZWN0OihpZClvYmplY3QKIHsKICAgICBBU1NFUlQoW3NlbGYgaXNP
bGRFeHRlcm5hbE9iamVjdDpvYmplY3RdKTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQg
c2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsK
KyAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNfY2FzdDxOU01h
cFRhYmxlICo+KHRvSlMobV9ncm91cCktPmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkp
OworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0KIAogLSAodm9pZClhZGRNYW5hZ2VkUmVm
ZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgpAQCAtMTcyLDE4ICsxNzgsMjAg
QEAgLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3QgdwogICAgIAogICAgIGlm
ICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKKworICAgIEpTQzo6Vk0mIHZtID0gKnRv
SlMobV9ncm91cCk7IAorICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgaWYg
KFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b3duZXJdICYmICFbc2VsZiBpc09sZEV4dGVybmFs
T2JqZWN0Om9iamVjdF0pCiAgICAgICAgIFtzZWxmIGFkZEV4dGVybmFsUmVtZW1iZXJlZE9iamVj
dDpvd25lcl07Ci0gCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW21fZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworCisgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PGlkPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0
R3JhcGgoKSk7CisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2JqZWN0
R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykgewogICAg
ICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7
CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVy
c29uYWxpdHk7CiAgICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5p
dFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25z
IGNhcGFjaXR5OjFdOwogCi0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0
Om93bmVkT2JqZWN0cyBmb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFw
aCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07CiAgICAgICAgIFtvd25lZE9i
amVjdHMgcmVsZWFzZV07CiAgICAgfQogCkBAIC0yMDIsOSArMjEwLDExIEBAIC0gKHZvaWQpcmVt
b3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9K
UyhtX2dyb3VwKSk7Ci0gICAgCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW21fZXh0
ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworICAgIEpTQzo6Vk0mIHZtID0g
KnRvSlMobV9ncm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKworICAg
IE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxl
ICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaCgpKTsgCisgICAgTlNNYXBUYWJsZSAq
b3duZWRPYmplY3RzID0gW2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsK
ICAgICBpZiAoIW93bmVkT2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgCkBAIC0yMTgsOCAr
MjI4LDggQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplYwogICAgICAg
ICBOU01hcFJlbW92ZShvd25lZE9iamVjdHMsIG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9i
amVjdHMgY291bnRdKSB7Ci0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2Jq
ZWN0Rm9yS2V5Om93bmVyXTsKLSAgICAgICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92
ZU9iamVjdEZvcktleTpvd25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92
ZU9iamVjdEZvcktleTpvd25lcl07CisgICAgICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+
KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkpIHJlbW92ZU9iamVjdEZvcktleTpv
d25lcl07CiAgICAgfQogfQogCkBAIC0yNTAsMjUgKzI2MCwxMiBAQCAtICh2b2lkKWFkZENvbnRl
eHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgCiAgICAgTlNNYXBJbnNlcnQobV9jb250ZXh0Q2FjaGUs
IGdsb2JhbENvbnRleHQsIHdyYXBwZXIpOwogfQogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxP
YmplY3RHcmFwaAotewotICAgIHJldHVybiBtX2V4dGVybmFsT2JqZWN0R3JhcGg7Ci19Ci0KLS0g
KE5TTWFwVGFibGUgKilleHRlcm5hbFJlbWVtYmVyZWRTZXQKLXsKLSAgICByZXR1cm4gbV9leHRl
cm5hbFJlbWVtYmVyZWRTZXQ7Ci19Ci0KIEBlbmQKIAogdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RH
cmFwaChKU0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvciwgdm9pZCogcm9vdCkK
IHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmly
dHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBS
ZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlmICghdmlydHVhbE1hY2hpbmUpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBbdmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4
dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEu
ZXh0ZXJuYWxPYmplY3RHcmFwaCgpKTsKICAgICAgICAgVmVjdG9yPHZvaWQqPiBzdGFjazsKICAg
ICAgICAgc3RhY2suYXBwZW5kKHJvb3QpOwogICAgICAgICB3aGlsZSAoIXN0YWNrLmlzRW1wdHko
KSkgewpAQCAtMjg4LDExICsyODUsOCBAQCB2b2lkIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoKEpT
Qzo6Vk0mIHZtCiB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpWTSYgdm0sIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVyQ2FjaGUg
d3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAgICBpZiAoIXZp
cnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01hcFRhYmxlICpl
eHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2JqZWN0R3JhcGhd
OwotICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbdmlydHVhbE1h
Y2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XTsKKyAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRl
cm5hbE9iamVjdEdyYXBoKCkpOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVy
ZWRTZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0KCkpOwogICAgICAgICBmb3IgKGlkIGtleSBpbiBleHRlcm5hbFJlbWVtYmVyZWRT
ZXQpIHsKICAgICAgICAgICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9i
amVjdEdyYXBoIG9iamVjdEZvcktleTprZXldOwogICAgICAgICAgICAgZm9yIChpZCBvd25lZE9i
amVjdCBpbiBvd25lZE9iamVjdHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHJldmlzaW9uIDE2NzYxNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDYgQEAgSlNDb250ZXh0R3JvdXBSZWYgZ2V0R3JvdXBG
cm9tVmlydHVhbE1hYwogLSAoSlNDb250ZXh0ICopY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6
KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0OwogLSAodm9pZClhZGRDb250ZXh0OihK
U0NvbnRleHQgKil3cmFwcGVyIGZvckdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJl
ZilnbG9iYWxDb250ZXh0OwogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxPYmplY3RHcmFwaDsK
LQogQGVuZAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5
TWFuYWdlbWVudFRlc3RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKKyNpZiBK
U0NfT0JKQ19BUElfRU5BQkxFRAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOwor
CisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5h
Z2VtZW50VGVzdHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKKworI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECisKK2V4dGVybiAiQyIgdm9pZCBjaGVja1Jlc3VsdChOU1N0cmluZyAqZGVzY3Jp
cHRpb24sIGJvb2wgcGFzc2VkKTsKKworZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJi
YWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworZXh0ZXJuICJDIiB2b2lkIEpT
U3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworCitAaW50
ZXJmYWNlIE9wYXF1ZU9iakNPYmplY3QgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gT3BhcXVlT2JqQ09iamVjdAorKyAoT3BhcXVlT2JqQ09iamVjdCAqKW9wYXF1ZU9iamVjdAor
eworICAgIHJldHVybiBbW3NlbGYgYWxsb2NdIGluaXRdOworfQorCistIChpbnN0YW5jZXR5cGUp
aW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIHJldHVybiBzZWxmOworfQorQGVuZAorCitAaW50ZXJmYWNlIEpT
Q29sbGVjdGlvbiA6IE5TT2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUg
Zm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJp
bmcgKilrZXk7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24geworICAgIE5T
TXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAor
ICAgIF9kaWN0ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAKKyAg
ICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZv
cktleTooTlNTdHJpbmcgKilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZh
bHVlID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOworICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUp
IHsKKyAgICAgICAgSlNWYWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsK
KyAgICAgICAgaWYgKG9sZFZhbHVlKQorICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmly
dHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93
bmVyOnNlbGZdOworICAgIH0KKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pT
TWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNv
bnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0
aE93bmVyOnNlbGZdOworICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTpr
ZXldOworfQorCistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7Cisg
ICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5
XTsKKyAgICBpZiAoIW1hbmFnZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1
cm4gW21hbmFnZWRWYWx1ZSB2YWx1ZV07Cit9CitAZW5kCisKK0Bwcm90b2NvbCBDbGlja2FibGVF
eHBvcnRzIDxKU0V4cG9ydD4KK0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOwor
QHByb3BlcnR5IChhc3NpZ24pIEpTVmFsdWUgKndlYWtPbmNsaWNrOworQGVuZAorCitAaW50ZXJm
YWNlIENsaWNrYWJsZSA6IE5TT2JqZWN0PENsaWNrYWJsZUV4cG9ydHM+CistICh2b2lkKWNsaWNr
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gQ2xpY2thYmxlIHsKKyAgICBKU01hbmFnZWRWYWx1
ZSAqbV93ZWFrT25jbGlja0hhbmRsZXI7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlja0hh
bmRsZXI7Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBp
bml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAg
IG1fd2Vha09uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTp2YWx1ZV07Cit9CistICh2b2lkKXNldE9uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQorewor
ICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOnZhbHVlXTsKKyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOm1fb25jbGlja0hhbmRsZXIgd2l0aE93bmVyOnNlbGZdOworfQorLSAoSlNWYWx1
ZSAqKXdlYWtPbmNsaWNrCit7CisgICAgcmV0dXJuIFttX3dlYWtPbmNsaWNrSGFuZGxlciB2YWx1
ZV07Cit9CistIChKU1ZhbHVlICopb25jbGljaworeworICAgIHJldHVybiBbbV9vbmNsaWNrSGFu
ZGxlciB2YWx1ZV07Cit9CistICh2b2lkKWNsaWNrCit7CisgICAgaWYgKCFtX29uY2xpY2tIYW5k
bGVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9v
bmNsaWNrSGFuZGxlciB2YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltO
U0FycmF5IGFycmF5XV07Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgTWVtb3J5TWFuYWdlbWVudFRl
c3RzIDogTlNPYmplY3QKKysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdDsKKysgKHZvaWQp
YXZvaWRNb2RpZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0OworKyAodm9pZCliYWdP
ZkpTTWFuYWdlZFZhbHVlc1Rlc3Q7CisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVy
aW5nRWRlbkNvbGxlY3Rpb25UZXN0OworKyAodm9pZClkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGlu
ZVdyYXBwZXJUZXN0OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVtb3J5TWFuYWdlbWVudFRl
c3RzCisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdOworICAgICAgICBDbGlja2FibGUgKmNsaWNrYWJsZSA9IFtbQ2xpY2thYmxlIGFsbG9jXSBp
bml0XTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAg
Y29udGV4dFtAImNsaWNrYWJsZSJdID0gY2xpY2thYmxlOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xp
Y2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJsZS5vbmNsaWNrID0gZnVuY3Rp
b24oKSB7IFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKKyAgICAgICAgICAg
ICAgICB9OyBcCisgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJsZS53
ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgcmV0dXJuICdmb28n
OyBcCisgICAgICAgICAgICAgICAgfTsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NsaWNrYWJs
ZSBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhh
bmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCJjbGlja2FibGUub25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNr
IHN0aWxsIGFyb3VuZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNV
bmRlZmluZWRdKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAiY2xpY2thYmxlLndlYWtPbmNsaWNrIl07CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIndlYWtPbmNsaWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVs
bF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiIFwKKyAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAg
ICAgY2xpY2thYmxlID0gbnVsbDsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgeworICAgICAgICAgICAgW2NsaWNrYWJsZSBjbGlja107CisgICAgICAgICAgICBKU1Zh
bHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAg
ICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUi
LCAhW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAgfQorICAgIH0KK30KKworKyAodm9pZClhdm9p
ZE1vZGlmeWluZ05TTWFwVGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3QKK3sKKyAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2Nd
IGluaXRdOworICAgICAgICBKU1ZhbHVlICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVj
dCAqcm9vdE9iamVjdCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAg
IEpTQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsK
KyAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqanNDb2xsZWN0aW9uID0gW0pTVmFsdWUg
dmFsdWVXaXRoT2JqZWN0OmNvbGxlY3Rpb24gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAgSlNNYW5hZ2VkVmFsdWUgKndlYWtDb2xsZWN0aW9uID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTpqc0NvbGxlY3Rpb24gYW5kT3duZXI6cm9vdE9iamVjdF07CisgICAg
ICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOndlYWtD
b2xsZWN0aW9uIHdpdGhPd25lcjptZXNzYWdlXTsKKyAgICAgICAgICAgIEpTU3luY2hyb25vdXNH
YXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsK
KyAgICAgICAgfQorICAgIH0KK30KKworKyAodm9pZCliYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3QK
K3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZh
dGVQcm9wZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworICAgICAgICAKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgSlND
b250ZXh0IGFuZCBnaXZlIGl0IGEgcm9vdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGUgYmFnIG9m
IEpTTWFuYWdlZFZhbHVlcy4KKyAgICAgICAgICAgIEpTQ29udGV4dCogY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RP
YmplY3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICAgICAgY29u
dGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8v
IEFkZCBhIGJ1bmNoIG9mIHByb3BlcnRpZXMgdG8gdGhlIGJhZyBvZiBKU01hbmFnZWRWYWx1ZXMu
CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
Om15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAg
W215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0cnVl
IGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxv
ISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKyAgICAgICAgICAgIFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGlu
Q29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6
Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAgICAgICBbbXlQcml2
YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRl
eHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHByb3BlcnRpZXMgYXJlIHN0aWxsIHByZXNlbnQgYWZ0ZXIgYSBmdWxsIGNv
bGxlY3Rpb24uCisgICAgICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBKU1ZhbHVlICptZXNzYWdl
ID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAg
ICAgICBKU1ZhbHVlICpteU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5TnVsbCA9IFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAg
ICAgICAgICBKU1ZhbHVlICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRlUHJvcGVydGll
cyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJpc19oYW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYmIFtpc0hhbSB0
b0Jvb2xdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBoZWxsbyEiLCBb
bWVzc2FnZSBpc1N0cmluZ10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6W21lc3NhZ2Ug
dG9TdHJpbmddXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyA0MiIs
IFtteU51bWJlciBpc051bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQyKTsKKyAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBbZGVmaW5pdGVs
eU51bGwgaXNOdWxsXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lmX3Vu
ZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5kZWZpbmVkXSk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIE5vdyB0aGF0IHRoZSBKU0NvbnRleHQg
aGFzIGRpc2FwcGVhcmVkLCBtYWtlIHN1cmUgYWxsIG9mIHRoZSBKU01hbmFnZWRWYWx1ZXMgaGF2
ZSBiZWVuIGNsZWFyZWQuCisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJtZXNzYWdlIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZv
cktleTpAIm1lc3NhZ2UiXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIG5p
bCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdKTsKKyAg
ICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbmlsIiwgIVtteVByaXZhdGVQ
cm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl0pOworICAgICAgICBjaGVj
a1Jlc3VsdChAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3Bl
cnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7CisgICAgfQorfQor
CisKKysgKHZvaWQpc2NhbkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRl
c3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRl
IHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2UgYW4gRWRlbkNv
bGxlY3Rpb24KKyAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5hbCBvYmplY3Qg
Z3JhcGguCisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVj
dCBvcGFxdWVPYmplY3RdOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICB9CisgICAgICAgIEpTU3luY2hyb25v
dXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsK
KyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qgb25seSByZWFj
aGFibGUgdmlhIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgKKyAgICAgICAgLy8gdGhyb3VnaCB0
aGUgb2JqZWN0IHdlIGFscmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xsZWN0aW9uLgor
ICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1
ZU9iamVjdF07CisgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZl
cmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJvb3RdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRl
IGEgbmV3IG1hbmFnZWQgSlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBrZXB0IGFsaXZlIGlmIHdl
IHByb3Blcmx5IHJlc2NhbgorICAgICAgICAvLyB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgor
ICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0gbmlsOworICAgICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzT2JqZWN0ID0gW0pTVmFs
dWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAg
ICAgIG1hbmFnZWRKU09iamVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFs
dWU6anNPYmplY3RdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFu
YWdlZFJlZmVyZW5jZTptYW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgLy8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQg
c2hvdWxkIHJlc2NhbiB0aGUgbmV3IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4K
KyAgICAgICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpT
R2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUg
bWFuYWdlZCBKU1ZhbHVlIGlzIHN0aWxsIGFsaXZlLgorICAgICAgICBjaGVja1Jlc3VsdChAIkVk
ZW5Db2xsZWN0aW9uIGRvZXNuJ3QgcmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdl
ZEpTT2JqZWN0IHZhbHVlXSAhPSBuaWwpOworICAgIH0KK30KKworKyAodm9pZClkaXNhcHBlYXJp
bmdWaXJ0dWFsTWFjaGluZVdyYXBwZXJUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKmNoaWxkID0gbmlsOworICAgICAgICBKU0dsb2JhbENv
bnRleHRSZWYgY29udGV4dFJlZiA9IDA7CisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2Vk
Q2hpbGQgPSBuaWw7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlND
b250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAg
Y29udGV4dFJlZiA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CisgICAgICAgICAgICBK
U0dsb2JhbENvbnRleHRSZXRhaW4oY29udGV4dFJlZik7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmpl
Y3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNoaWxkID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAg
ICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hp
bGQgd2l0aE93bmVyOnJvb3RdOworICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDpjaGlsZCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAg
ICBqc0NoaWxkW0AibXlTcGVjaWFsUHJvcGVydHkiXSA9IEAiZm9vIjsKKyAgICAgICAgICAgIG1h
bmFnZWRDaGlsZCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDaGls
ZF07CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJl
bmNlOm1hbmFnZWRDaGlsZCB3aXRoT3duZXI6Y2hpbGRdOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dFJl
Zik7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpT
VmFsdWUgKmpzQ2hpbGQgPSBbbWFuYWdlZENoaWxkIHZhbHVlXTsKKyAgICAgICAgICAgIGNoZWNr
UmVzdWx0KEAiY2hpbGQgaGFzIG15U3BlY2lhbFByb3BlcnR5IGV2ZW4gd2hlbiBKU1ZpcnR1YWxN
YWNoaW5lIGRpc2FwcGVhcnMiLAorICAgICAgICAgICAgICAgIFtbanNDaGlsZFtAIm15U3BlY2lh
bFByb3BlcnR5Il0gdG9TdHJpbmddIGlzRXF1YWxUb1N0cmluZzpAImZvbyJdKTsKKyAgICAgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2UoY29udGV4dFJlZik7CisgICAgICAgIH0KKyAgICB9
Cit9CitAZW5kCisKK3ZvaWQgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKCkKK3sKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBtYW5hZ2VkVmFs
dWVTYW5pdHlUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBhdm9pZE1vZGlm
eWluZ05TTWFwVGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdl
bWVudFRlc3RzIGJhZ09mSlNNYW5hZ2VkVmFsdWVzVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5h
Z2VtZW50VGVzdHMgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRl
c3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRlc3RzIGRpc2FwcGVhcmluZ1ZpcnR1YWxN
YWNoaW5lV3JhcHBlclRlc3RdOworICAgIH0KK30KKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9F
TkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CShyZXZpc2lvbiAxNjc2MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rl
c3RhcGkubW0JKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkN1cnJl
bnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0LmgiCiAjaW1wb3J0ICJEYXRlVGVzdHMuaCIKICNp
bXBvcnQgIkpTRXhwb3J0VGVzdHMuaCIKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5o
IgogCiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdn
aW5nKEpTQ29udGV4dFJlZik7CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xs
ZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CkBAIC0xMTcsOCArMTE4LDYgQEAgYm9vbCB0
ZXN0WFlaVGVzdGVkID0gZmFsc2U7CiAtIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcqKXN0
cmluZzsKIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OwotQHBy
b3BlcnR5IChhc3NpZ24pIEpTVmFsdWUgKm9uY2xpY2s7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNW
YWx1ZSAqd2Vha09uY2xpY2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBl
bmQKIApAQCAtMTI2LDEzICsxMjUsOSBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8
VGV4dFhZWj4KIEBwcm9wZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBp
bnQgejsKLS0gKHZvaWQpY2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaIHsK
LSAgICBKU01hbmFnZWRWYWx1ZSAqbV93ZWFrT25jbGlja0hhbmRsZXI7Ci0gICAgSlNNYW5hZ2Vk
VmFsdWUgKm1fb25jbGlja0hhbmRsZXI7Ci19CitAaW1wbGVtZW50YXRpb24gVGV4dFhZWgogQHN5
bnRoZXNpemUgeDsKIEBzeW50aGVzaXplIHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTUwLDMyICsx
NDUsNiBAQCAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpU
ZXN0ZWQgPSBbbWVzc2FnZSBpc0VxdWFsOkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYg
eiA9PSA1OwogfQotLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0g
ICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOnZhbHVlXTsKLX0KLQotLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUK
LXsKLSAgICBtX29uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTp2YWx1ZV07Ci0gICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFu
YWdlZFJlZmVyZW5jZTptX29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKLX0KLS0gKEpT
VmFsdWUgKil3ZWFrT25jbGljawotewotICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIg
dmFsdWVdOwotfQotLSAoSlNWYWx1ZSAqKW9uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fb25jbGlj
a0hhbmRsZXIgdmFsdWVdOwotfQotLSAodm9pZCljbGljawotewotICAgIGlmICghbV9vbmNsaWNr
SGFuZGxlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9v
bmNsaWNrSGFuZGxlciB2YWx1ZV07Ci0gICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltO
U0FycmF5IGFycmF5XV07Ci19CiBAZW5kCiAKIEBjbGFzcyBUaW55RE9NTm9kZTsKQEAgLTIzOCw0
NyArMjA3LDYgQEAgLSAodm9pZClyZW1vdmVDaGlsZEF0SW5kZXg6KE5TVUludGVnZXIpaQogCiBA
ZW5kCiAKLUBpbnRlcmZhY2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKLS0gKHZvaWQpc2V0VmFs
dWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotLSAoSlNWYWx1ZSAq
KXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEpT
Q29sbGVjdGlvbiB7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Ci19Ci0tIChpZClp
bml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1
ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAq
b2xkTWFuYWdlZFZhbHVlID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmIChvbGRN
YW5hZ2VkVmFsdWUpIHsKLSAgICAgICAgSlNWYWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZh
bHVlIHZhbHVlXTsKLSAgICAgICAgaWYgKG9sZFZhbHVlKQotICAgICAgICAgICAgW29sZFZhbHVl
LmNvbnRleHQudmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2Vk
VmFsdWUgd2l0aE93bmVyOnNlbGZdOwotICAgIH0KLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdl
ZFZhbHVlID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Ci0g
ICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5h
Z2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOwotICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZh
bHVlIGZvcktleTprZXldOwotfQotCi0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5n
ICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmpl
Y3RGb3JLZXk6a2V5XTsKLSAgICBpZiAoIW1hbmFnZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gW21hbmFnZWRWYWx1ZSB2YWx1ZV07Ci19Ci1AZW5kCi0KIEBwcm90b2Nv
bCBJbml0QSA8SlNFeHBvcnQ+CiAtIChpZClpbml0V2l0aEE6KGludClhOwogLSAoaW50KWluaXRp
YWxpemU7CkBAIC01MTAsNTUgKzQzOCw2IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAg
IH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJp
dmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgICAgICBUZXN0T2JqZWN0KiByb290T2JqZWN0
ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJd
ID0gcm9vdE9iamVjdDsKLSAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07
Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1
ZVdpdGhCb29sOnRydWUgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOwotICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OkAiaGVsbG8hIiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwot
ICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVX
aXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOwotICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
TnVsbEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVu
ZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQi
XTsKLQotICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgICAgICBKU1ZhbHVlICpp
c0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07Ci0gICAg
ICAgICAgICBKU1ZhbHVlICptZXNzYWdlID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJtZXNzYWdlIl07Ci0gICAgICAgICAgICBKU1ZhbHVlICpteU51bWJlciA9IFtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl07Ci0gICAgICAgICAgICBKU1Zh
bHVlICpkZWZpbml0ZWx5TnVsbCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAi
ZGVmaW5pdGVseV9udWxsIl07Ci0gICAgICAgICAgICBKU1ZhbHVlICpub3RTdXJlSWZVbmRlZmlu
ZWQgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVm
aW5lZCJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0gaXMgdHJ1ZSIsIFtpc0hh
bSBpc0Jvb2xlYW5dICYmIFtpc0hhbSB0b0Jvb2xdKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAibWVzc2FnZSBpcyBoZWxsbyEiLCBbbWVzc2FnZSBpc1N0cmluZ10gJiYgW0AiaGVsbG8hIiBp
c0VxdWFsVG9TdHJpbmc6W21lc3NhZ2UgdG9TdHJpbmddXSk7Ci0gICAgICAgICAgICBjaGVja1Jl
c3VsdChAIm15X251bWJlciBpcyA0MiIsIFtteU51bWJlciBpc051bWJlcl0gJiYgW215TnVtYmVy
IHRvSW50MzJdID09IDQyKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9u
dWxsIGlzIG51bGwiLCBbZGVmaW5pdGVseU51bGwgaXNOdWxsXSk7Ci0gICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBbbm90U3VyZUlm
VW5kZWZpbmVkIGlzVW5kZWZpbmVkXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGVja1Jlc3Vs
dChAImlzX2hhbSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJp
c19oYW0iXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJp
dmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl0pOwotICAgICAgICBjaGVja1Jl
c3VsdChAIm15X251bWJlciBpcyA0MiIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktl
eTpAIm15X251bWJlciJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwg
aXMgbnVsbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMg
dW5kZWZpbmVkIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVf
aWZfdW5kZWZpbmVkIl0pOwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAg
IEpTVmFsdWUgKm1lc3NhZ2UgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5D
b250ZXh0OmNvbnRleHRdOwotICAgICAgICBUZXN0T2JqZWN0ICpyb290T2JqZWN0ID0gW1Rlc3RP
YmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIEpTQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IFtb
SlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKLSAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJv
b3RPYmplY3Q7Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1
ZSAqanNDb2xsZWN0aW9uID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNvbGxlY3Rpb24gaW5D
b250ZXh0OmNvbnRleHRdOwotICAgICAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKndlYWtDb2xsZWN0
aW9uID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc0NvbGxlY3Rpb24g
YW5kT3duZXI6cm9vdE9iamVjdF07Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGlu
ZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOndlYWtDb2xsZWN0aW9uIHdpdGhPd25lcjptZXNzYWdlXTsK
LSAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBhdXRv
cmVsZWFzZXBvb2wgewogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBh
bGxvY10gaW5pdF07CiAgICAgICAgIF9fYmxvY2sgaW50IHJlc3VsdDsKICAgICAgICAgY29udGV4
dFtAImJsb2NrQ2FsbGJhY2siXSA9IF4oaW50IHZhbHVlKXsKQEAgLTk3Nyw2MCArODU2LDYgQEAg
dm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsK
LSAgICAgICAgVGV4dFhZWiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10gaW5pdF07Ci0KLSAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJd
ID0gdGVzdFhZWjsKLQotICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAot
ICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0
WFlaLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAotICAgICAgICAgICAgICAgICAgICBkaWRDbGlj
ayA9IHRydWU7IFwKLSAgICAgICAgICAgICAgICB9OyBcCi0gICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgICAgICB0ZXN0WFlaLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICdmb28nOyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAg
ICAgICAgICAgIl07Ci0gICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAg
ICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9
IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNr
UmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAidGVzdFhZWi5vbmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sg
c3RpbGwgYXJvdW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1Vu
ZGVmaW5lZF0pKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRl
c3RYWVoud2Vha09uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xp
Y2sgbm90IGFyb3VuZCBhZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5k
ZWZpbmVkXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAgICAgICAgICBkaWRD
bGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKLSAgICAg
ICAgICAgICJdOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xs
ZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAg
ICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGlj
ayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9l
c24ndCBmaXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdm0gPSBbW0pTVmly
dHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdOwogICAgICAgICBUZXN0T2JqZWN0ICp0ZXN0T2JqZWN0
ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CiAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFr
VmFsdWU7CkBAIC0xMzI2LDQyICsxMTUxLDExIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQog
ICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIHRv
RGljdGlvbmFyeV07CiAgICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRl
eHQ6Y29udGV4dF0gdG9BcnJheV07CiAgICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQot
ICAgICAgICAvLyBDcmVhdGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFu
ZCBmb3JjZSBhbiBFZGVuQ29sbGVjdGlvbgotICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhl
IGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdCA9IFtUZXN0
T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAg
ICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OwotICAgICAgICB9Ci0gICAgICAgIEpTU3luY2hy
b25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
KTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxl
IHZpYSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCi0gICAgICAgIC8vIHRocm91Z2ggdGhlIG9i
amVjdCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KLSAgICAg
ICAgVGVzdE9iamVjdCAqY2hpbGQgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAg
W2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3du
ZXI6cm9vdF07Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hbmFnZWQgSlNWYWx1ZSB0aGF0
IHdpbGwgb25seSBiZSBrZXB0IGFsaXZlIGlmIHdlIHByb3Blcmx5IHJlc2NhbgotICAgICAgICAv
LyB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFu
YWdlZEpTT2JqZWN0ID0gbmlsOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAg
ICAgIEpTVmFsdWUgKmpzT2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8i
IGluQ29udGV4dDpjb250ZXh0XTsKLSAgICAgICAgICAgIG1hbmFnZWRKU09iamVjdCA9IFtKU01h
bmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNPYmplY3RdOwotICAgICAgICAgICAg
W2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkSlNPYmpl
Y3Qgd2l0aE93bmVyOmNoaWxkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGFub3Ro
ZXIgRWRlbkNvbGxlY3Rpb24uIEl0IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBl
eHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLSAgICAgICAgCi0gICAg
ICAgIC8vIENoZWNrIHRoYXQgdGhlIG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KLSAg
ICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1h
bmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKLSAgICB9Ci0K
KyAgICAKICAgICBjdXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCgpOwogICAgIHJ1bkRh
dGVUZXN0cygpOwogICAgIHJ1bkpTRXhwb3J0VGVzdHMoKTsKKyAgICBydW5NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMoKTsKIH0KIAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvagkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEFQSUNhc3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQ
SVxBUElEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNjcmlw
dC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHRDb3JlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0Lmgi
IC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCShyZXZpc2lvbiAxNjc2MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNzYsNiArMTM3Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxB
UElcQVBJQ2FzdC5oIj4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJRGF0YS5oIj4KKyAgICAgIDxG
aWx0ZXI+QVBJPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcSmF2YVNjcmlwdC5oIj4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2NTYsNiArMTY1Niw3IEBA
CiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2
NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3
NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0
MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAv
KiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CisJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBB
UElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oICovOyB9OwogCQlDMjREMzFFMjE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhl
YXBTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhl
YXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMjREMzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5
OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5h
Z2VkVmFsdWUubW0gKi87IH07CkBAIC0xNjY1LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0
QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9j
ay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMy
ODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1
N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAw
N0JFNDBCIC8qIERhdGVUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87
IH07CisJCUMyOTMyQTU1MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1
NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlD
Mjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdC
QUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlD
Mjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNC
Qzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdE
ZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi87IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlD
MjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR0NUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8q
IEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyog
SGVhcFN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SGVhcFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFF
MTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkw
MTE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZUJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjg4QjJEQzE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rl
c3RzL0RhdGVUZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4
QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gRGF0ZVRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlC
IC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5h
Z2VtZW50VGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1
QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9
IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JD
OTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2ly
ZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZE
QTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
OyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM2OTgsNiArMzcwMyw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAw
MzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8q
IHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAuY3BwICovLAorCQkJCUMyOTMyQTUzMTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMuaCAqLywKKwkJCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFu
YWdlbWVudFRlc3RzLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTkyLDYgKzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3
NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3
NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAw
NDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0Mw
MDcwQTJCMSAvKiBBUElEYXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02MDQwLDYgKzYwNDgsNyBAQAogCQkJCTBGNDY4MENCMTRC
QkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFRDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkNFRkFDRTE4MDVFNzU1MDA0NzJDRTQgLyogTExWTUFQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRUZBQ0YxODA1RTc1NTAwNDcyQ0U0IC8qIExMVk1B
UElGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtNjc4MSw2ICs2NzkwLDcgQEAKIAkJCQlD
MjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAq
LywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUMyOTMyQTU1MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVz
dHMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5lIFZN
X2gKIAorI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5o
IgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCkBA
IC0yMDksNiArMjEwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBtYWtlVXNh
YmxlRnJvbU11bHRpcGxlVGhyZWFkcygpIHsgaGVhcC5tYWNoaW5lVGhyZWFkcygpLm1ha2VVc2Fi
bGVGcm9tTXVsdGlwbGVUaHJlYWRzKCk7IH0KICAgICAgICAgCisgICAgICAgIEFQSURhdGEgYXBp
RGF0YTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxKU0xvY2s+IG1fYXBpTG9jazsK
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229847</attachid>
            <date>2014-04-21 18:37:41 -0700</date>
            <delta_ts>2014-04-21 20:01:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131691-20140421183718.patch</filename>
            <type>text/plain</type>
            <size>49680</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElEYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0FQSURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBBUElEYXRhX2gKKyNkZWZpbmUgQVBJRGF0YV9oCisKKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworY2xhc3MgQVBJ
RGF0YSB7CitwdWJsaWM6CisgICAgQVBJRGF0YSgpCisgICAgeworICAgIH0KKworICAgIENGVHlw
ZVJlZiBleHRlcm5hbE9iamVjdEdyYXBoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2V4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCk7CisgICAgfQorICAgIHZvaWQgc2V0RXh0ZXJuYWxP
YmplY3RHcmFwaChSZXRhaW5QdHI8Q0ZUeXBlUmVmPiYmIGV4dGVybmFsT2JqZWN0R3JhcGgpCisg
ICAgeworICAgICAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGggPSBleHRlcm5hbE9iamVjdEdyYXBo
OworICAgIH0KKworICAgIENGVHlwZVJlZiBleHRlcm5hbFJlbWVtYmVyZWRTZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpOworICAg
IH0KKyAgICB2b2lkIHNldEV4dGVybmFsUmVtZW1iZXJlZFNldChSZXRhaW5QdHI8Q0ZUeXBlUmVm
PiYmIGV4dGVybmFsUmVtZW1iZXJlZFNldCkKKyAgICB7CisgICAgICAgIG1fZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0ID0gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gbV9leHRlcm5hbE9iamVjdEdyYXBoOworICAgIFJl
dGFpblB0cjxDRlR5cGVSZWY+IG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworfTsKKworI2Vsc2UK
KworY2xhc3MgQVBJRGF0YSB7IH07CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRAor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEFQSURhdGFfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkocmV2aXNpb24gMTY3
NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAICsgKEpTVmlydHVhbE1hY2hpbmUgKil3cmFw
cGVyRm9ySlNDb250ZXgKIEBpbXBsZW1lbnRhdGlvbiBKU1ZpcnR1YWxNYWNoaW5lIHsKICAgICBK
U0NvbnRleHRHcm91cFJlZiBtX2dyb3VwOwogICAgIE5TTWFwVGFibGUgKm1fY29udGV4dENhY2hl
OwotICAgIE5TTWFwVGFibGUgKm1fZXh0ZXJuYWxPYmplY3RHcmFwaDsKLSAgICBOU01hcFRhYmxl
ICptX2V4dGVybmFsUmVtZW1iZXJlZFNldDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAg
LTExMCwxMyArMTA4LDIyIEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbnRleHRHcm91cFJl
ZjoKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVQZXJzb25hbGl0
eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVlT3B0aW9ucyA9IE5TUG9pbnRl
ckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0
eTsKICAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0aW9ucyBjYXBhY2l0eTowXTsK
LSAgICAKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7Ci0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBzdHJvbmdJRE9wdGlvbnMgPSBO
U1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQ
ZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGggPSBbW05TTWFwVGFibGUgYWxs
b2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczpzdHJvbmdJ
RE9wdGlvbnMgY2FwYWNpdHk6MF07CiAKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGlu
dGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVy
RnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwotICAgIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2
YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF07CisgICAgSlNDOjpWTSYgdm0g
PSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAg
IGlmICghdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoKCkpIHsKKyAgICAgICAgTlNQb2lu
dGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vh
a01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICBO
U1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0
aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5Owor
ICAgICAgICB2bS5hcGlEYXRhLnNldEV4dGVybmFsT2JqZWN0R3JhcGgoUmV0YWluUHRyPENGVHlw
ZVJlZj4oCisgICAgICAgICAgICBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9u
czp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0p
KTsKKyAgICB9CisKKyAgICBpZiAoIXZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KCkp
IHsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQ
b2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNv
bmFsaXR5OworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25z
ID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50
ZWdlclBlcnNvbmFsaXR5OworICAgICAgICB2bS5hcGlEYXRhLnNldEV4dGVybmFsUmVtZW1iZXJl
ZFNldChSZXRhaW5QdHI8Q0ZUeXBlUmVmPigKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxv
Y10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJP
cHRpb25zIGNhcGFjaXR5OjBdKSk7CisgICAgfQogICAgCiAgICAgW0pTVk1XcmFwcGVyQ2FjaGUg
YWRkV3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsKICAKQEAgLTEyNyw4
ICsxMzQsNiBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBKU0NvbnRleHRHcm91cFJlbGVhc2Uo
bV9ncm91cCk7CiAgICAgW21fY29udGV4dENhY2hlIHJlbGVhc2VdOwotICAgIFttX2V4dGVybmFs
T2JqZWN0R3JhcGggcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbGVh
c2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTU5LDcgKzE2NCw4IEBAIC0gKGJv
b2wpaXNPbGRFeHRlcm5hbE9iamVjdDooaWQpb2JqZWN0CiAtICh2b2lkKWFkZEV4dGVybmFsUmVt
ZW1iZXJlZE9iamVjdDooaWQpb2JqZWN0CiB7CiAgICAgQVNTRVJUKFtzZWxmIGlzT2xkRXh0ZXJu
YWxPYmplY3Q6b2JqZWN0XSk7Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHNldE9iamVj
dDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5Om9iamVjdF07CisgICAgTlNN
YXBUYWJsZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAq
Pih0b0pTKG1fZ3JvdXApLT5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCgpKTsKKyAgICBb
ZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
dHJ1ZV0gZm9yS2V5Om9iamVjdF07CiB9CiAKIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZToo
aWQpb2JqZWN0IHdpdGhPd25lcjooaWQpb3duZXIKQEAgLTE3MiwxOCArMTc4LDIwIEBAIC0gKHZv
aWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHcKICAgICAKICAgICBpZiAoIW9iamVj
dCB8fCAhb3duZXIpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIodG9KUyhtX2dyb3VwKSk7CisKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3Jv
dXApOyAKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGlmIChbc2VsZiBp
c09sZEV4dGVybmFsT2JqZWN0Om93bmVyXSAmJiAhW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpv
YmplY3RdKQogICAgICAgICBbc2VsZiBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6b3duZXJd
OwotIAotICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3Jh
cGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKKworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0
R3JhcGggPSBzdGF0aWNfY2FzdDxpZD4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoKCkp
OworICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9i
amVjdEZvcktleTpvd25lcl07CiAgICAgaWYgKCFvd25lZE9iamVjdHMpIHsKICAgICAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25z
V2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5
OwogICAgICAgICBvd25lZE9iamVjdHMgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5
T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0
eToxXTsKIAotICAgICAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9i
amVjdHMgZm9yS2V5Om93bmVyXTsKKyAgICAgICAgW2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2Jq
ZWN0Om93bmVkT2JqZWN0cyBmb3JLZXk6b3duZXJdOwogICAgICAgICBbb3duZWRPYmplY3RzIHJl
bGVhc2VdOwogICAgIH0KIApAQCAtMjAyLDkgKzIxMCwxMSBAQCAtICh2b2lkKXJlbW92ZU1hbmFn
ZWRSZWZlcmVuY2U6KGlkKW9iamVjCiAgICAgaWYgKCFvYmplY3QgfHwgIW93bmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9ncm91
cCkpOwotICAgIAotICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2Jq
ZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1f
Z3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisKKyAgICBOU01hcFRh
YmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5h
cGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgoKSk7IAorICAgIE5TTWFwVGFibGUgKm93bmVkT2Jq
ZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAgICAgaWYg
KCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKICAgIApAQCAtMjE4LDggKzIyOCw4IEBA
IC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICAgICAgTlNNYXBS
ZW1vdmUob3duZWRPYmplY3RzLCBvYmplY3QpOwogCiAgICAgaWYgKCFbb3duZWRPYmplY3RzIGNv
dW50XSkgewotICAgICAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktl
eTpvd25lcl07Ci0gICAgICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCByZW1vdmVPYmplY3RG
b3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVPYmplY3RG
b3JLZXk6b3duZXJdOworICAgICAgICBbc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlE
YXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwog
ICAgIH0KIH0KIApAQCAtMjUwLDI1ICsyNjAsMTIgQEAgLSAodm9pZClhZGRDb250ZXh0OihKU0Nv
bnRleHQgKil3cmFwcGVyIAogICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4dENhY2hlLCBnbG9iYWxD
b250ZXh0LCB3cmFwcGVyKTsKIH0KIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3Jh
cGgKLXsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9iamVjdEdyYXBoOwotfQotCi0tIChOU01hcFRh
YmxlICopZXh0ZXJuYWxSZW1lbWJlcmVkU2V0Ci17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0OwotfQotCiBAZW5kCiAKIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlND
OjpWTSYgdm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IsIHZvaWQqIHJvb3QpCiB7CiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNo
aW5lID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVm
KCZ2bSldOwotICAgICAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNo
aW5lIGV4dGVybmFsT2JqZWN0R3JhcGhdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9i
amVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFs
T2JqZWN0R3JhcGgoKSk7CiAgICAgICAgIFZlY3Rvcjx2b2lkKj4gc3RhY2s7CiAgICAgICAgIHN0
YWNrLmFwcGVuZChyb290KTsKICAgICAgICAgd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpIHsKQEAg
LTI4OCwxMSArMjg1LDggQEAgdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2
bQogdm9pZCBzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1Zp
cnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJG
b3JKU0NvbnRleHRHcm91cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFj
aGluZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxP
YmplY3RHcmFwaCA9IFt2aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKLSAgICAg
ICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW3ZpcnR1YWxNYWNoaW5lIGV4
dGVybmFsUmVtZW1iZXJlZFNldF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0
R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmpl
Y3RHcmFwaCgpKTsKKyAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0g
c3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNl
dCgpKTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CiAg
ICAgICAgICAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFw
aCBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRPYmplY3QgaW4g
b3duZWRPYmplY3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxN
YWNoaW5lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjc2MTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NSw4ICs0NSw2IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3VwRnJvbVZpcnR1
YWxNYWMKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2Jh
bENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4dDooSlNDb250ZXh0
ICopd3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFs
Q29udGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGg7Ci0KIEBlbmQK
ICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1l
bnRUZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKKworI2VuZGlm
IC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRl
c3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAorCitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBi
b29sIHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9u
b3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKworQGludGVyZmFjZSBP
cGFxdWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE9wYXF1
ZU9iakNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmplY3QKK3sKKyAgICBy
ZXR1cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sK
KyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFjZSBKU0NvbGxlY3Rp
b24gOiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleToo
TlNTdHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5
OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGlu
aXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBfZGlj
dCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisgICAgcmV0dXJu
IHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5T
U3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1ZSA9IFtf
ZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7CisgICAg
ICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07CisgICAgICAg
IGlmIChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNo
aW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxm
XTsKKyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01hbmFnZWRW
YWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZp
cnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhPd25lcjpz
ZWxmXTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5XTsKK30K
KworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFu
YWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAg
aWYgKCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFttYW5h
Z2VkVmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2thYmxlRXhwb3J0cyA8
SlNFeHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKK0Bwcm9wZXJ0
eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGludGVyZmFjZSBDbGlj
a2FibGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZCljbGljazsKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vh
a09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOwor
fQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX3dlYWtP
bmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFs
dWVdOworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29u
Y2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1
ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5j
ZTptX29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUgKil3ZWFr
T25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOworfQor
LSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFs
dWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hh
bmRsZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBh
cnJheV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1lbnRUZXN0cyA6IE5T
T2JqZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2b2lkKWF2b2lkTW9k
aWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQpYmFnT2ZKU01hbmFn
ZWRWYWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0VkZW5D
b2xsZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVy
VGVzdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1lbnRUZXN0cworKyAo
dm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRb
QCJjbGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgW2Nv
bnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFs
c2U7IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1bmN0aW9uKCkgeyBc
CisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsg
XAorICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUud2Vha09uY2xp
Y2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAorICAg
ICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2td
OworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6
QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9u
Y2xpY2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBK
U1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxD
b250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiY2xpY2th
YmxlLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGljayBzdGlsbCBh
cm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVk
XSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFty
ZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCisg
ICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIGNsaWNr
YWJsZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVz
dWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAg
Y2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1
bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYXZvaWRNb2RpZnlp
bmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsK
KyAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhl
bGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RP
YmplY3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICBKU0NvbGxl
Y3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CisgICAgICAg
IGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIEpTTWFu
YWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAg
W2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlv
biB3aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAg
IH0KKyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0Cit7CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2YXRlUHJvcGVy
dGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEpTQ29udGV4dCBh
bmQgZ2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJhZyBvZiBKU01hbmFn
ZWRWYWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBh
bGxvY10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0g
W09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJy
b290Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBZGQgYSBi
dW5jaCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAg
ICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZh
dGVQcm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAgICAgIFtteVByaXZh
dGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRl
eHQ6Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJv
cGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29u
dGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBbbXlQcml2YXRl
UHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6
Y29udGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJv
cGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRd
IGZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215UHJpdmF0ZVByb3Bl
cnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRl
eHRdIGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVsbCBjb2xsZWN0aW9u
LgorICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1
ZUZvcktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAgICAgICAgICAgSlNW
YWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251
bWJlciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAg
SlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVG
b3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2Ug
aXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5n
XV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1i
ZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlz
TnVsbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQg
aXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0pOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250ZXh0IGhhcyBkaXNh
cHBlYXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVzIGhhdmUgYmVlbiBj
bGVhcmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwiLCAhW215UHJpdmF0
ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAgIGNoZWNrUmVzdWx0
KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJt
ZXNzYWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyBuaWwiLCAhW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGll
cyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZh
bHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0KK30KKworCisrICh2
b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0Cit7Cisg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSB0aGUgcm9v
dCwgbWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9u
CisgICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgor
ICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVl
T2JqZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNv
bGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAg
IAorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZp
YSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVj
dCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KKyAgICAgICAg
T3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3Rd
OworICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNo
aWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBt
YW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJs
eSByZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAg
SlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVl
V2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBtYW5h
Z2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2Jq
ZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZl
cmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0IHNob3VsZCBy
ZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCisgICAgICAg
IEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIG1hbmFnZWQg
SlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29sbGVj
dGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09iamVj
dCB2YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVh
bE1hY2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBP
cGFxdWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVm
IGNvbnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZENoaWxkID0g
bmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTQ29udGV4dCAq
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGNvbnRleHRS
ZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAgICAgSlNHbG9iYWxD
b250ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAgICAgICAgICBPcGFx
dWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAg
ICAgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAgICAgCisgICAgICAg
ICAgICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAg
ICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNoaWxkIHdpdGhP
d25lcjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBbSlNWYWx1ZSB2YWx1
ZVdpdGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAganNDaGls
ZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAgICBtYW5hZ2VkQ2hp
bGQgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ2hpbGRdOworICAg
ICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5h
Z2VkQ2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHRSZWYpOworICAg
ICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpq
c0NoaWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChA
ImNoaWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0dWFsTWFjaGluZSBk
aXNhcHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0
eSJdIHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgICAgICAgICBKU0ds
b2JhbENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9CisgICAgfQorfQorQGVu
ZAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdlZFZhbHVlU2FuaXR5
VGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRNb2RpZnlpbmdOU01h
cFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0
cyBiYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0XTsKKyAg
ICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGluZVdy
YXBwZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNp
b24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJDdXJyZW50VGhpc0lu
c2lkZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0ICJK
U0V4cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKIAogZXh0
ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0Nv
bnRleHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRl
YnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBAIGJvb2wgdGVzdFhZWlRl
c3RlZCA9IGZhbHNlOwogLSAoaWQpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nKilzdHJpbmc7CiBA
cHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLUBwcm9wZXJ0eSAo
YXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOwotQHByb3BlcnR5IChhc3NpZ24pIEpTVmFsdWUgKndl
YWtPbmNsaWNrOwogLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBAZW5kCiAKQEAg
LTEyNiwxMyArMTI1LDkgQEAgQGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3QgPFRleHRYWVo+
CiBAcHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkgaW50IHo7Ci0t
ICh2b2lkKWNsaWNrOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7Ci0gICAgSlNN
YW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOwotICAgIEpTTWFuYWdlZFZhbHVlICpt
X29uY2xpY2tIYW5kbGVyOwotfQorQGltcGxlbWVudGF0aW9uIFRleHRYWVoKIEBzeW50aGVzaXpl
IHg7CiBAc3ludGhlc2l6ZSB5OwogQHN5bnRoZXNpemUgejsKQEAgLTE1MCwzMiArMTQ1LDYgQEAg
LSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFlaVGVzdGVkID0g
W21lc3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYmIHogPT0gNTsK
IH0KLS0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQotewotICAgIG1fd2Vh
a09uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2
YWx1ZV07Ci19Ci0KLS0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0gICAg
bV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6
dmFsdWVdOwotICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZl
cmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07Ci19Ci0tIChKU1ZhbHVlICop
d2Vha09uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fd2Vha09uY2xpY2tIYW5kbGVyIHZhbHVlXTsK
LX0KLS0gKEpTVmFsdWUgKilvbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX29uY2xpY2tIYW5kbGVy
IHZhbHVlXTsKLX0KLS0gKHZvaWQpY2xpY2sKLXsKLSAgICBpZiAoIW1fb25jbGlja0hhbmRsZXIp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hh
bmRsZXIgdmFsdWVdOwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBh
cnJheV1dOwotfQogQGVuZAogCiBAY2xhc3MgVGlueURPTU5vZGU7CkBAIC0yMzgsNDcgKzIwNyw2
IEBAIC0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCi1A
aW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLS0gKEpTVmFsdWUgKil2YWx1ZUZv
cktleTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rp
b24gewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OwotfQotLSAoaWQpaW5pdAotewot
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4g
bmlsOwotCi0gICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwot
Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFn
ZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAob2xkTWFuYWdlZFZh
bHVlKSB7Ci0gICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1
ZV07Ci0gICAgICAgIGlmIChvbGRWYWx1ZSkKLSAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0
LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKLSAgICB9Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9
IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVl
IHdpdGhPd25lcjpzZWxmXTsKLSAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JL
ZXk6a2V5XTsKLX0KLQotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQot
ewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5
OmtleV07Ci0gICAgaWYgKCFtYW5hZ2VkVmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
cmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOwotfQotQGVuZAotCiBAcHJvdG9jb2wgSW5pdEEg
PEpTRXhwb3J0PgogLSAoaWQpaW5pdFdpdGhBOihpbnQpYTsKIC0gKGludClpbml0aWFsaXplOwpA
QCAtNTEwLDU1ICs0MzgsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9w
ZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwotICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9IFtUZXN0
T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RP
YmplY3Q7Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVm
ZXJlbmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOwotICAgICAg
ICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9v
bDp0cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKLSAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpA
ImhlbGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAg
ICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMy
OjQyIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKLSAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNv
bnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07Ci0gICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJ
bkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0KLSAg
ICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOwotICAgICAgICAgICAg
SlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVz
c2FnZSJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqZGVm
aW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRl
bHlfbnVsbCJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsK
LSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29s
ZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3Nh
Z2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRv
U3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJt
eV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMy
XSA9PSA0Mik7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBu
dWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5l
ZCBpc1VuZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0p
OwotICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJt
eV9udW1iZXIgaXMgNDIiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9u
dW1iZXIiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwi
LCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7
Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5l
ZCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVm
aW5lZCJdKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250
ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICBKU1ZhbHVl
ICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpj
b250ZXh0XTsKLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRl
c3RPYmplY3RdOwotICAgICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVj
dGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0
OwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29s
bGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpj
b250ZXh0XTsKLSAgICAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVy
OnJvb3RPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFu
YWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07Ci0gICAgICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGlu
aXRdOwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRleHRbQCJibG9j
a0NhbGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7CkBAIC05NzcsNjAgKzg1Niw2IEBAIHZvaWQgdGVz
dE9iamVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAg
ICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAg
IFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RY
WVo7Ci0KLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNs
aWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVl
OyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAnZm9vJzsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAgICAg
ICJdOwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAg
ICBbdGVzdFhZWiBjbGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChA
IkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RY
WVoub25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFy
b3VuZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRd
KSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAg
ICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLndl
YWtPbmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNsaWNrIG5vdCBh
cm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0p
OwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBm
YWxzZTsgXAotICAgICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCi0gICAgICAgICAgICAi
XTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRl
YnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpT
VmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRvZXNuJ3QgZmly
ZSIsICFbcmVzdWx0IHRvQm9vbF0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQGF1dG9yZWxl
YXNlcG9vbCB7CiAgICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZtID0gW1tKU1ZpcnR1YWxNYWNo
aW5lIGFsbG9jXSBpbml0XTsKICAgICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVjdCA9IFtUZXN0
T2JqZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha1ZhbHVlOwpA
QCAtMTMyNiw0MiArMTE1MSwxMSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAg
W1tKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0RpY3Rpb25h
cnldOwogICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRl
eHRdIHRvQXJyYXldOwogICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAg
Ly8gQ3JlYXRlIHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2Ug
YW4gRWRlbkNvbGxlY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5h
bCBvYmplY3QgZ3JhcGguCi0gICAgICAgIFRlc3RPYmplY3QgKnJvb3QgPSBbVGVzdE9iamVjdCB0
ZXN0T2JqZWN0XTsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250
ZXh0W0Aicm9vdCJdID0gcm9vdDsKLSAgICAgICAgfQotICAgICAgICBKU1N5bmNocm9ub3VzRWRl
bkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAg
ICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9iamVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhl
IGV4dGVybmFsIG9iamVjdCBncmFwaAotICAgICAgICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2Ug
YWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRlbkNvbGxlY3Rpb24uCi0gICAgICAgIFRlc3RP
YmplY3QgKmNoaWxkID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIFtjb250ZXh0
LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJvb3Rd
OwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9u
bHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSByZXNjYW4KLSAgICAgICAgLy8gdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09i
amVjdCA9IG5pbDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1Zh
bHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRl
eHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFs
dWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0
LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhP
d25lcjpjaGlsZF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5D
b2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBD
aGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCi0gICAgICAgIGNo
ZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZh
bHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7Ci0gICAgfQotCisgICAgCiAg
ICAgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKTsKICAgICBydW5EYXRlVGVzdHMo
KTsKICAgICBydW5KU0V4cG9ydFRlc3RzKCk7CisgICAgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3Rz
KCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2oJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc4
Nyw2ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEFQSVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJRGF0
YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29yZS5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5oIiAvPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwko
cmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNh
c3QuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAgICA8RmlsdGVyPkFQ
STwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NzYx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDYgKzE2NTYsNyBAQAogCQlDMjI1
NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8q
IFNsb3RWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNh
bXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNDAzMDU1MTRC
NDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVk
U3BhY2UuY3BwICovOyB9OworCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0OEY2OEMx
OTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0
YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
IAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2MUNENjk1MDAy
QUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2Vk
VmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87IH07CkBAIC0x
NjY1LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxv
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMx
OEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAv
KiBIYW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGlu
ZXMuaCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODhCMkREMThB
NTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87IH07CisJCUMyOTMyQTU1MTkwNUI1RTcw
MEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVt
b3J5TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTgg
LyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTgg
LyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJh
cnJpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAg
Ki87IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQg
LyogR0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4
IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0MDMwNTMx
NEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFN0YXRp
c3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RDcwOTkxNkRFOTlGNDAw
RkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyogSGFu
ZGxlQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRs
ZUJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJEQzE4
QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRl
c3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGF0ZVRlc3Rz
Lm1tOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVz
dHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkQ2MTdCQUVF
NEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcDsgcGF0
aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZl
cmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFr
UmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZH
RGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRX
cml0ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2OTgsNiAr
MzcwMyw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8s
CiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUx
MTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAorCQkJCUMyOTMyQTUz
MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLywKKwkJCQlDMjkz
MkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovLAogCQkJ
KTsKIAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTky
LDYgKzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0
cmluZy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3Ry
aW5nLmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJp
bGl0eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01
NDgzLDYgKzU0OTEsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8q
IEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEw
ODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjQ4RjY4RTE5MDVE
NzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVG
Mjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMx
OEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFD
RTYzRDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKQEAgLTY3ODEsNiArNjc5MCw3IEBACiAJCQkJQzIxODFGQzIxOEE5NDhGQjAwMjVBMjM1IC8q
IEpTRXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAw
NUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAw
MjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMjkzMkE1NTE5MDVCNUU3
MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpZm5kZWYgVk1faAogI2RlZmluZSBWTV9oCiAKKyNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtMjA5LDYgKzIxMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgbWFrZVVzYWJsZUZyb21NdWx0aXBsZVRocmVhZHMoKSB7
IGhlYXAubWFjaGluZVRocmVhZHMoKS5tYWtlVXNhYmxlRnJvbU11bHRpcGxlVGhyZWFkcygpOyB9
CiAgICAgICAgIAorICAgICAgICBBUElEYXRhIGFwaURhdGE7CisKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWZQdHI8SlNMb2NrPiBtX2FwaUxvY2s7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229854</attachid>
            <date>2014-04-21 20:01:46 -0700</date>
            <delta_ts>2014-04-21 20:34:27 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>bug-131691-20140421200123.patch</filename>
            <type>text/plain</type>
            <size>49625</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NzIsNiArNzcy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0ZJTEVTCiAgICAgQVBJL0FQSUNhc3QuaAor
ICAgIEFQSS9BUElEYXRhLmgKICAgICBBUEkvSlNCYXNlLmgKICAgICBBUEkvSlNDVGVzdFJ1bm5l
clV0aWxzLmgKICAgICBBUEkvSlNDb250ZXh0UmVmLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQVBJRGF0YV9oCisjZGVmaW5lIEFQSURhdGFfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK3N0cnVjdCBBUElEYXRhIHsKKyAg
ICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBleHRlcm5hbE9iamVjdEdyYXBoOworICAgIFJldGFpblB0
cjxDRlR5cGVSZWY+IGV4dGVybmFsUmVtZW1iZXJlZFNldDsKK307CisKKyNlbHNlCisKK3N0cnVj
dCBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQVBJRGF0YV9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNjc2MTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDYgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXdyYXBwZXJGb3JK
U0NvbnRleAogQGltcGxlbWVudGF0aW9uIEpTVmlydHVhbE1hY2hpbmUgewogICAgIEpTQ29udGV4
dEdyb3VwUmVmIG1fZ3JvdXA7CiAgICAgTlNNYXBUYWJsZSAqbV9jb250ZXh0Q2FjaGU7Ci0gICAg
TlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5TTWFwVGFibGUgKm1fZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMTEwLDEz
ICsxMDgsMjIgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGV4dEdyb3VwUmVmOgogICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9u
c09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5OwogICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rp
b25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAg
IG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6
a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwotICAgIAot
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsK
LSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRl
ckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFs
aXR5OwotICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5p
dFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9u
cyBjYXBhY2l0eTowXTsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXTsKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pT
KG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgaWYgKCF2
bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgpIHsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rp
b25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8
IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICBOU1BvaW50ZXJG
dW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1N0cm9u
Z01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICB2
bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGggPSBhZG9wdE5TKAorICAgICAgICAgICAgW1tO
U01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9w
dGlvbnM6c3Ryb25nSURPcHRpb25zIGNhcGFjaXR5OjBdKTsKKyAgICB9CisKKyAgICBpZiAoIXZt
LmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkg
fCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKKyAgICAgICAgTlNQb2ludGVy
RnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1
ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKKyAgICAgICAg
dm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBhZG9wdE5TKAorICAgICAgICAgICAg
W1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1
ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0KICAgIAogICAgIFtK
U1ZNV3JhcHBlckNhY2hlIGFkZFdyYXBwZXI6c2VsZiBmb3JKU0NvbnRleHRHcm91cFJlZjpncm91
cF07CiAgCkBAIC0xMjcsOCArMTM0LDYgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgSlNDb250
ZXh0R3JvdXBSZWxlYXNlKG1fZ3JvdXApOwogICAgIFttX2NvbnRleHRDYWNoZSByZWxlYXNlXTsK
LSAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbGVhc2VdOwotICAgIFttX2V4dGVybmFsUmVt
ZW1iZXJlZFNldCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE1OSw3
ICsxNjQsOCBAQCAtIChib29sKWlzT2xkRXh0ZXJuYWxPYmplY3Q6KGlkKW9iamVjdAogLSAodm9p
ZClhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6KGlkKW9iamVjdAogewogICAgIEFTU0VSVChb
c2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pOwotICAgIFttX2V4dGVybmFsUmVtZW1i
ZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnRydWVdIGZvcktleTpv
YmplY3RdOworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19j
YXN0PE5TTWFwVGFibGUgKj4odG9KUyhtX2dyb3VwKS0+YXBpRGF0YS5leHRlcm5hbFJlbWVtYmVy
ZWRTZXQuZ2V0KCkpOworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0KIAogLSAodm9pZClh
ZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgpAQCAtMTcy
LDE4ICsxNzgsMjAgQEAgLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgdwog
ICAgIAogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKKworICAgIEpTQzo6
Vk0mIHZtID0gKnRvSlMobV9ncm91cCk7IAorICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CiAgICAgaWYgKFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b3duZXJdICYmICFbc2VsZiBp
c09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pCiAgICAgICAgIFtzZWxmIGFkZEV4dGVybmFsUmVt
ZW1iZXJlZE9iamVjdDpvd25lcl07Ci0gCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0g
W21fZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworCisgICAgTlNNYXBU
YWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0u
YXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICBOU01hcFRhYmxlICpvd25l
ZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAg
IGlmICghb3duZWRPYmplY3RzKSB7CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMg
d2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJG
dW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0
aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5T
UG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKICAgICAgICAgb3duZWRPYmplY3Rz
ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2
YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKLSAgICAgICAgW21fZXh0
ZXJuYWxPYmplY3RHcmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07Cisg
ICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9iamVjdHMgZm9yS2V5
Om93bmVyXTsKICAgICAgICAgW293bmVkT2JqZWN0cyByZWxlYXNlXTsKICAgICB9CiAKQEAgLTIw
Miw5ICsyMTAsMTEgQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplYwog
ICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKLSAgICAKLSAgICBOU01hcFRh
YmxlICpvd25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpv
d25lcl07CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworCisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFw
aCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdy
YXBoLmdldCgpKTsgCisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2Jq
ZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykKICAg
ICAgICAgcmV0dXJuOwogICAgCkBAIC0yMTgsOCArMjI4LDggQEAgLSAodm9pZClyZW1vdmVNYW5h
Z2VkUmVmZXJlbmNlOihpZClvYmplYwogICAgICAgICBOU01hcFJlbW92ZShvd25lZE9iamVjdHMs
IG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9iamVjdHMgY291bnRdKSB7Ci0gICAgICAgIFtt
X2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKLSAgICAgICAg
W21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CisgICAg
ICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CisgICAg
ICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0LmdldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwogICAgIH0KIH0KIApAQCAt
MjUwLDI1ICsyNjAsMTIgQEAgLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFwcGVy
IAogICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4dENhY2hlLCBnbG9iYWxDb250ZXh0LCB3cmFwcGVy
KTsKIH0KIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgKLXsKLSAgICByZXR1
cm4gbV9leHRlcm5hbE9iamVjdEdyYXBoOwotfQotCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxS
ZW1lbWJlcmVkU2V0Ci17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OwotfQot
CiBAZW5kCiAKIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYgdm0sIEpTQzo6
U2xvdFZpc2l0b3ImIHZpc2l0b3IsIHZvaWQqIHJvb3QpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFw
cGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAg
ICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01h
cFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2Jq
ZWN0R3JhcGhdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3Rh
dGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0
KCkpOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHN0YWNrOwogICAgICAgICBzdGFjay5hcHBlbmQo
cm9vdCk7CiAgICAgICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpKSB7CkBAIC0yODgsMTEgKzI4
NSw4IEBAIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYgdm0KIHZvaWQgc2Nh
bkV4dGVybmFsUmVtZW1iZXJlZFNldChKU0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNWaXJ0dWFsTWFjaGlu
ZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0
R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlmICghdmlydHVhbE1hY2hpbmUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGgg
PSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF07Ci0gICAgICAgIE5TTWFwVGFi
bGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IFt2aXJ0dWFsTWFjaGluZSBleHRlcm5hbFJlbWVt
YmVyZWRTZXRdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3Rh
dGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0
KCkpOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgp
KTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CiAgICAg
ICAgICAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBv
YmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRPYmplY3QgaW4gb3du
ZWRPYmplY3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNo
aW5lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjc2MTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw4ICs0NSw2IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3VwRnJvbVZpcnR1YWxN
YWMKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENv
bnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4dDooSlNDb250ZXh0ICop
d3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29u
dGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGg7Ci0KIEBlbmQKICNl
bmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRU
ZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKKworI2VuZGlmIC8v
IEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAor
CitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBib29s
IHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RG
b3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3Vz
RWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKworQGludGVyZmFjZSBPcGFx
dWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE9wYXF1ZU9i
akNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmplY3QKK3sKKyAgICByZXR1
cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFjZSBKU0NvbGxlY3Rpb24g
OiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNT
dHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBfZGljdCA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1ZSA9IFtfZGlj
dCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7CisgICAgICAg
IEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07CisgICAgICAgIGlm
IChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5l
IHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsK
KyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1
ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1
YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxm
XTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5XTsKK30KKwor
LSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYg
KCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFttYW5hZ2Vk
VmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2thYmxlRXhwb3J0cyA8SlNF
eHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKK0Bwcm9wZXJ0eSAo
YXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGludGVyZmFjZSBDbGlja2Fi
bGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZCljbGljazsKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09u
Y2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX3dlYWtPbmNs
aWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVd
OworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29uY2xp
Y2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07
CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
X29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUgKil3ZWFrT25j
bGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAo
SlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVd
OworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRs
ZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJh
eV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1lbnRUZXN0cyA6IE5TT2Jq
ZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2b2lkKWF2b2lkTW9kaWZ5
aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRW
YWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0VkZW5Db2xs
ZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVz
dDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1lbnRUZXN0cworKyAodm9p
ZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxvY10gaW5pdF07CisgICAg
ICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRbQCJj
bGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7
IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisg
ICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsgXAor
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUud2Vha09uY2xpY2sg
PSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAorICAgICAg
ICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOwor
ICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJk
aWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xp
Y2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1N5
bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiY2xpY2thYmxl
Lm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGljayBzdGlsbCBhcm91
bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ3
ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1
bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCisgICAg
ICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJs
ZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAg
ICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1bHQg
dG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYXZvaWRNb2RpZnlpbmdO
U01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxv
IiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RPYmpl
Y3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICBKU0NvbGxlY3Rp
b24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CisgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIEpTTWFuYWdl
ZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRo
VmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW2Nv
bnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3
aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0Cit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGll
cyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEpTQ29udGV4dCBhbmQg
Z2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJhZyBvZiBKU01hbmFnZWRW
YWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0gW09w
YXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290
Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBZGQgYSBidW5j
aCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAgICAg
ICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQ
cm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQ
cm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6
Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVy
dGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4
dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJv
cGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29u
dGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVy
dGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZv
cktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRp
ZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRd
IGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVsbCBjb2xsZWN0aW9uLgor
ICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZv
cktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAgICAgICAgICAgSlNWYWx1
ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJl
ciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJv
cGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgSlNW
YWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
aXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNT
dHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0p
OworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIg
aXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVs
bF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMg
dW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250ZXh0IGhhcyBkaXNhcHBl
YXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVzIGhhdmUgYmVlbiBjbGVh
cmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwiLCAhW215UHJpdmF0ZVBy
b3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
bWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNz
YWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyBuaWwiLCAhW215UHJp
dmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJu
b3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVl
Rm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0KK30KKworCisrICh2b2lk
KXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0Cit7CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250
ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSB0aGUgcm9vdCwg
bWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9uCisg
ICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgorICAg
ICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBjb250ZXh0W0Ai
cm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAor
ICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZpYSB0
aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVjdCB3
ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KKyAgICAgICAgT3Bh
cXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOwor
ICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNoaWxk
IHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5h
Z2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSBy
ZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgSlNN
YW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBtYW5hZ2Vk
SlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0
XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVu
Y2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0IHNob3VsZCByZXNj
YW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCisgICAgICAgIEpT
U3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIG1hbmFnZWQgSlNW
YWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29sbGVjdGlv
biBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09iamVjdCB2
YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1h
Y2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBPcGFx
dWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNv
bnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZENoaWxkID0gbmls
OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTQ29udGV4dCAqY29u
dGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGNvbnRleHRSZWYg
PSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAgICAgSlNHbG9iYWxDb250
ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAgICAgICAgICBPcGFxdWVP
YmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAg
ICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAgICAgCisgICAgICAgICAg
ICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAgICBb
Y29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNoaWxkIHdpdGhPd25l
cjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAganNDaGlsZFtA
Im15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAgICBtYW5hZ2VkQ2hpbGQg
PSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ2hpbGRdOworICAgICAg
ICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2Vk
Q2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNT
eW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHRSZWYpOworICAgICAg
ICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc0No
aWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAImNo
aWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0dWFsTWFjaGluZSBkaXNh
cHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0eSJd
IHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgICAgICAgICBKU0dsb2Jh
bENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9CisgICAgfQorfQorQGVuZAor
Cit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdlZFZhbHVlU2FuaXR5VGVz
dF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRNb2RpZnlpbmdOU01hcFRh
YmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBi
YWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRlc3Rz
IHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0XTsKKyAgICAg
ICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGluZVdyYXBw
ZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24g
MTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJDdXJyZW50VGhpc0luc2lk
ZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0ICJKU0V4
cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKIAogZXh0ZXJu
ICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBAIGJvb2wgdGVzdFhZWlRlc3Rl
ZCA9IGZhbHNlOwogLSAoaWQpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nKilzdHJpbmc7CiBAcHJv
cGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLUBwcm9wZXJ0eSAoYXNz
aWduKSBKU1ZhbHVlICpvbmNsaWNrOwotQHByb3BlcnR5IChhc3NpZ24pIEpTVmFsdWUgKndlYWtP
bmNsaWNrOwogLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBAZW5kCiAKQEAgLTEy
NiwxMyArMTI1LDkgQEAgQGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3QgPFRleHRYWVo+CiBA
cHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkgaW50IHo7Ci0tICh2
b2lkKWNsaWNrOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7Ci0gICAgSlNNYW5h
Z2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOwotICAgIEpTTWFuYWdlZFZhbHVlICptX29u
Y2xpY2tIYW5kbGVyOwotfQorQGltcGxlbWVudGF0aW9uIFRleHRYWVoKIEBzeW50aGVzaXplIHg7
CiBAc3ludGhlc2l6ZSB5OwogQHN5bnRoZXNpemUgejsKQEAgLTE1MCwzMiArMTQ1LDYgQEAgLSAo
dm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFlaVGVzdGVkID0gW21l
c3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYmIHogPT0gNTsKIH0K
LS0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQotewotICAgIG1fd2Vha09u
Y2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1
ZV07Ci19Ci0KLS0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0gICAgbV9v
bmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFs
dWVdOwotICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVu
Y2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07Ci19Ci0tIChKU1ZhbHVlICopd2Vh
a09uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fd2Vha09uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLX0K
LS0gKEpTVmFsdWUgKilvbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX29uY2xpY2tIYW5kbGVyIHZh
bHVlXTsKLX0KLS0gKHZvaWQpY2xpY2sKLXsKLSAgICBpZiAoIW1fb25jbGlja0hhbmRsZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRs
ZXIgdmFsdWVdOwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJh
eV1dOwotfQogQGVuZAogCiBAY2xhc3MgVGlueURPTU5vZGU7CkBAIC0yMzgsNDcgKzIwNyw2IEBA
IC0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCi1AaW50
ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFZhbHVlOihKU1ZhbHVl
ICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLS0gKEpTVmFsdWUgKil2YWx1ZUZvcktl
eTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24g
ewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OwotfQotLSAoaWQpaW5pdAotewotICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRW
YWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAob2xkTWFuYWdlZFZhbHVl
KSB7Ci0gICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07
Ci0gICAgICAgIGlmIChvbGRWYWx1ZSkKLSAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZp
cnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhP
d25lcjpzZWxmXTsKLSAgICB9Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1ZS5j
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKLSAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6
a2V5XTsKLX0KLQotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQotewot
ICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5Omtl
eV07Ci0gICAgaWYgKCFtYW5hZ2VkVmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOwotfQotQGVuZAotCiBAcHJvdG9jb2wgSW5pdEEgPEpT
RXhwb3J0PgogLSAoaWQpaW5pdFdpdGhBOihpbnQpYTsKIC0gKGludClpbml0aWFsaXplOwpAQCAt
NTEwLDU1ICs0MzgsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0
aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOwotICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9IFtUZXN0T2Jq
ZWN0IHRlc3RPYmplY3RdOwotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmpl
Y3Q7Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJl
bmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOwotICAgICAgICAg
ICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0
cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKLSAgICAgICAgICAgIFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhl
bGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQy
IGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKLSAgICAgICAgICAgIFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRl
eHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07Ci0gICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNv
bnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0KLSAgICAg
ICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQ
cml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2Fn
ZSJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGll
cyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5p
dGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJp
dmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFu
XSAmJiBbaXNIYW0gdG9Cb29sXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2Ug
aXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3Ry
aW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9u
dW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9
PSA0Mik7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxs
IiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJu
b3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBp
c1VuZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0g
aXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0pOwot
ICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9u
dW1iZXIgaXMgNDIiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1i
ZXIiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCAh
W215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIs
ICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5l
ZCJdKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICBKU1ZhbHVlICpt
ZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RP
YmplY3RdOwotICAgICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0Owot
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVj
dGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01h
bmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJv
b3RPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07Ci0gICAgICAgICAg
ICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRleHRbQCJibG9ja0Nh
bGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7CkBAIC05NzcsNjAgKzg1Niw2IEBAIHZvaWQgdGVzdE9i
amVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIFRl
eHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgewotICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RYWVo7
Ci0KLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAgICAg
ICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNr
ID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBc
Ci0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg
ICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAnZm9vJzsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAgICAgICJd
OwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBb
dGVzdFhZWiBjbGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2
ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVou
b25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3Vu
ZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7
Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLndlYWtP
bmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNsaWNrIG5vdCBhcm91
bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBbY29u
dGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxz
ZTsgXAotICAgICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCi0gICAgICAgICAgICAiXTsK
LSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRvZXNuJ3QgZmlyZSIs
ICFbcmVzdWx0IHRvQm9vbF0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNl
cG9vbCB7CiAgICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZtID0gW1tKU1ZpcnR1YWxNYWNoaW5l
IGFsbG9jXSBpbml0XTsKICAgICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVjdCA9IFtUZXN0T2Jq
ZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha1ZhbHVlOwpAQCAt
MTMyNiw0MiArMTE1MSwxMSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgW1tK
U1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0RpY3Rpb25hcnld
OwogICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRd
IHRvQXJyYXldOwogICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgLy8g
Q3JlYXRlIHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2UgYW4g
RWRlbkNvbGxlY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5hbCBv
YmplY3QgZ3JhcGguCi0gICAgICAgIFRlc3RPYmplY3QgKnJvb3QgPSBbVGVzdE9iamVjdCB0ZXN0
T2JqZWN0XTsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdDsKLSAgICAgICAgfQotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNv
bGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAg
ICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9iamVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaAotICAgICAgICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2UgYWxy
ZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRlbkNvbGxlY3Rpb24uCi0gICAgICAgIFRlc3RPYmpl
Y3QgKmNoaWxkID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIFtjb250ZXh0LnZp
cnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJvb3RdOwot
Ci0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkg
YmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSByZXNjYW4KLSAgICAgICAgLy8gdGhlIGV4dGVy
bmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVj
dCA9IG5pbDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1ZhbHVl
ICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6
Y29udGV4dF07Ci0gICAgICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUg
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0LnZp
cnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25l
cjpjaGlsZF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5Db2xs
ZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwgb2Jq
ZWN0IGdyYXBoLgotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCi0gICAgICAgIGNoZWNr
UmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZhbHVl
cyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7Ci0gICAgfQotCisgICAgCiAgICAg
Y3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKTsKICAgICBydW5EYXRlVGVzdHMoKTsK
ICAgICBydW5KU0V4cG9ydFRlc3RzKCk7CisgICAgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKCk7
CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJ
KHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc4Nyw2
ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJ
XEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQ
SVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJRGF0YS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29yZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5oIiAvPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0x
Mzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhc3Qu
aCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAgICA8RmlsdGVyPkFQSTwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJ
XEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NzYxNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDYgKzE2NTYsNyBAQAogCQlDMjI1NDk0
MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNs
b3RWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBs
aW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNDAzMDU1MTRCNDA0
RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3Bh
Y2UuY3BwICovOyB9OworCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0OEY2OEMxOTA1
RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRp
c3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJ
QzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFs
dWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVE
NzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87IH07CkBAIC0xNjY1
LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOEZG
MTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAvKiBI
YW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMu
aCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODhCMkREMThBNTRE
M0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87IH07CisJCUMyOTMyQTU1MTkwNUI1RTcwMEU3
QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5
TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVk
V2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdl
YWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJp
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
OTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi87
IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyog
R0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8q
IFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNs
b3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0MDMwNTMxNEI0
MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0
YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RDcwOTkxNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxl
QmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZUJs
b2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJEQzE4QTU0
RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGF0ZVRlc3RzLm1t
OyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1l
bW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50
VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkQ2MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcDsgcGF0aCA9
IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVu
Y2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVm
ZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVz
aXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0
ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2OTgsNiArMzcw
Myw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJ
CQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIy
RTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAorCQkJCUMyOTMyQTUzMTkw
NUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLywKKwkJCQlDMjkzMkE1
NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovLAogCQkJKTsK
IAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTkyLDYg
KzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0
eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NDgz
LDYgKzU0OTEsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODEx
IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjQ4RjY4RTE5MDVENzND
MDA3MEEyQjEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0
MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUy
NTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYz
RDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTY3ODEsNiArNjc5MCw3IEBACiAJCQkJQzIxODFGQzIxOEE5NDhGQjAwMjVBMjM1IC8qIEpT
RXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYw
NjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRD
ODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMjkzMkE1NTE5MDVCNUU3MDBF
N0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZm5kZWYgVk1faAogI2RlZmluZSBWTV9oCiAKKyNpbmNsdWRlICJBUElEYXRhLmgiCiAj
aW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTU4LDYgKzU1OSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBPd25QdHI8QnVpbHRpbkV4ZWN1dGFibGVzPiBtX2J1aWx0aW5FeGVjdXRh
YmxlczsKICAgICAgICAgUmVmQ291bnRlZEFycmF5PFN0YWNrRnJhbWU+IG1fZXhjZXB0aW9uU3Rh
Y2s7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8V2F0Y2hwb2ludFNldD4+IG1faW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50U2V0czsKKworICAgICAgICBBUElEYXRhIGFwaURhdGE7CiAg
ICAgfTsKIAogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229856</attachid>
            <date>2014-04-21 20:34:32 -0700</date>
            <delta_ts>2014-04-22 09:20:00 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>bug-131691-20140421203410.patch</filename>
            <type>text/plain</type>
            <size>49598</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NzIsNiArNzcy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0ZJTEVTCiAgICAgQVBJL0FQSUNhc3QuaAor
ICAgIEFQSS9BUElEYXRhLmgKICAgICBBUEkvSlNCYXNlLmgKICAgICBBUEkvSlNDVGVzdFJ1bm5l
clV0aWxzLmgKICAgICBBUEkvSlNDb250ZXh0UmVmLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQVBJRGF0YV9oCisjZGVmaW5lIEFQSURhdGFfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK3N0cnVjdCBBUElEYXRhIHsKKyAg
ICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBleHRlcm5hbE9iamVjdEdyYXBoOworICAgIFJldGFpblB0
cjxDRlR5cGVSZWY+IGV4dGVybmFsUmVtZW1iZXJlZFNldDsKK307CisKKyNlbHNlCisKK3N0cnVj
dCBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQVBJRGF0YV9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNjc2MTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDggKzg2LDYgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAqKXdyYXBwZXJGb3JK
U0NvbnRleAogQGltcGxlbWVudGF0aW9uIEpTVmlydHVhbE1hY2hpbmUgewogICAgIEpTQ29udGV4
dEdyb3VwUmVmIG1fZ3JvdXA7CiAgICAgTlNNYXBUYWJsZSAqbV9jb250ZXh0Q2FjaGU7Ci0gICAg
TlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5TTWFwVGFibGUgKm1fZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5pdApAQCAtMTEwLDEz
ICsxMDgsMjIgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGV4dEdyb3VwUmVmOgogICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9u
c09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNvbmFsaXR5OwogICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rp
b25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAg
IG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6
a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5OjBdOwotICAgIAot
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsK
LSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRl
ckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFs
aXR5OwotICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5p
dFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9u
cyBjYXBhY2l0eTowXTsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXTsKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pT
KG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgaWYgKCF2
bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgpIHsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rp
b25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8
IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICBOU1BvaW50ZXJG
dW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1N0cm9u
Z01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICB2
bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGggPSBhZG9wdE5TKAorICAgICAgICAgICAgW1tO
U01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9w
dGlvbnM6c3Ryb25nSURPcHRpb25zIGNhcGFjaXR5OjBdKTsKKyAgICB9CisKKyAgICBpZiAoIXZt
LmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkg
fCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKKyAgICAgICAgTlNQb2ludGVy
RnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1
ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKKyAgICAgICAg
dm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBhZG9wdE5TKAorICAgICAgICAgICAg
W1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1
ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0KICAgIAogICAgIFtK
U1ZNV3JhcHBlckNhY2hlIGFkZFdyYXBwZXI6c2VsZiBmb3JKU0NvbnRleHRHcm91cFJlZjpncm91
cF07CiAgCkBAIC0xMjcsOCArMTM0LDYgQEAgLSAodm9pZClkZWFsbG9jCiB7CiAgICAgSlNDb250
ZXh0R3JvdXBSZWxlYXNlKG1fZ3JvdXApOwogICAgIFttX2NvbnRleHRDYWNoZSByZWxlYXNlXTsK
LSAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbGVhc2VdOwotICAgIFttX2V4dGVybmFsUmVt
ZW1iZXJlZFNldCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTE1OSw3
ICsxNjQsOCBAQCAtIChib29sKWlzT2xkRXh0ZXJuYWxPYmplY3Q6KGlkKW9iamVjdAogLSAodm9p
ZClhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6KGlkKW9iamVjdAogewogICAgIEFTU0VSVChb
c2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pOwotICAgIFttX2V4dGVybmFsUmVtZW1i
ZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnRydWVdIGZvcktleTpv
YmplY3RdOworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19j
YXN0PE5TTWFwVGFibGUgKj4odG9KUyhtX2dyb3VwKS0+YXBpRGF0YS5leHRlcm5hbFJlbWVtYmVy
ZWRTZXQuZ2V0KCkpOworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0KIAogLSAodm9pZClh
ZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgpAQCAtMTcy
LDE4ICsxNzgsMjAgQEAgLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgdwog
ICAgIAogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKKworICAgIEpTQzo6
Vk0mIHZtID0gKnRvSlMobV9ncm91cCk7IAorICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2
bSk7CiAgICAgaWYgKFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b3duZXJdICYmICFbc2VsZiBp
c09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pCiAgICAgICAgIFtzZWxmIGFkZEV4dGVybmFsUmVt
ZW1iZXJlZE9iamVjdDpvd25lcl07Ci0gCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0g
W21fZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworCisgICAgTlNNYXBU
YWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0u
YXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICBOU01hcFRhYmxlICpvd25l
ZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAg
IGlmICghb3duZWRPYmplY3RzKSB7CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMg
d2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJG
dW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0
aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5T
UG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKICAgICAgICAgb3duZWRPYmplY3Rz
ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2
YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKLSAgICAgICAgW21fZXh0
ZXJuYWxPYmplY3RHcmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07Cisg
ICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9iamVjdHMgZm9yS2V5
Om93bmVyXTsKICAgICAgICAgW293bmVkT2JqZWN0cyByZWxlYXNlXTsKICAgICB9CiAKQEAgLTIw
Miw5ICsyMTAsMTEgQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplYwog
ICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKLSAgICAKLSAgICBOU01hcFRh
YmxlICpvd25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpv
d25lcl07CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworCisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFw
aCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdy
YXBoLmdldCgpKTsgCisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2Jq
ZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykKICAg
ICAgICAgcmV0dXJuOwogICAgCkBAIC0yMTgsOCArMjI4LDggQEAgLSAodm9pZClyZW1vdmVNYW5h
Z2VkUmVmZXJlbmNlOihpZClvYmplYwogICAgICAgICBOU01hcFJlbW92ZShvd25lZE9iamVjdHMs
IG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9iamVjdHMgY291bnRdKSB7Ci0gICAgICAgIFtt
X2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKLSAgICAgICAg
W21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CisgICAg
ICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CisgICAg
ICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0LmdldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwogICAgIH0KIH0KIApAQCAt
MjUwLDI1ICsyNjAsMTIgQEAgLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFwcGVy
IAogICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4dENhY2hlLCBnbG9iYWxDb250ZXh0LCB3cmFwcGVy
KTsKIH0KIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgKLXsKLSAgICByZXR1
cm4gbV9leHRlcm5hbE9iamVjdEdyYXBoOwotfQotCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxS
ZW1lbWJlcmVkU2V0Ci17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OwotfQot
CiBAZW5kCiAKIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYgdm0sIEpTQzo6
U2xvdFZpc2l0b3ImIHZpc2l0b3IsIHZvaWQqIHJvb3QpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFw
cGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAg
ICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01h
cFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2Jq
ZWN0R3JhcGhdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3Rh
dGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0
KCkpOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHN0YWNrOwogICAgICAgICBzdGFjay5hcHBlbmQo
cm9vdCk7CiAgICAgICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpKSB7CkBAIC0yODgsMTEgKzI4
NSw4IEBAIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYgdm0KIHZvaWQgc2Nh
bkV4dGVybmFsUmVtZW1iZXJlZFNldChKU0M6OlZNJiB2bSwgSlNDOjpTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNWaXJ0dWFsTWFjaGlu
ZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0
R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlmICghdmlydHVhbE1hY2hpbmUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGgg
PSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF07Ci0gICAgICAgIE5TTWFwVGFi
bGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IFt2aXJ0dWFsTWFjaGluZSBleHRlcm5hbFJlbWVt
YmVyZWRTZXRdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3Rh
dGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0
KCkpOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgp
KTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CiAgICAg
ICAgICAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBv
YmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRPYmplY3QgaW4gb3du
ZWRPYmplY3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNo
aW5lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjc2MTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSw4ICs0NSw2IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3VwRnJvbVZpcnR1YWxN
YWMKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENv
bnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4dDooSlNDb250ZXh0ICop
d3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29u
dGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGg7Ci0KIEBlbmQKICNl
bmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRU
ZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKKworI2VuZGlmIC8v
IEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAor
CitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2NyaXB0aW9uLCBib29s
IHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RG
b3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3Vz
RWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKworQGludGVyZmFjZSBPcGFx
dWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE9wYXF1ZU9i
akNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmplY3QKK3sKKyAgICByZXR1
cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFjZSBKU0NvbGxlY3Rpb24g
OiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNT
dHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRd
OworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICBfZGljdCA9
IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3Ry
aW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRWYWx1ZSA9IFtfZGlj
dCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVlKSB7CisgICAgICAg
IEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07CisgICAgICAgIGlm
IChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5l
IHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsK
KyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1
ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1
YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdpdGhPd25lcjpzZWxm
XTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6a2V5XTsKK30KKwor
LSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYg
KCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFttYW5hZ2Vk
VmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2thYmxlRXhwb3J0cyA8SlNF
eHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKK0Bwcm9wZXJ0eSAo
YXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGludGVyZmFjZSBDbGlja2Fi
bGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZCljbGljazsKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09u
Y2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAg
aWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBzZWxmOworfQorCist
ICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX3dlYWtPbmNs
aWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVd
OworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAgICBtX29uY2xp
Y2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07
CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
X29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpTVmFsdWUgKil3ZWFrT25j
bGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOworfQorLSAo
SlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVd
OworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRs
ZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJh
eV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1lbnRUZXN0cyA6IE5TT2Jq
ZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2b2lkKWF2b2lkTW9kaWZ5
aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRW
YWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0VkZW5Db2xs
ZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVz
dDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1lbnRUZXN0cworKyAodm9p
ZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAg
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxvY10gaW5pdF07CisgICAg
ICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRbQCJj
bGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgW2NvbnRl
eHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7
IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCisg
ICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAgICAgICAgfTsgXAor
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUud2Vha09uY2xpY2sg
PSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAorICAgICAg
ICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOwor
ICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJk
aWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xp
Y2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1N5
bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250
ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
ICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiY2xpY2thYmxl
Lm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGljayBzdGlsbCBhcm91
bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJ3
ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1
bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCisgICAg
ICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJs
ZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAg
ICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1bHQg
dG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYXZvaWRNb2RpZnlpbmdO
U01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxv
IiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RPYmpl
Y3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICBKU0NvbGxlY3Rp
b24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07CisgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIEpTTWFuYWdl
ZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRo
VmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW2Nv
bnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3
aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0Cit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGll
cyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEpTQ29udGV4dCBhbmQg
Z2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJhZyBvZiBKU01hbmFnZWRW
YWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxv
Y10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0gW09w
YXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290
Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBZGQgYSBidW5j
aCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAgICAg
ICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQ
cm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQ
cm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6
Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVy
dGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4
dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJv
cGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29u
dGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVy
dGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZv
cktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRp
ZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRd
IGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVsbCBjb2xsZWN0aW9uLgor
ICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZv
cktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAgICAgICAgICAgSlNWYWx1
ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJl
ciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJv
cGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgSlNW
YWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
aXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNT
dHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0p
OworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIg
aXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVs
bF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMg
dW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0pOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250ZXh0IGhhcyBkaXNhcHBl
YXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVzIGhhdmUgYmVlbiBjbGVh
cmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwiLCAhW215UHJpdmF0ZVBy
b3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAi
bWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNz
YWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyBuaWwiLCAhW215UHJp
dmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7CisgICAgICAgIGNoZWNr
UmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJu
b3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVl
Rm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0KK30KKworCisrICh2b2lk
KXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0Cit7CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250
ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSB0aGUgcm9vdCwg
bWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9uCisg
ICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgorICAg
ICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBjb250ZXh0W0Ai
cm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAor
ICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZpYSB0
aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVjdCB3
ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KKyAgICAgICAgT3Bh
cXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOwor
ICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNoaWxk
IHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5h
Z2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSBy
ZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgSlNN
YW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBtYW5hZ2Vk
SlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0
XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVu
Y2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0IHNob3VsZCByZXNj
YW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCisgICAgICAgIEpT
U3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIG1hbmFnZWQgSlNW
YWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29sbGVjdGlv
biBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09iamVjdCB2
YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1h
Y2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBPcGFx
dWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVmIGNv
bnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZENoaWxkID0gbmls
OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTQ29udGV4dCAqY29u
dGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGNvbnRleHRSZWYg
PSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAgICAgSlNHbG9iYWxDb250
ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAgICAgICAgICBPcGFxdWVP
YmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAg
ICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAgICAgCisgICAgICAgICAg
ICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAgICBb
Y29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNoaWxkIHdpdGhPd25l
cjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAganNDaGlsZFtA
Im15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAgICBtYW5hZ2VkQ2hpbGQg
PSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ2hpbGRdOworICAgICAg
ICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2Vk
Q2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNT
eW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHRSZWYpOworICAgICAg
ICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc0No
aWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAImNo
aWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0dWFsTWFjaGluZSBkaXNh
cHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0eSJd
IHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgICAgICAgICBKU0dsb2Jh
bENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9CisgICAgfQorfQorQGVuZAor
Cit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAgQGF1dG9yZWxlYXNlcG9v
bCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdlZFZhbHVlU2FuaXR5VGVz
dF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRNb2RpZnlpbmdOU01hcFRh
YmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBi
YWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRlc3Rz
IHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25UZXN0XTsKKyAgICAg
ICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGluZVdyYXBw
ZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkocmV2aXNpb24g
MTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJDdXJyZW50VGhpc0luc2lk
ZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAjaW1wb3J0ICJKU0V4
cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKIAogZXh0ZXJu
ICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRl
eHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBAIGJvb2wgdGVzdFhZWlRlc3Rl
ZCA9IGZhbHNlOwogLSAoaWQpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nKilzdHJpbmc7CiBAcHJv
cGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLUBwcm9wZXJ0eSAoYXNz
aWduKSBKU1ZhbHVlICpvbmNsaWNrOwotQHByb3BlcnR5IChhc3NpZ24pIEpTVmFsdWUgKndlYWtP
bmNsaWNrOwogLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBAZW5kCiAKQEAgLTEy
NiwxMyArMTI1LDkgQEAgQGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3QgPFRleHRYWVo+CiBA
cHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkgaW50IHo7Ci0tICh2
b2lkKWNsaWNrOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7Ci0gICAgSlNNYW5h
Z2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOwotICAgIEpTTWFuYWdlZFZhbHVlICptX29u
Y2xpY2tIYW5kbGVyOwotfQorQGltcGxlbWVudGF0aW9uIFRleHRYWVoKIEBzeW50aGVzaXplIHg7
CiBAc3ludGhlc2l6ZSB5OwogQHN5bnRoZXNpemUgejsKQEAgLTE1MCwzMiArMTQ1LDYgQEAgLSAo
dm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFlaVGVzdGVkID0gW21l
c3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYmIHogPT0gNTsKIH0K
LS0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQotewotICAgIG1fd2Vha09u
Y2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1
ZV07Ci19Ci0KLS0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0gICAgbV9v
bmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFs
dWVdOwotICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVu
Y2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07Ci19Ci0tIChKU1ZhbHVlICopd2Vh
a09uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fd2Vha09uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLX0K
LS0gKEpTVmFsdWUgKilvbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX29uY2xpY2tIYW5kbGVyIHZh
bHVlXTsKLX0KLS0gKHZvaWQpY2xpY2sKLXsKLSAgICBpZiAoIW1fb25jbGlja0hhbmRsZXIpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21fb25jbGlja0hhbmRs
ZXIgdmFsdWVdOwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpbTlNBcnJheSBhcnJh
eV1dOwotfQogQGVuZAogCiBAY2xhc3MgVGlueURPTU5vZGU7CkBAIC0yMzgsNDcgKzIwNyw2IEBA
IC0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAogQGVuZAogCi1AaW50
ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFZhbHVlOihKU1ZhbHVl
ICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLS0gKEpTVmFsdWUgKil2YWx1ZUZvcktl
eTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24g
ewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OwotfQotLSAoaWQpaW5pdAotewotICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAgICByZXR1cm4gbmls
OwotCi0gICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwotCi0g
ICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRW
YWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAob2xkTWFuYWdlZFZhbHVl
KSB7Ci0gICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07
Ci0gICAgICAgIGlmIChvbGRWYWx1ZSkKLSAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZp
cnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhP
d25lcjpzZWxmXTsKLSAgICB9Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1ZS5j
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKLSAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6
a2V5XTsKLX0KLQotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQotewot
ICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5Omtl
eV07Ci0gICAgaWYgKCFtYW5hZ2VkVmFsdWUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOwotfQotQGVuZAotCiBAcHJvdG9jb2wgSW5pdEEgPEpT
RXhwb3J0PgogLSAoaWQpaW5pdFdpdGhBOihpbnQpYTsKIC0gKGludClpbml0aWFsaXplOwpAQCAt
NTEwLDU1ICs0MzgsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBA
YXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0
aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOwotICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVjdCA9IFtUZXN0T2Jq
ZWN0IHRlc3RPYmplY3RdOwotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmpl
Y3Q7Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJl
bmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOwotICAgICAgICAg
ICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0
cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKLSAgICAgICAgICAgIFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhl
bGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQy
IGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKLSAgICAgICAgICAgIFtt
eVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRl
eHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07Ci0gICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNv
bnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0KLSAgICAg
ICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQ
cml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2Fn
ZSJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGll
cyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5p
dGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJp
dmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFu
XSAmJiBbaXNIYW0gdG9Cb29sXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2Ug
aXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3Ry
aW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9u
dW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9
PSA0Mik7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxs
IiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJu
b3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBp
c1VuZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0g
aXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0pOwot
ICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9u
dW1iZXIgaXMgNDIiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1i
ZXIiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCAh
W215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIs
ICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5l
ZCJdKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICBKU1ZhbHVlICpt
ZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RP
YmplY3RdOwotICAgICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0Owot
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVj
dGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01h
bmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJv
b3RPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07Ci0gICAgICAgICAg
ICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRd
OwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRleHRbQCJibG9ja0Nh
bGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7CkBAIC05NzcsNjAgKzg1Niw2IEBAIHZvaWQgdGVzdE9i
amVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBK
U0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIFRl
eHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotCi0gICAgICAgIEBhdXRv
cmVsZWFzZXBvb2wgewotICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoiXSA9IHRlc3RYWVo7
Ci0KLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAgICAg
ICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVzdFhZWi5vbmNsaWNr
ID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBc
Ci0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAg
ICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiAnZm9vJzsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAgICAgICJd
OwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBb
dGVzdFhZWiBjbGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2
ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVou
b25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3Vu
ZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7
Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLndlYWtP
bmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNsaWNrIG5vdCBhcm91
bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBbY29u
dGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxz
ZTsgXAotICAgICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCi0gICAgICAgICAgICAiXTsK
LSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRvZXNuJ3QgZmlyZSIs
ICFbcmVzdWx0IHRvQm9vbF0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNl
cG9vbCB7CiAgICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZtID0gW1tKU1ZpcnR1YWxNYWNoaW5l
IGFsbG9jXSBpbml0XTsKICAgICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVjdCA9IFtUZXN0T2Jq
ZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha1ZhbHVlOwpAQCAt
MTMyNiw0MiArMTE1MSwxMSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICAgICAgW1tK
U1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0RpY3Rpb25hcnld
OwogICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRd
IHRvQXJyYXldOwogICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgLy8g
Q3JlYXRlIHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2UgYW4g
RWRlbkNvbGxlY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5hbCBv
YmplY3QgZ3JhcGguCi0gICAgICAgIFRlc3RPYmplY3QgKnJvb3QgPSBbVGVzdE9iamVjdCB0ZXN0
T2JqZWN0XTsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdDsKLSAgICAgICAgfQotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNv
bGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAg
ICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9iamVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaAotICAgICAgICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2UgYWxy
ZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRlbkNvbGxlY3Rpb24uCi0gICAgICAgIFRlc3RPYmpl
Y3QgKmNoaWxkID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIFtjb250ZXh0LnZp
cnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJvb3RdOwot
Ci0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkg
YmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSByZXNjYW4KLSAgICAgICAgLy8gdGhlIGV4dGVy
bmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVj
dCA9IG5pbDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1ZhbHVl
ICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6
Y29udGV4dF07Ci0gICAgICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUg
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0LnZp
cnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25l
cjpjaGlsZF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5Db2xs
ZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwgb2Jq
ZWN0IGdyYXBoLgotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVj
ayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCi0gICAgICAgIGNoZWNr
UmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZhbHVl
cyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7Ci0gICAgfQotCisgICAgCiAgICAg
Y3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKTsKICAgICBydW5EYXRlVGVzdHMoKTsK
ICAgICBydW5KU0V4cG9ydFRlc3RzKCk7CisgICAgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKCk7
CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJ
KHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc4Nyw2
ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJ
XEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQ
SVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJRGF0YS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29yZS5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5oIiAvPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0x
Mzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhc3Qu
aCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAgICA8RmlsdGVyPkFQSTwv
RmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJ
XEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NzYxNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDYgKzE2NTYsNyBAQAogCQlDMjI1NDk0
MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNs
b3RWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBs
aW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNDAzMDU1MTRCNDA0
RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3Bh
Y2UuY3BwICovOyB9OworCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0OEY2OEMxOTA1
RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRp
c3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJ
QzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFs
dWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVE
NzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87IH07CkBAIC0xNjY1
LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOEZG
MTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyODMxOTAyMTZGRTUzM0UwMDE1N0JGRCAvKiBI
YW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMu
aCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODhCMkREMThBNTRE
M0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87IH07CisJCUMyOTMyQTU1MTkwNUI1RTcwMEU3
QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5
TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlDMjk4MUZEODE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVk
V2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlDMjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdl
YWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJp
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
OTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi87
IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlDMjIzOUQxNjE2MjYyQkREMDA1QUM1RkQgLyog
R0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NUaHJlYWQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8q
IFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNs
b3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0MDMwNTMxNEI0
MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0
YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcFN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RDcwOTkxNkRFOTlGNDAwRkNB
NkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxl
QmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZUJs
b2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJEQzE4QTU0
RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3Rz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gRGF0ZVRlc3RzLm1t
OyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IE1l
bW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50
VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkQ2MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcDsgcGF0aCA9
IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVu
Y2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVm
ZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVz
aXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXcml0
ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM2OTgsNiArMzcw
Myw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3RhcGkuanMgKi8sCiAJ
CQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8sCiAJCQkJNjUxMTIy
RTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAorCQkJCUMyOTMyQTUzMTkw
NUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLywKKwkJCQlDMjkzMkE1
NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovLAogCQkJKTsK
IAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zOTkyLDYg
KzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmlu
Zy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5n
LmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktpdEF2YWlsYWJpbGl0
eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01NDgz
LDYgKzU0OTEsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJGRkJFMTAwNUEwODEx
IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjQ4RjY4RTE5MDVENzND
MDA3MEEyQjEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFBQkNERTcxOEVGMjk0
MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJEQTc3ODMxOEUy
NTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFDRTYz
RDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
QEAgLTY3ODEsNiArNjc5MCw3IEBACiAJCQkJQzIxODFGQzIxOEE5NDhGQjAwMjVBMjM1IC8qIEpT
RXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBBNEY4NTY3MDAwNUYw
NjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUExNjdFRjk0NDAwMjRD
ODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMjkzMkE1NTE5MDVCNUU3MDBF
N0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpZm5kZWYgVk1faAogI2RlZmluZSBWTV9oCiAKKyNpbmNsdWRlICJBUElEYXRhLmgiCiAj
aW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2Nh
dG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTEwLDYgKzUxMSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0
YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCisgICAgICAg
IEFQSURhdGEgYXBpRGF0YTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlv
blNjb3BlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229887</attachid>
            <date>2014-04-22 09:20:06 -0700</date>
            <delta_ts>2014-04-22 09:47:13 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>bug-131691-20140422091946.patch</filename>
            <type>text/plain</type>
            <size>49610</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NzIsNiArNzcy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0ZJTEVTCiAgICAgQVBJL0FQSUNhc3QuaAor
ICAgIEFQSS9BUElEYXRhLmgKICAgICBBUEkvSlNCYXNlLmgKICAgICBBUEkvSlNDVGVzdFJ1bm5l
clV0aWxzLmgKICAgICBBUEkvSlNDb250ZXh0UmVmLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNDX0FQSURhdGFfaAorI2RlZmluZSBKU0NfQVBJRGF0YV9oCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworc3RydWN0IEFQSURh
dGEgeworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4dGVybmFsT2JqZWN0R3JhcGg7CisgICAg
UmV0YWluUHRyPENGVHlwZVJlZj4gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworfTsKKworI2Vsc2UK
Kworc3RydWN0IEFQSURhdGEgeyB9OworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NfQVBJRGF0YV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lv
biAxNjc2MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAq
KXdyYXBwZXJGb3JKU0NvbnRleAogQGltcGxlbWVudGF0aW9uIEpTVmlydHVhbE1hY2hpbmUgewog
ICAgIEpTQ29udGV4dEdyb3VwUmVmIG1fZ3JvdXA7CiAgICAgTlNNYXBUYWJsZSAqbV9jb250ZXh0
Q2FjaGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5TTWFw
VGFibGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dApAQCAtMTEwLDEzICsxMDgsMjIgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGV4dEdy
b3VwUmVmOgogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNv
bmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQ
b2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNv
bmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0
aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5
OjBdOwotICAgIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9
IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQ
ZXJzb25hbGl0eTsKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09i
amVjdFBlcnNvbmFsaXR5OwotICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFtbTlNNYXBUYWJs
ZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0
cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTowXTsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlv
bnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1Bv
aW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbFJlbWVtYmVy
ZWRTZXQgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRp
b25zIHZhbHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXTsKKyAgICBKU0M6OlZN
JiB2bSA9ICp0b0pTKG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgpIHsKKyAgICAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25z
V2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5
OworICAgICAgICB2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGggPSBhZG9wdE5TKAorICAg
ICAgICAgICAgW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0
aW9ucyB2YWx1ZU9wdGlvbnM6c3Ryb25nSURPcHRpb25zIGNhcGFjaXR5OjBdKTsKKyAgICB9CisK
KyAgICBpZiAoIXZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CisgICAgICAgIE5T
UG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9u
c1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKKyAgICAg
ICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0
eTsKKyAgICAgICAgdm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBhZG9wdE5TKAor
ICAgICAgICAgICAgW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lE
T3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0K
ICAgIAogICAgIFtKU1ZNV3JhcHBlckNhY2hlIGFkZFdyYXBwZXI6c2VsZiBmb3JKU0NvbnRleHRH
cm91cFJlZjpncm91cF07CiAgCkBAIC0xMjcsOCArMTM0LDYgQEAgLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgSlNDb250ZXh0R3JvdXBSZWxlYXNlKG1fZ3JvdXApOwogICAgIFttX2NvbnRleHRDYWNo
ZSByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbGVhc2VdOwotICAgIFtt
X2V4dGVybmFsUmVtZW1iZXJlZFNldCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKQEAgLTE1OSw3ICsxNjQsOCBAQCAtIChib29sKWlzT2xkRXh0ZXJuYWxPYmplY3Q6KGlkKW9i
amVjdAogLSAodm9pZClhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6KGlkKW9iamVjdAogewog
ICAgIEFTU0VSVChbc2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pOwotICAgIFttX2V4
dGVybmFsUmVtZW1iZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnRy
dWVdIGZvcktleTpvYmplY3RdOworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNl
dCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odG9KUyhtX2dyb3VwKS0+YXBpRGF0YS5leHRl
cm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkpOworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0K
IAogLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClv
d25lcgpAQCAtMTcyLDE4ICsxNzgsMjAgQEAgLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihp
ZClvYmplY3QgdwogICAgIAogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsK
KworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMobV9ncm91cCk7IAorICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CiAgICAgaWYgKFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b3duZXJd
ICYmICFbc2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pCiAgICAgICAgIFtzZWxmIGFk
ZEV4dGVybmFsUmVtZW1iZXJlZE9iamVjdDpvd25lcl07Ci0gCi0gICAgTlNNYXBUYWJsZSAqb3du
ZWRPYmplY3RzID0gW21fZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwor
CisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFw
VGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICBOU01h
cFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6
b3duZXJdOwogICAgIGlmICghb3duZWRPYmplY3RzKSB7CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkg
fCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAgICAgICAgTlNQb2ludGVy
RnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1
ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKICAgICAgICAg
b3duZWRPYmplY3RzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vh
a0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKLSAg
ICAgICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktl
eTpvd25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9i
amVjdHMgZm9yS2V5Om93bmVyXTsKICAgICAgICAgW293bmVkT2JqZWN0cyByZWxlYXNlXTsKICAg
ICB9CiAKQEAgLTIwMiw5ICsyMTAsMTEgQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNl
OihpZClvYmplYwogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKLSAgICAK
LSAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9i
amVjdEZvcktleTpvd25lcl07CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworCisgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRl
cm5hbE9iamVjdEdyYXBoLmdldCgpKTsgCisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0g
W2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVk
T2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgCkBAIC0yMTgsOCArMjI4LDggQEAgLSAodm9p
ZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplYwogICAgICAgICBOU01hcFJlbW92ZShv
d25lZE9iamVjdHMsIG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9iamVjdHMgY291bnRdKSB7
Ci0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVy
XTsKLSAgICAgICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92ZU9iamVjdEZvcktleTpv
d25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktleTpv
d25lcl07CisgICAgICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwogICAg
IH0KIH0KIApAQCAtMjUwLDI1ICsyNjAsMTIgQEAgLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRl
eHQgKil3cmFwcGVyIAogICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4dENhY2hlLCBnbG9iYWxDb250
ZXh0LCB3cmFwcGVyKTsKIH0KIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgK
LXsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9iamVjdEdyYXBoOwotfQotCi0tIChOU01hcFRhYmxl
ICopZXh0ZXJuYWxSZW1lbWJlcmVkU2V0Ci17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0OwotfQotCiBAZW5kCiAKIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpW
TSYgdm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IsIHZvaWQqIHJvb3QpCiB7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5l
ID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2
bSldOwotICAgICAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5l
IGV4dGVybmFsT2JqZWN0R3JhcGhdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVj
dEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2Jq
ZWN0R3JhcGguZ2V0KCkpOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHN0YWNrOwogICAgICAgICBz
dGFjay5hcHBlbmQocm9vdCk7CiAgICAgICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpKSB7CkBA
IC0yODgsMTEgKzI4NSw4IEBAIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYg
dm0KIHZvaWQgc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldChKU0M6OlZNJiB2bSwgSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNW
aXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVy
Rm9ySlNDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlmICghdmlydHVhbE1h
Y2hpbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFs
T2JqZWN0R3JhcGggPSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF07Ci0gICAg
ICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IFt2aXJ0dWFsTWFjaGluZSBl
eHRlcm5hbFJlbWVtYmVyZWRTZXRdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVj
dEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2Jq
ZWN0R3JhcGguZ2V0KCkpOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRT
ZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0LmdldCgpKTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4gZXh0ZXJuYWxSZW1lbWJlcmVk
U2V0KSB7CiAgICAgICAgICAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRP
YmplY3QgaW4gb3duZWRPYmplY3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjc2MTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3Vw
RnJvbVZpcnR1YWxNYWMKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVm
OihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4dDoo
SlNDb250ZXh0ICopd3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRS
ZWYpZ2xvYmFsQ29udGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGg7
Ci0KIEBlbmQKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9y
eU1hbmFnZW1lbnRUZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsK
KworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFu
YWdlbWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JKQ19B
UElfRU5BQkxFRAorCitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2Ny
aXB0aW9uLCBib29sIHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9pZCBK
U1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKworQGlu
dGVyZmFjZSBPcGFxdWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIE9wYXF1ZU9iakNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmplY3QK
K3sKKyAgICByZXR1cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFjZSBK
U0NvbGxlY3Rpb24gOiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3Ry
aW5nICopa2V5OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRW
YWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVl
KSB7CisgICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07
CisgICAgICAgIGlmIChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZp
cnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhP
d25lcjpzZWxmXTsKKyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5j
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6
a2V5XTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQorewor
ICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5Omtl
eV07CisgICAgaWYgKCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2thYmxl
RXhwb3J0cyA8SlNFeHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsK
K0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGludGVy
ZmFjZSBDbGlja2FibGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZCljbGlj
azsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2VkVmFs
dWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tI
YW5kbGVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAg
ICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRo
VmFsdWU6dmFsdWVdOworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sK
KyAgICBtX29uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTptX29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpTVmFs
dWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFs
dWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hh
bmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFu
ZGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21f
b25jbGlja0hhbmRsZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpb
TlNBcnJheSBhcnJheV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1lbnRU
ZXN0cyA6IE5TT2JqZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2b2lk
KWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQpYmFn
T2ZKU01hbmFnZWRWYWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1
cmluZ0VkZW5Db2xsZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hp
bmVXcmFwcGVyVGVzdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1lbnRU
ZXN0cworKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxvY10g
aW5pdF07CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IGNvbnRleHRbQCJjbGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENs
aWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1bmN0
aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAg
ICAgICAgfTsgXAorICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUu
d2Vha09uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAnZm9v
JzsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2Fi
bGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBo
YW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiY2xpY2thYmxlLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGlj
ayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlz
VW5kZWZpbmVkXSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051
bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAg
ICAgIGNsaWNrYWJsZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJl
IiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYXZv
aWRNb2RpZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNPYmpl
Y3QgKnJvb3RPYmplY3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAg
ICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07
CisgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAg
ICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOworICAg
ICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFr
Q29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0
Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2
YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisg
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEpT
Q29udGV4dCBhbmQgZ2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJhZyBv
ZiBKU01hbmFnZWRWYWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290
T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBBZGQgYSBidW5jaCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVz
LgorICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5j
ZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1
ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxs
byEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBp
bkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0
OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVsbCBj
b2xsZWN0aW9uLgorICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVzc2Fn
ZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAgICAg
ICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktl
eTpAIm15X251bWJlciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwgPSBb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAg
ICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3BlcnRp
ZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNIYW0g
dG9Cb29sXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwg
W21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNzYWdl
IHRvU3RyaW5nXV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMgNDIi
LCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7CisgICAg
ICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmluaXRl
bHlOdWxsIGlzTnVsbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91
bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250ZXh0
IGhhcyBkaXNhcHBlYXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVzIGhh
dmUgYmVlbiBjbGVhcmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwiLCAh
W215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVG
b3JLZXk6QCJtZXNzYWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyBu
aWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0KK30K
KworCisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25U
ZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0
ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5D
b2xsZWN0aW9uCisgICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0
IGdyYXBoLgorICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmpl
Y3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNocm9u
b3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7
CisgICAgICAgIAorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVh
Y2hhYmxlIHZpYSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91Z2gg
dGhlIG9iamVjdCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4K
KyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFx
dWVPYmplY3RdOworICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVm
ZXJlbmNlOmNoaWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0
ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3
ZSBwcm9wZXJseSByZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4K
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAg
ICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOmpzT2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0
IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgu
CisgICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhl
IG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJF
ZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFn
ZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBwZWFy
aW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9iYWxD
b250ZXh0UmVmIGNvbnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdl
ZENoaWxkID0gbmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAg
IGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAgICAg
SlNHbG9iYWxDb250ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAgICAg
CisgICAgICAgICAgICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07Cisg
ICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNo
aWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAganNDaGlsZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAgICBt
YW5hZ2VkQ2hpbGQgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ2hp
bGRdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVy
ZW5jZTptYW5hZ2VkQ2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHRS
ZWYpOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBK
U1ZhbHVlICpqc0NoaWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAImNoaWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0dWFs
TWFjaGluZSBkaXNhcHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNwZWNp
YWxQcm9wZXJ0eSJdIHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgICAg
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9CisgICAg
fQorfQorQGVuZAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdlZFZh
bHVlU2FuaXR5VGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRNb2Rp
ZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFn
ZW1lbnRUZXN0cyBiYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25U
ZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0dWFs
TWFjaGluZVdyYXBwZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElf
RU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJDdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAj
aW1wb3J0ICJKU0V4cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aCIKIAogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBAIGJvb2wg
dGVzdFhZWlRlc3RlZCA9IGZhbHNlOwogLSAoaWQpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nKilz
dHJpbmc7CiBAcHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLUBw
cm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOwotQHByb3BlcnR5IChhc3NpZ24pIEpT
VmFsdWUgKndlYWtPbmNsaWNrOwogLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBA
ZW5kCiAKQEAgLTEyNiwxMyArMTI1LDkgQEAgQGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3Qg
PFRleHRYWVo+CiBAcHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkg
aW50IHo7Ci0tICh2b2lkKWNsaWNrOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7
Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOwotICAgIEpTTWFuYWdl
ZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOwotfQorQGltcGxlbWVudGF0aW9uIFRleHRYWVoKIEBz
eW50aGVzaXplIHg7CiBAc3ludGhlc2l6ZSB5OwogQHN5bnRoZXNpemUgejsKQEAgLTE1MCwzMiAr
MTQ1LDYgQEAgLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFla
VGVzdGVkID0gW21lc3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYm
IHogPT0gNTsKIH0KLS0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQotewot
ICAgIG1fd2Vha09uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTp2YWx1ZV07Ci19Ci0KLS0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVl
Ci17Ci0gICAgbV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07Ci19Ci0tIChK
U1ZhbHVlICopd2Vha09uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fd2Vha09uY2xpY2tIYW5kbGVy
IHZhbHVlXTsKLX0KLS0gKEpTVmFsdWUgKilvbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX29uY2xp
Y2tIYW5kbGVyIHZhbHVlXTsKLX0KLS0gKHZvaWQpY2xpY2sKLXsKLSAgICBpZiAoIW1fb25jbGlj
a0hhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21f
b25jbGlja0hhbmRsZXIgdmFsdWVdOwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpb
TlNBcnJheSBhcnJheV1dOwotfQogQGVuZAogCiBAY2xhc3MgVGlueURPTU5vZGU7CkBAIC0yMzgs
NDcgKzIwNyw2IEBAIC0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAog
QGVuZAogCi1AaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFZh
bHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLS0gKEpTVmFsdWUg
Kil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBK
U0NvbGxlY3Rpb24gewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OwotfQotLSAoaWQp
aW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFs
dWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUg
Km9sZE1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAob2xk
TWFuYWdlZFZhbHVlKSB7Ci0gICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRW
YWx1ZSB2YWx1ZV07Ci0gICAgICAgIGlmIChvbGRWYWx1ZSkKLSAgICAgICAgICAgIFtvbGRWYWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdl
ZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKLSAgICB9Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFn
ZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwot
ICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFu
YWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKLSAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRW
YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmlu
ZyAqKWtleQotewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2Jq
ZWN0Rm9yS2V5OmtleV07Ci0gICAgaWYgKCFtYW5hZ2VkVmFsdWUpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOwotfQotQGVuZAotCiBAcHJvdG9j
b2wgSW5pdEEgPEpTRXhwb3J0PgogLSAoaWQpaW5pdFdpdGhBOihpbnQpYTsKIC0gKGludClpbml0
aWFsaXplOwpAQCAtNTEwLDU1ICs0MzgsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAg
ICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb2xsZWN0aW9uKiBteVBy
aXZhdGVQcm9wZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotCi0gICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVj
dCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICAgICAgY29udGV4dFtAInJvb3Qi
XSA9IHJvb3RPYmplY3Q7Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRN
YW5hZ2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3Rd
OwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFs
dWVXaXRoQm9vbDp0cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKLSAg
ICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpAImhlbGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsK
LSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVl
V2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKLSAg
ICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aE51bGxJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07Ci0gICAg
ICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhV
bmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVk
Il07Ci0KLSAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2lu
ZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSAq
aXNIYW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOwotICAg
ICAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9y
S2V5OkAibWVzc2FnZSJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2
YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpA
ImRlZmluaXRlbHlfbnVsbCJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZp
bmVkID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRl
ZmluZWQiXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNI
YW0gaXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3Vs
dChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIg
aXNFcXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOwotICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJl
ciB0b0ludDMyXSA9PSA0Mik7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlf
bnVsbCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOwotICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJ
ZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJpc19oYW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAi
aXNfaGFtIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKLSAgICAgICAgY2hlY2tS
ZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJteV9udW1iZXIiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxs
IGlzIG51bGwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5
X251bGwiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlz
IHVuZGVmaW5lZCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCJdKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAg
ICBKU1ZhbHVlICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGlu
Q29udGV4dDpjb250ZXh0XTsKLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdE9iamVjdCA9IFtUZXN0
T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBb
W0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbnRleHRbQCJyb290Il0gPSBy
b290T2JqZWN0OwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGlu
Q29udGV4dDpjb250ZXh0XTsKLSAgICAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVj
dGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9u
IGFuZE93bmVyOnJvb3RPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hp
bmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07
Ci0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRl
eHRbQCJibG9ja0NhbGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7CkBAIC05NzcsNjAgKzg1Niw2IEBA
IHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
Ci0gICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotCi0g
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoi
XSA9IHRlc3RYWVo7Ci0KLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwK
LSAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVz
dFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgZGlkQ2xp
Y2sgPSB0cnVlOyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAg
ICAgICAgICAgICJdOwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgICAgICBbdGVzdFhZWiBjbGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQg
PSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAInRlc3RYWVoub25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNr
IHN0aWxsIGFyb3VuZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNV
bmRlZmluZWRdKSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewot
ICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0
ZXN0WFlaLndlYWtPbmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNs
aWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1Vu
ZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlk
Q2xpY2sgPSBmYWxzZTsgXAotICAgICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCi0gICAg
ICAgICAgICAiXTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29s
bGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xp
Y2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRv
ZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9vbF0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZtID0gW1tKU1Zp
cnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKICAgICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVj
dCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vh
a1ZhbHVlOwpAQCAtMTMyNiw0MiArMTE1MSwxMSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkK
ICAgICAgICAgW1tKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0
b0RpY3Rpb25hcnldOwogICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250
ZXh0OmNvbnRleHRdIHRvQXJyYXldOwogICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewot
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0K
LSAgICAgICAgLy8gQ3JlYXRlIHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBh
bmQgZm9yY2UgYW4gRWRlbkNvbGxlY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRo
ZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIFRlc3RPYmplY3QgKnJvb3QgPSBbVGVz
dE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsKLSAgICAgICAgfQotICAgICAgICBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9iamVjdCBvbmx5IHJlYWNoYWJs
ZSB2aWEgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaAotICAgICAgICAvLyB0aHJvdWdoIHRoZSBv
YmplY3Qgd2UgYWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRlbkNvbGxlY3Rpb24uCi0gICAg
ICAgIFRlc3RPYmplY3QgKmNoaWxkID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAg
IFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93
bmVyOnJvb3RdOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhh
dCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSByZXNjYW4KLSAgICAgICAg
Ly8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1h
bmFnZWRKU09iamVjdCA9IG5pbDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxv
IiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNN
YW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0XTsKLSAgICAgICAgICAg
IFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2Jq
ZWN0IHdpdGhPd25lcjpjaGlsZF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhbm90
aGVyIEVkZW5Db2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUg
ZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RG
b3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIAotICAg
ICAgICAvLyBDaGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCi0g
ICAgICAgIGNoZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBt
YW5hZ2VkIHZhbHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7Ci0gICAgfQot
CisgICAgCiAgICAgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKTsKICAgICBydW5E
YXRlVGVzdHMoKTsKICAgICBydW5KU0V4cG9ydFRlc3RzKCk7CisgICAgcnVuTWVtb3J5TWFuYWdl
bWVudFRlc3RzKCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTc4Nyw2ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxB
UElcQVBJRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3Jp
cHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29yZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5o
IiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhc3QuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAgICA8
RmlsdGVyPkFQSTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDYgKzE2NTYsNyBA
QAogCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyNTQ5NDIxNUY3REJBQTAw
NjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0
NzVBIC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMy
NDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwICovOyB9OworCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyog
QVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNw
cCAqLzsgfTsKIAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyog
SlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87
IH07CkBAIC0xNjY1LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyODMxOTAyMTZGRTUzM0Uw
MDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVC
bG9ja0lubGluZXMuaCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVU
ZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
ODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87IH07CisJCUMyOTMyQTU1
MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1NDE5MDVCNUU3MDBFN0Ez
OUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlDMjk4MUZEODE3QkFFRTRC
MDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAv
KiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlDMjk4MUZEOTE3QkFFRTRC
MDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2ly
ZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJy
aWVycy5jcHAgKi87IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlDMjIzOUQxNjE2MjYyQkRE
MDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R0NUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RDcwOTkx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhbmRsZUJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
Mjg4QjJEQzE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIg
LyogRGF0ZVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
RGF0ZVRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZW1vcnlNYW5h
Z2VtZW50VGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8q
IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgx
RkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2Vz
LmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JD
OTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RG
R0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM2OTgsNiArMzcwMyw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3Rh
cGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8s
CiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAorCQkJ
CUMyOTMyQTUzMTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLywK
KwkJCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1t
ICovLAogCQkJKTsKIAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zOTkyLDYgKzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBP
cGFxdWVKU1N0cmluZy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9w
YXF1ZUpTU3RyaW5nLmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktp
dEF2YWlsYWJpbGl0eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElE
YXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC01NDgzLDYgKzU0OTEsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJG
RkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjQ4
RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFB
QkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQUFDRTYzRDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKQEAgLTY3ODEsNiArNjc5MCw3IEBACiAJCQkJQzIxODFGQzIxOEE5NDhGQjAw
MjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBB
NEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUEx
NjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMjkzMkE1
NTE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NzYxNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZm5kZWYgVk1faAogI2RlZmluZSBWTV9oCiAKKyNpbmNsdWRlICJB
UElEYXRhLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVj
dXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpAQCAtNTEwLDYgKzUxMSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBi
dWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsg
fQogCisgICAgICAgIEFQSURhdGEgYXBpRGF0YTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBD
bGVhckV4Y2VwdGlvblNjb3BlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229890</attachid>
            <date>2014-04-22 09:47:18 -0700</date>
            <delta_ts>2014-04-22 16:14:13 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>bug-131691-20140422094658.patch</filename>
            <type>text/plain</type>
            <size>49675</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTA0LTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpBUElE
YXRhOjpBUElEYXRhKToKKyAgICAgICAgKEpTQzo6QVBJRGF0YTo6ZXh0ZXJuYWxPYmplY3RHcmFw
aCk6CisgICAgICAgIChKU0M6OkFQSURhdGE6OnNldEV4dGVybmFsT2JqZWN0R3JhcGgpOgorICAg
ICAgICAoSlNDOjpBUElEYXRhOjpleHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAoSlND
OjpBUElEYXRhOjpzZXRFeHRlcm5hbFJlbWVtYmVyZWRTZXQpOgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBpbXBsZW1lbnQgV2ViS2l0RGF0YUN1ZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NzIsNiArNzcy
LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0ZPUldBUkRJTkdfSEVBREVSU19ESQogCiBzZXQoSmF2
YVNjcmlwdENvcmVfRk9SV0FSRElOR19IRUFERVJTX0ZJTEVTCiAgICAgQVBJL0FQSUNhc3QuaAor
ICAgIEFQSS9BUElEYXRhLmgKICAgICBBUEkvSlNCYXNlLmgKICAgICBBUEkvSlNDVGVzdFJ1bm5l
clV0aWxzLmgKICAgICBBUEkvSlNDb250ZXh0UmVmLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9B
UElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSlNDX0FQSURhdGFfaAorI2RlZmluZSBKU0NfQVBJRGF0YV9oCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworc3RydWN0IEFQSURh
dGEgeworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4dGVybmFsT2JqZWN0R3JhcGg7CisgICAg
UmV0YWluUHRyPENGVHlwZVJlZj4gZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OworfTsKKworI2Vsc2UK
Kworc3RydWN0IEFQSURhdGEgeyB9OworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NfQVBJRGF0YV9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1tCShyZXZpc2lv
biAxNjc2MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYgQEAgKyAoSlNWaXJ0dWFsTWFjaGluZSAq
KXdyYXBwZXJGb3JKU0NvbnRleAogQGltcGxlbWVudGF0aW9uIEpTVmlydHVhbE1hY2hpbmUgewog
ICAgIEpTQ29udGV4dEdyb3VwUmVmIG1fZ3JvdXA7CiAgICAgTlNNYXBUYWJsZSAqbV9jb250ZXh0
Q2FjaGU7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5hbE9iamVjdEdyYXBoOwotICAgIE5TTWFw
VGFibGUgKm1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0OwogfQogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dApAQCAtMTEwLDEzICsxMDgsMjIgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29udGV4dEdy
b3VwUmVmOgogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMga2V5T3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZVBlcnNv
bmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgdmFsdWVPcHRpb25zID0gTlNQ
b2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNv
bmFsaXR5OwogICAgIG1fY29udGV4dENhY2hlID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0
aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFsdWVPcHRpb25zIGNhcGFjaXR5
OjBdOwotICAgIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9
IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQ
ZXJzb25hbGl0eTsKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09i
amVjdFBlcnNvbmFsaXR5OwotICAgIG1fZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFtbTlNNYXBUYWJs
ZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0
cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTowXTsKIAotICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlv
bnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1Bv
aW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbFJlbWVtYmVy
ZWRTZXQgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRp
b25zIHZhbHVlT3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXTsKKyAgICBKU0M6OlZN
JiB2bSA9ICp0b0pTKG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgpIHsKKyAgICAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25z
V2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAg
ICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHN0cm9uZ0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc1N0cm9uZ01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5
OworICAgICAgICB2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGggPSBhZG9wdE5TKAorICAg
ICAgICAgICAgW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0
aW9ucyB2YWx1ZU9wdGlvbnM6c3Ryb25nSURPcHRpb25zIGNhcGFjaXR5OjBdKTsKKyAgICB9CisK
KyAgICBpZiAoIXZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0KSB7CisgICAgICAgIE5T
UG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9u
c1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKKyAgICAg
ICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1
bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0
eTsKKyAgICAgICAgdm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBhZG9wdE5TKAor
ICAgICAgICAgICAgW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lE
T3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0K
ICAgIAogICAgIFtKU1ZNV3JhcHBlckNhY2hlIGFkZFdyYXBwZXI6c2VsZiBmb3JKU0NvbnRleHRH
cm91cFJlZjpncm91cF07CiAgCkBAIC0xMjcsOCArMTM0LDYgQEAgLSAodm9pZClkZWFsbG9jCiB7
CiAgICAgSlNDb250ZXh0R3JvdXBSZWxlYXNlKG1fZ3JvdXApOwogICAgIFttX2NvbnRleHRDYWNo
ZSByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbGVhc2VdOwotICAgIFtt
X2V4dGVybmFsUmVtZW1iZXJlZFNldCByZWxlYXNlXTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9
CiAKQEAgLTE1OSw3ICsxNjQsOCBAQCAtIChib29sKWlzT2xkRXh0ZXJuYWxPYmplY3Q6KGlkKW9i
amVjdAogLSAodm9pZClhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6KGlkKW9iamVjdAogewog
ICAgIEFTU0VSVChbc2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pOwotICAgIFttX2V4
dGVybmFsUmVtZW1iZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnRy
dWVdIGZvcktleTpvYmplY3RdOworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNl
dCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odG9KUyhtX2dyb3VwKS0+YXBpRGF0YS5leHRl
cm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkpOworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0
T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0K
IAogLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClv
d25lcgpAQCAtMTcyLDE4ICsxNzgsMjAgQEAgLSAodm9pZClhZGRNYW5hZ2VkUmVmZXJlbmNlOihp
ZClvYmplY3QgdwogICAgIAogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsK
KworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMobV9ncm91cCk7IAorICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CiAgICAgaWYgKFtzZWxmIGlzT2xkRXh0ZXJuYWxPYmplY3Q6b3duZXJd
ICYmICFbc2VsZiBpc09sZEV4dGVybmFsT2JqZWN0Om9iamVjdF0pCiAgICAgICAgIFtzZWxmIGFk
ZEV4dGVybmFsUmVtZW1iZXJlZE9iamVjdDpvd25lcl07Ci0gCi0gICAgTlNNYXBUYWJsZSAqb3du
ZWRPYmplY3RzID0gW21fZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwor
CisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFw
VGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICBOU01h
cFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6
b3duZXJdOwogICAgIGlmICghb3duZWRPYmplY3RzKSB7CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkg
fCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKICAgICAgICAgTlNQb2ludGVy
RnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1
ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKICAgICAgICAg
b3duZWRPYmplY3RzID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vh
a0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKLSAg
ICAgICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktl
eTpvd25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9i
amVjdHMgZm9yS2V5Om93bmVyXTsKICAgICAgICAgW293bmVkT2JqZWN0cyByZWxlYXNlXTsKICAg
ICB9CiAKQEAgLTIwMiw5ICsyMTAsMTEgQEAgLSAodm9pZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNl
OihpZClvYmplYwogICAgIGlmICghb2JqZWN0IHx8ICFvd25lcikKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKG1fZ3JvdXApKTsKLSAgICAK
LSAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbbV9leHRlcm5hbE9iamVjdEdyYXBoIG9i
amVjdEZvcktleTpvd25lcl07CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworCisgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRl
cm5hbE9iamVjdEdyYXBoLmdldCgpKTsgCisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0g
W2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVk
T2JqZWN0cykKICAgICAgICAgcmV0dXJuOwogICAgCkBAIC0yMTgsOCArMjI4LDggQEAgLSAodm9p
ZClyZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOihpZClvYmplYwogICAgICAgICBOU01hcFJlbW92ZShv
d25lZE9iamVjdHMsIG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9iamVjdHMgY291bnRdKSB7
Ci0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVy
XTsKLSAgICAgICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92ZU9iamVjdEZvcktleTpv
d25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVjdEZvcktleTpv
d25lcl07CisgICAgICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwogICAg
IH0KIH0KIApAQCAtMjUwLDI1ICsyNjAsMTIgQEAgLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRl
eHQgKil3cmFwcGVyIAogICAgIE5TTWFwSW5zZXJ0KG1fY29udGV4dENhY2hlLCBnbG9iYWxDb250
ZXh0LCB3cmFwcGVyKTsKIH0KIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGgK
LXsKLSAgICByZXR1cm4gbV9leHRlcm5hbE9iamVjdEdyYXBoOwotfQotCi0tIChOU01hcFRhYmxl
ICopZXh0ZXJuYWxSZW1lbWJlcmVkU2V0Ci17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0OwotfQotCiBAZW5kCiAKIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpW
TSYgdm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IsIHZvaWQqIHJvb3QpCiB7CiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5l
ID0gW0pTVk1XcmFwcGVyQ2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2
bSldOwotICAgICAgICBpZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5l
IGV4dGVybmFsT2JqZWN0R3JhcGhdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVj
dEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2Jq
ZWN0R3JhcGguZ2V0KCkpOwogICAgICAgICBWZWN0b3I8dm9pZCo+IHN0YWNrOwogICAgICAgICBz
dGFjay5hcHBlbmQocm9vdCk7CiAgICAgICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpKSB7CkBA
IC0yODgsMTEgKzI4NSw4IEBAIHZvaWQgc2NhbkV4dGVybmFsT2JqZWN0R3JhcGgoSlNDOjpWTSYg
dm0KIHZvaWQgc2NhbkV4dGVybmFsUmVtZW1iZXJlZFNldChKU0M6OlZNJiB2bSwgSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNW
aXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJDYWNoZSB3cmFwcGVy
Rm9ySlNDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlmICghdmlydHVhbE1h
Y2hpbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFs
T2JqZWN0R3JhcGggPSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RHcmFwaF07Ci0gICAg
ICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IFt2aXJ0dWFsTWFjaGluZSBl
eHRlcm5hbFJlbWVtYmVyZWRTZXRdOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVj
dEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2Jq
ZWN0R3JhcGguZ2V0KCkpOworICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRT
ZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0LmdldCgpKTsKICAgICAgICAgZm9yIChpZCBrZXkgaW4gZXh0ZXJuYWxSZW1lbWJlcmVk
U2V0KSB7CiAgICAgICAgICAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6a2V5XTsKICAgICAgICAgICAgIGZvciAoaWQgb3duZWRP
YmplY3QgaW4gb3duZWRPYmplY3RzKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCShyZXZpc2lvbiAxNjc2MTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw4ICs0NSw2IEBAIEpTQ29udGV4dEdyb3VwUmVmIGdldEdyb3Vw
RnJvbVZpcnR1YWxNYWMKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0UmVm
OihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4dDoo
SlNDb250ZXh0ICopd3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRleHRS
ZWYpZ2xvYmFsQ29udGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3JhcGg7
Ci0KIEBlbmQKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9y
eU1hbmFnZW1lbnRUZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsK
KworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFu
YWdlbWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JKQ19B
UElfRU5BQkxFRAorCitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRlc2Ny
aXB0aW9uLCBib29sIHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2Fy
YmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9pZCBK
U1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKworQGlu
dGVyZmFjZSBPcGFxdWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIE9wYXF1ZU9iakNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmplY3QK
K3sKKyAgICByZXR1cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0eXBl
KWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFjZSBK
U0NvbGxlY3Rpb24gOiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVl
IGZvcktleTooTlNTdHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3Ry
aW5nICopa2V5OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0g
W3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAK
KyAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgCisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBm
b3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFnZWRW
YWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZhbHVl
KSB7CisgICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1ZV07
CisgICAgICAgIGlmIChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0LnZp
cnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdpdGhP
d25lcjpzZWxmXTsKKyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5j
b250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JLZXk6
a2V5XTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQorewor
ICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5Omtl
eV07CisgICAgaWYgKCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2thYmxl
RXhwb3J0cyA8SlNFeHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsK
K0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGludGVy
ZmFjZSBDbGlja2FibGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZCljbGlj
azsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2VkVmFs
dWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xpY2tI
YW5kbGVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sKKyAg
ICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRo
VmFsdWU6dmFsdWVdOworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sK
KyAgICBtX29uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhW
YWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTptX29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpTVmFs
dWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFs
dWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlja0hh
bmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNrSGFu
ZGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21f
b25jbGlja0hhbmRsZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpb
TlNBcnJheSBhcnJheV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1lbnRU
ZXN0cyA6IE5TT2JqZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2b2lk
KWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQpYmFn
T2ZKU01hbmFnZWRWYWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1
cmluZ0VkZW5Db2xsZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hp
bmVXcmFwcGVyVGVzdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1lbnRU
ZXN0cworKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNl
cG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxvY10g
aW5pdF07CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IGNvbnRleHRbQCJjbGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENs
aWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1bmN0
aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAgICAg
ICAgICAgfTsgXAorICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUu
d2Vha09uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAnZm9v
JzsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2Fi
bGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVh
dGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBo
YW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQg
SlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0
OkAiY2xpY2thYmxlLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25jbGlj
ayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlz
VW5kZWZpbmVkXSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051
bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAgICAg
ICAgIGNsaWNrYWJsZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJl
IiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYXZv
aWRNb2RpZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNPYmpl
Y3QgKnJvb3RPYmplY3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAg
ICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07
CisgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAg
ICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOworICAg
ICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFr
Q29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0
Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQcml2
YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisg
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IEpT
Q29udGV4dCBhbmQgZ2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJhZyBv
ZiBKU01hbmFnZWRWYWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290
T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAv
LyBBZGQgYSBidW5jaCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVz
LgorICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5j
ZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAgICAg
IFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1
ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxs
byEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBp
bkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBbbXlQ
cml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0
OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250
ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IC8vIE1ha2Ugc3VyZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVsbCBj
b2xsZWN0aW9uLgorICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVzc2Fn
ZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAgICAg
ICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktl
eTpAIm15X251bWJlciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwgPSBb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAg
ICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3BlcnRp
ZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNIYW0g
dG9Cb29sXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwg
W21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNzYWdl
IHRvU3RyaW5nXV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMgNDIi
LCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7CisgICAg
ICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmluaXRl
bHlOdWxsIGlzTnVsbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91
bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0p
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250ZXh0
IGhhcyBkaXNhcHBlYXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVzIGhh
dmUgYmVlbiBjbGVhcmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwiLCAh
W215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAgIGNo
ZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVG
b3JLZXk6QCJtZXNzYWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyBu
aWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7Cisg
ICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAgY2hl
Y2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0KK30K
KworCisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25U
ZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0
ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5D
b2xsZWN0aW9uCisgICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0
IGdyYXBoLgorICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmpl
Y3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNocm9u
b3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7
CisgICAgICAgIAorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVh
Y2hhYmxlIHZpYSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91Z2gg
dGhlIG9iamVjdCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4K
KyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFx
dWVPYmplY3RdOworICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVm
ZXJlbmNlOmNoaWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENyZWF0
ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3
ZSBwcm9wZXJseSByZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4K
KyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAg
ICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOmpzT2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0
IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgu
CisgICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhl
IG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJF
ZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFn
ZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBwZWFy
aW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9iYWxD
b250ZXh0UmVmIGNvbnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdl
ZENoaWxkID0gbmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpT
Q29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAg
IGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAgICAg
SlNHbG9iYWxDb250ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAgICAg
CisgICAgICAgICAgICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07Cisg
ICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOmNo
aWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAg
ICAganNDaGlsZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAgICBt
YW5hZ2VkQ2hpbGQgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ2hp
bGRdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVy
ZW5jZTptYW5hZ2VkQ2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRleHRS
ZWYpOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBK
U1ZhbHVlICpqc0NoaWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAImNoaWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0dWFs
TWFjaGluZSBkaXNhcHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNwZWNp
YWxQcm9wZXJ0eSJdIHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAgICAg
ICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9CisgICAg
fQorfQorQGVuZAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdlZFZh
bHVlU2FuaXR5VGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRNb2Rp
ZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFn
ZW1lbnRUZXN0cyBiYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rpb25U
ZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0dWFs
TWFjaGluZVdyYXBwZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElf
RU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5t
bQkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90
ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJDdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgiCiAj
aW1wb3J0ICJKU0V4cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aCIKIAogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhKU0NvbnRleHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVuQ29s
bGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBAIGJvb2wg
dGVzdFhZWlRlc3RlZCA9IGZhbHNlOwogLSAoaWQpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nKilz
dHJpbmc7CiBAcHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgeTsKLUBw
cm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOwotQHByb3BlcnR5IChhc3NpZ24pIEpT
VmFsdWUgKndlYWtPbmNsaWNrOwogLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2U7CiBA
ZW5kCiAKQEAgLTEyNiwxMyArMTI1LDkgQEAgQGludGVyZmFjZSBUZXh0WFlaIDogTlNPYmplY3Qg
PFRleHRYWVo+CiBAcHJvcGVydHkgaW50IHg7CiBAcHJvcGVydHkgaW50IHk7CiBAcHJvcGVydHkg
aW50IHo7Ci0tICh2b2lkKWNsaWNrOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gVGV4dFhZWiB7
Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOwotICAgIEpTTWFuYWdl
ZFZhbHVlICptX29uY2xpY2tIYW5kbGVyOwotfQorQGltcGxlbWVudGF0aW9uIFRleHRYWVoKIEBz
eW50aGVzaXplIHg7CiBAc3ludGhlc2l6ZSB5OwogQHN5bnRoZXNpemUgejsKQEAgLTE1MCwzMiAr
MTQ1LDYgQEAgLSAodm9pZCl0ZXN0OihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICB0ZXN0WFla
VGVzdGVkID0gW21lc3NhZ2UgaXNFcXVhbDpAInRlc3QiXSAmJiB4ID09IDEzICYgeSA9PSA0ICYm
IHogPT0gNTsKIH0KLS0gKHZvaWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQotewot
ICAgIG1fd2Vha09uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTp2YWx1ZV07Ci19Ci0KLS0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1ZSAqKXZhbHVl
Ci17Ci0gICAgbV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6dmFsdWVdOwotICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07Ci19Ci0tIChK
U1ZhbHVlICopd2Vha09uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fd2Vha09uY2xpY2tIYW5kbGVy
IHZhbHVlXTsKLX0KLS0gKEpTVmFsdWUgKilvbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX29uY2xp
Y2tIYW5kbGVyIHZhbHVlXTsKLX0KLS0gKHZvaWQpY2xpY2sKLXsKLSAgICBpZiAoIW1fb25jbGlj
a0hhbmRsZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0gW21f
b25jbGlja0hhbmRsZXIgdmFsdWVdOwotICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50czpb
TlNBcnJheSBhcnJheV1dOwotfQogQGVuZAogCiBAY2xhc3MgVGlueURPTU5vZGU7CkBAIC0yMzgs
NDcgKzIwNyw2IEBAIC0gKHZvaWQpcmVtb3ZlQ2hpbGRBdEluZGV4OihOU1VJbnRlZ2VyKWkKIAog
QGVuZAogCi1AaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5TT2JqZWN0Ci0tICh2b2lkKXNldFZh
bHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleTsKLS0gKEpTVmFsdWUg
Kil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBK
U0NvbGxlY3Rpb24gewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKl9kaWN0OwotfQotLSAoaWQp
aW5pdAotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxmKQotICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2Nd
IGluaXRdOwotCi0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFs
dWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2VkVmFsdWUg
Km9sZE1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAob2xk
TWFuYWdlZFZhbHVlKSB7Ci0gICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRW
YWx1ZSB2YWx1ZV07Ci0gICAgICAgIGlmIChvbGRWYWx1ZSkKLSAgICAgICAgICAgIFtvbGRWYWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdl
ZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKLSAgICB9Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFn
ZWRWYWx1ZSA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwot
ICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFu
YWdlZFZhbHVlIHdpdGhPd25lcjpzZWxmXTsKLSAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRW
YWx1ZSBmb3JLZXk6a2V5XTsKLX0KLQotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmlu
ZyAqKWtleQotewotICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2Jq
ZWN0Rm9yS2V5OmtleV07Ci0gICAgaWYgKCFtYW5hZ2VkVmFsdWUpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOwotfQotQGVuZAotCiBAcHJvdG9j
b2wgSW5pdEEgPEpTRXhwb3J0PgogLSAoaWQpaW5pdFdpdGhBOihpbnQpYTsKIC0gKGludClpbml0
aWFsaXplOwpAQCAtNTEwLDU1ICs0MzgsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAg
ICB9CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb2xsZWN0aW9uKiBteVBy
aXZhdGVQcm9wZXJ0aWVzID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotCi0gICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNDb250ZXh0KiBjb250ZXh0ID0gW1tK
U0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAgICAgICAgVGVzdE9iamVjdCogcm9vdE9iamVj
dCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICAgICAgY29udGV4dFtAInJvb3Qi
XSA9IHJvb3RPYmplY3Q7Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRN
YW5hZ2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3BlcnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3Rd
OwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFs
dWVXaXRoQm9vbDp0cnVlIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKLSAg
ICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpAImhlbGxvISIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsK
LSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVl
V2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKLSAg
ICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0
aE51bGxJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07Ci0gICAg
ICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhV
bmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVk
Il07Ci0KLSAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2lu
ZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAgICAgSlNWYWx1ZSAq
aXNIYW0gPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOwotICAg
ICAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9y
S2V5OkAibWVzc2FnZSJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2
YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqZGVmaW5pdGVseU51bGwgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpA
ImRlZmluaXRlbHlfbnVsbCJdOwotICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZp
bmVkID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRl
ZmluZWQiXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNI
YW0gaXNCb29sZWFuXSAmJiBbaXNIYW0gdG9Cb29sXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3Vs
dChAIm1lc3NhZ2UgaXMgaGVsbG8hIiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIg
aXNFcXVhbFRvU3RyaW5nOlttZXNzYWdlIHRvU3RyaW5nXV0pOwotICAgICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJl
ciB0b0ludDMyXSA9PSA0Mik7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlf
bnVsbCBpcyBudWxsIiwgW2RlZmluaXRlbHlOdWxsIGlzTnVsbF0pOwotICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJ
ZlVuZGVmaW5lZCBpc1VuZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJpc19oYW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAi
aXNfaGFtIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKLSAgICAgICAgY2hlY2tS
ZXN1bHQoQCJteV9udW1iZXIgaXMgNDIiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJteV9udW1iZXIiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxs
IGlzIG51bGwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5
X251bGwiXSk7Ci0gICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlz
IHVuZGVmaW5lZCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCJdKTsKLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOwotICAgICAg
ICBKU1ZhbHVlICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGlu
Q29udGV4dDpjb250ZXh0XTsKLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdE9iamVjdCA9IFtUZXN0
T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBb
W0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgICAgIGNvbnRleHRbQCJyb290Il0gPSBy
b290T2JqZWN0OwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgKmpzQ29sbGVjdGlvbiA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGlu
Q29udGV4dDpjb250ZXh0XTsKLSAgICAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVj
dGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9u
IGFuZE93bmVyOnJvb3RPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hp
bmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07
Ci0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwogICAgICAgICBfX2Jsb2NrIGludCByZXN1bHQ7CiAgICAgICAgIGNvbnRl
eHRbQCJibG9ja0NhbGxiYWNrIl0gPSBeKGludCB2YWx1ZSl7CkBAIC05NzcsNjAgKzg1Niw2IEBA
IHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRvcmVsZWFzZXBvb2wg
ewotICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
Ci0gICAgICAgIFRleHRYWVogKnRlc3RYWVogPSBbW1RleHRYWVogYWxsb2NdIGluaXRdOwotCi0g
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgY29udGV4dFtAInRlc3RYWVoi
XSA9IHRlc3RYWVo7Ci0KLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwK
LSAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVz
dFhZWi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAgZGlkQ2xp
Y2sgPSB0cnVlOyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgICAgICAgICAgdGVzdFhZWi53ZWFrT25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAnZm9vJzsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAg
ICAgICAgICAgICJdOwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0g
ICAgICAgICAgICBbdGVzdFhZWiBjbGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQg
PSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIsIFtyZXN1bHQgdG9Cb29sXSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAInRlc3RYWVoub25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNr
IHN0aWxsIGFyb3VuZCBhZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNV
bmRlZmluZWRdKSk7Ci0gICAgICAgIH0KLQotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewot
ICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJ0
ZXN0WFlaLndlYWtPbmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtPbmNs
aWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1Vu
ZGVmaW5lZF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlk
Q2xpY2sgPSBmYWxzZTsgXAotICAgICAgICAgICAgICAgIHRlc3RYWVogPSBudWxsOyBcCi0gICAg
ICAgICAgICAiXTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29s
bGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAg
ICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xp
Y2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIGRv
ZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9vbF0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZtID0gW1tKU1Zp
cnR1YWxNYWNoaW5lIGFsbG9jXSBpbml0XTsKICAgICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVj
dCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwogICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vh
a1ZhbHVlOwpAQCAtMTMyNiw0MiArMTE1MSwxMSBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkK
ICAgICAgICAgW1tKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0
b0RpY3Rpb25hcnldOwogICAgICAgICBbW0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250
ZXh0OmNvbnRleHRdIHRvQXJyYXldOwogICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewot
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0K
LSAgICAgICAgLy8gQ3JlYXRlIHRoZSByb290LCBtYWtlIGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBh
bmQgZm9yY2UgYW4gRWRlbkNvbGxlY3Rpb24KLSAgICAgICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRo
ZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIFRlc3RPYmplY3QgKnJvb3QgPSBbVGVz
dE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsKLSAgICAgICAgfQotICAgICAgICBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9iamVjdCBvbmx5IHJlYWNoYWJs
ZSB2aWEgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaAotICAgICAgICAvLyB0aHJvdWdoIHRoZSBv
YmplY3Qgd2UgYWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRlbkNvbGxlY3Rpb24uCi0gICAg
ICAgIFRlc3RPYmplY3QgKmNoaWxkID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAg
IFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93
bmVyOnJvb3RdOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhh
dCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBpZiB3ZSBwcm9wZXJseSByZXNjYW4KLSAgICAgICAg
Ly8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1h
bmFnZWRKU09iamVjdCA9IG5pbDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAg
ICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxv
IiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNN
YW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzT2JqZWN0XTsKLSAgICAgICAgICAg
IFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2Jq
ZWN0IHdpdGhPd25lcjpjaGlsZF07Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBGb3JjZSBhbm90
aGVyIEVkZW5Db2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUg
ZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RG
b3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAgICAgIAotICAg
ICAgICAvLyBDaGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCi0g
ICAgICAgIGNoZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBt
YW5hZ2VkIHZhbHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7Ci0gICAgfQot
CisgICAgCiAgICAgY3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QoKTsKICAgICBydW5E
YXRlVGVzdHMoKTsKICAgICBydW5KU0V4cG9ydFRlc3RzKCk7CisgICAgcnVuTWVtb3J5TWFuYWdl
bWVudFRlc3RzKCk7CiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTc4Nyw2ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXEFQSVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxB
UElcQVBJRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3Jp
cHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29yZS5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVjdC5o
IiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwkocmV2aXNpb24gMTY3NjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
QVBJXEFQSUNhc3QuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJbmNs
dWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAgICA8
RmlsdGVyPkFQSTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgog
ICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDE2NzYxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjU2LDYgKzE2NTYsNyBA
QAogCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIyNTQ5NDIxNUY3REJBQTAw
NjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0
NzVBIC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMy
NDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwICovOyB9OworCQlDMjQ4RjY4RTE5MDVENzNDMDA3MEEyQjEgLyog
QVBJRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNw
cCAqLzsgfTsKIAkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMTE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjVENzA5QjE2REU5OUY0MDBGQ0E2QkMgLyog
SlNNYW5hZ2VkVmFsdWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi87
IH07CkBAIC0xNjY1LDYgKzE2NjYsNyBAQAogCQlDMjgzMTkwMDE2RkU0QjdEMDAxNTdCRkQgLyog
SGFuZGxlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyODMxOTAyMTZGRTUzM0Uw
MDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVC
bG9ja0lubGluZXMuaCAqLzsgfTsKIAkJQzI4OEIyREUxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVU
ZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
ODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi87IH07CisJCUMyOTMyQTU1
MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjkzMkE1NDE5MDVCNUU3MDBFN0Ez
OUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovOyB9OwogCQlDMjk4MUZEODE3QkFFRTRC
MDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ2MTdCQUVFNEIwMEEzQkM5OCAv
KiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovOyB9OwogCQlDMjk4MUZEOTE3QkFFRTRC
MDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyog
REZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI5ODFGREMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2ly
ZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJy
aWVycy5jcHAgKi87IH07CkBAIC0zMjQyLDYgKzMyNDQsNyBAQAogCQlDMjIzOUQxNjE2MjYyQkRE
MDA1QUM1RkQgLyogR0NUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R0NUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFN0YXRpc3RpY3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjREMzFFMTE2MUNENjk1MDAyQUE0
REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI1RDcwOTkx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gSlNNYW5hZ2VkVmFsdWUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMjUyLDYgKzMyNTUsOCBAQAogCQlDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhbmRsZUJsb2NrSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
Mjg4QjJEQzE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGVUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIg
LyogRGF0ZVRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
RGF0ZVRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL0RhdGVUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNZW1vcnlNYW5h
Z2VtZW50VGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8q
IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgx
RkQ2MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2Vz
LmNwcDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZENzE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5oOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjk4MUZEQTE3QkFGRjQ0MDBBM0JD
OTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBwYXRoID0gZGZnL0RG
R0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTM2OTgsNiArMzcwMyw4IEBACiAJCQkJMTREODU3NzQwQTQ2OTZDODAwMzIxNDZDIC8qIHRlc3Rh
cGkuanMgKi8sCiAJCQkJODZEMjIyMTkxNjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gKi8s
CiAJCQkJNjUxMTIyRTUxNDA0NjlCQTAwMkIxMDFEIC8qIHRlc3RSZWdFeHAuY3BwICovLAorCQkJ
CUMyOTMyQTUzMTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLywK
KwkJCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1t
ICovLAogCQkJKTsKIAkJCW5hbWUgPSB0ZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0zOTkyLDYgKzM5OTksNyBAQAogCQkJCUUxMjRBOEY2MEU1NTU3NzUwMDMwOTFGMSAvKiBP
cGFxdWVKU1N0cmluZy5jcHAgKi8sCiAJCQkJRTEyNEE4RjUwRTU1NTc3NTAwMzA5MUYxIC8qIE9w
YXF1ZUpTU3RyaW5nLmggKi8sCiAJCQkJNURFM0QwRjQwREQ4RERGQjAwNDY4NzE0IC8qIFdlYktp
dEF2YWlsYWJpbGl0eS5oICovLAorCQkJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElE
YXRhLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC01NDgzLDYgKzU0OTEsNyBAQAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAv
KiBBUk02NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZEM0IyQzQxMDE1NkJERTAw
Mjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NDAzMjAxOEJG
RkJFMTAwNUEwODExIC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjQ4
RjY4RTE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkFB
QkNERTcxOEVGMjk0MjAwMDAyMDk2IC8qIEdDTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzJEQTc3ODMxOEUyNTk5OTAwNjZGQ0I2IC8qIEhlYXBJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyQUFDRTYzRDE4Q0E1QTAzMDBFRDAxOTEgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKQEAgLTY3ODEsNiArNjc5MCw3IEBACiAJCQkJQzIxODFGQzIxOEE5NDhGQjAw
MjVBMjM1IC8qIEpTRXhwb3J0VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNDQwRjYxMDBB
NEY4NTY3MDAwNUYwNjEgLyogdGVzdGFwaS5jIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEMjIyMUEx
NjdFRjk0NDAwMjRDODA0IC8qIHRlc3RhcGkubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMjkzMkE1
NTE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2NzYxNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgIldhdGNocG9p
bnQuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
QVBJRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oPgogI2luY2x1
ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC01MTAsNiAr
NTExLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBCdWlsdGluRXhlY3V0
YWJsZXMqIGJ1aWx0aW5FeGVjdXRhYmxlcygpIHsgcmV0dXJuIG1fYnVpbHRpbkV4ZWN1dGFibGVz
LmdldCgpOyB9CiAKKyAgICAgICAgQVBJRGF0YSBhcGlEYXRhOworCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIENsZWFyRXhjZXB0aW9uU2NvcGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229918</attachid>
            <date>2014-04-22 16:14:17 -0700</date>
            <delta_ts>2014-04-22 17:50:49 -0700</delta_ts>
            <desc>Fix build</desc>
            <filename>bug-131691-20140422161356.patch</filename>
            <type>text/plain</type>
            <size>48939</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTA0LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBTdXBwb3J0IFB5dGhvbiAyLjcgaW4gQ3lnd2luCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTQ19BUElEYXRhX2gKKyNkZWZpbmUgSlNDX0FQSURhdGFfaAor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisK
K3N0cnVjdCBBUElEYXRhIHsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBleHRlcm5hbE9iamVj
dEdyYXBoOworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4dGVybmFsUmVtZW1iZXJlZFNldDsK
K307CisKKyNlbHNlCisKK3N0cnVjdCBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpD
X0FQSV9FTkFCTEVECisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX0FQSURh
dGFfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGlu
ZS5tbQkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAICsgKEpTVmly
dHVhbE1hY2hpbmUgKil3cmFwcGVyRm9ySlNDb250ZXgKIEBpbXBsZW1lbnRhdGlvbiBKU1ZpcnR1
YWxNYWNoaW5lIHsKICAgICBKU0NvbnRleHRHcm91cFJlZiBtX2dyb3VwOwogICAgIE5TTWFwVGFi
bGUgKm1fY29udGV4dENhY2hlOwotICAgIE5TTWFwVGFibGUgKm1fZXh0ZXJuYWxPYmplY3RHcmFw
aDsKLSAgICBOU01hcFRhYmxlICptX2V4dGVybmFsUmVtZW1iZXJlZFNldDsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXQKQEAgLTExMCwxMyArMTA4LDIyIEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbnRleHRHcm91cFJlZjoKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPcGFxdWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVl
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eTsKICAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBh
bGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0
aW9ucyBjYXBhY2l0eTowXTsKLSAgICAKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdl
YWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVu
Y3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7Ci0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBz
dHJvbmdJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50
ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGgg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CiAKLSAgICBOU1BvaW50ZXJG
dW5jdGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVl
TWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwotICAgIG1fZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlv
bnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF07
CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIodm0pOworICAgIGlmICghdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoKSB7
CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25h
bGl0eTsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBzdHJvbmdJRE9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKKyAgICAgICAgdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoID0g
YWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRp
b25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTow
XSk7CisgICAgfQorCisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCkg
eworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRl
Z2VyUGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
ID0gYWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFjaXR5
OjBdKTsKKyAgICB9CiAgICAKICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYg
Zm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApAQCAtMTI3LDggKzEzNCw2IEBAIC0gKHZv
aWQpZGVhbGxvYwogewogICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKICAgICBb
bV9jb250ZXh0Q2FjaGUgcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxl
YXNlXTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVy
IGRlYWxsb2NdOwogfQogCkBAIC0xNTksNyArMTY0LDggQEAgLSAoYm9vbClpc09sZEV4dGVybmFs
T2JqZWN0OihpZClvYmplY3QKIC0gKHZvaWQpYWRkRXh0ZXJuYWxSZW1lbWJlcmVkT2JqZWN0Oihp
ZClvYmplY3QKIHsKICAgICBBU1NFUlQoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3Rd
KTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKKyAgICBOU01hcFRhYmxlICpleHRlcm5h
bFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHRvSlMobV9ncm91cCkt
PmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKTsKKyAgICBbZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5
Om9iamVjdF07CiB9CiAKIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHdp
dGhPd25lcjooaWQpb3duZXIKQEAgLTE3MiwxOCArMTc4LDIwIEBAIC0gKHZvaWQpYWRkTWFuYWdl
ZFJlZmVyZW5jZTooaWQpb2JqZWN0IHcKICAgICAKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9K
UyhtX2dyb3VwKSk7CisKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOyAKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGlmIChbc2VsZiBpc09sZEV4dGVybmFs
T2JqZWN0Om93bmVyXSAmJiAhW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3RdKQogICAg
ICAgICBbc2VsZiBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6b3duZXJdOwotIAotICAgIE5T
TWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9y
S2V5Om93bmVyXTsKKworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0
aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQo
KSk7CisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2JqZWN0R3JhcGgg
b2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykgewogICAgICAgICBO
U1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlv
bnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAg
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxp
dHk7CiAgICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhL
ZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFj
aXR5OjFdOwogCi0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVk
T2JqZWN0cyBmb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCBzZXRP
YmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07CiAgICAgICAgIFtvd25lZE9iamVjdHMg
cmVsZWFzZV07CiAgICAgfQogCkBAIC0yMDIsOSArMjEwLDExIEBAIC0gKHZvaWQpcmVtb3ZlTWFu
YWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2dy
b3VwKSk7Ci0gICAgCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW21fZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMo
bV9ncm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKworICAgIE5TTWFw
VGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZt
LmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7IAorICAgIE5TTWFwVGFibGUgKm93
bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAg
ICAgaWYgKCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKICAgIApAQCAtMjE4LDggKzIy
OCw4IEBAIC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICAgICAg
TlNNYXBSZW1vdmUob3duZWRPYmplY3RzLCBvYmplY3QpOwogCiAgICAgaWYgKCFbb3duZWRPYmpl
Y3RzIGNvdW50XSkgewotICAgICAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVj
dEZvcktleTpvd25lcl07Ci0gICAgICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2
bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSkgcmVtb3ZlT2JqZWN0Rm9yS2V5
Om93bmVyXTsKICAgICB9CiB9CiAKQEAgLTI1MCwyNSArMjYwLDEyIEBAIC0gKHZvaWQpYWRkQ29u
dGV4dDooSlNDb250ZXh0ICopd3JhcHBlciAKICAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNo
ZSwgZ2xvYmFsQ29udGV4dCwgd3JhcHBlcik7CiB9CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoCi17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxPYmplY3RHcmFwaDsKLX0KLQot
LSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsUmVtZW1iZXJlZFNldAotewotICAgIHJldHVybiBtX2V4
dGVybmFsUmVtZW1iZXJlZFNldDsKLX0KLQogQGVuZAogCiB2b2lkIHNjYW5FeHRlcm5hbE9iamVj
dEdyYXBoKEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yLCB2b2lkKiByb290
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2
aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFt2
aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKICAgICAgICAgVmVjdG9yPHZvaWQqPiBzdGFj
azsKICAgICAgICAgc3RhY2suYXBwZW5kKHJvb3QpOwogICAgICAgICB3aGlsZSAoIXN0YWNrLmlz
RW1wdHkoKSkgewpAQCAtMjg4LDExICsyODUsOCBAQCB2b2lkIHNjYW5FeHRlcm5hbE9iamVjdEdy
YXBoKEpTQzo6Vk0mIHZtCiB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpWTSYg
dm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVy
Q2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAgICBp
ZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01hcFRh
YmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2JqZWN0
R3JhcGhdOwotICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbdmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4
dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSk7CiAgICAgICAgIGZvciAoaWQga2V5IGluIGV4dGVy
bmFsUmVtZW1iZXJlZFNldCkgewogICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3Rz
ID0gW2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OmtleV07CiAgICAgICAgICAgICBm
b3IgKGlkIG93bmVkT2JqZWN0IGluIG93bmVkT2JqZWN0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaAkocmV2aXNp
b24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBKU0NvbnRleHRHcm91
cFJlZiBnZXRHcm91cEZyb21WaXJ0dWFsTWFjCiAtIChKU0NvbnRleHQgKiljb250ZXh0Rm9yR2xv
YmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAtICh2b2lk
KWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgZm9yR2xvYmFsQ29udGV4dFJlZjooSlNH
bG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoOwotCiBAZW5kCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK3ZvaWQgcnVuTWVtb3J5TWFuYWdl
bWVudFRlc3RzKCk7CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oIgorCisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworZXh0ZXJuICJDIiB2b2lkIGNoZWNrUmVzdWx0KE5T
U3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpOworCitleHRlcm4gIkMiIHZvaWQgSlNT
eW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CitleHRl
cm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4
dFJlZik7CisKK0BpbnRlcmZhY2UgT3BhcXVlT2JqQ09iamVjdCA6IE5TT2JqZWN0CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBPcGFxdWVPYmpDT2JqZWN0CisrIChPcGFxdWVPYmpDT2JqZWN0ICop
b3BhcXVlT2JqZWN0Cit7CisgICAgcmV0dXJuIFtbc2VsZiBhbGxvY10gaW5pdF07Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisK
K0BpbnRlcmZhY2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKKy0gKHZvaWQpc2V0VmFsdWU6KEpT
VmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAoSlNWYWx1ZSAqKXZhbHVl
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTQ29sbGVj
dGlvbiB7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Cit9CistIChpZClpbml0Cit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVl
ICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKG9s
ZE1hbmFnZWRWYWx1ZSkgeworICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9IFtvbGRNYW5hZ2Vk
VmFsdWUgdmFsdWVdOworICAgICAgICBpZiAob2xkVmFsdWUpCisgICAgICAgICAgICBbb2xkVmFs
dWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOm9sZE1hbmFn
ZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgfQorICAgIEpTTWFuYWdlZFZhbHVlICptYW5h
Z2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsK
KyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1h
bmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgW19kaWN0IHNldE9iamVjdDptYW5hZ2Vk
VmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJp
bmcgKilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW19kaWN0IG9i
amVjdEZvcktleTprZXldOworICAgIGlmICghbWFuYWdlZFZhbHVlKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKK30KK0BlbmQKKworQHByb3Rv
Y29sIENsaWNrYWJsZUV4cG9ydHMgPEpTRXhwb3J0PgorQHByb3BlcnR5IChhc3NpZ24pIEpTVmFs
dWUgKm9uY2xpY2s7CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CitA
ZW5kCisKK0BpbnRlcmZhY2UgQ2xpY2thYmxlIDogTlNPYmplY3Q8Q2xpY2thYmxlRXhwb3J0cz4K
Ky0gKHZvaWQpY2xpY2s7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDbGlja2FibGUgeworICAg
IEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsKKyAgICBKU01hbmFnZWRWYWx1
ZSAqbV9vbmNsaWNrSGFuZGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAq
KXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKy0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1
ZSAqKXZhbHVlCit7CisgICAgbV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNo
aW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07
Cit9CistIChKU1ZhbHVlICopd2Vha09uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fd2Vha09uY2xp
Y2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKEpTVmFsdWUgKilvbmNsaWNrCit7CisgICAgcmV0dXJu
IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKHZvaWQpY2xpY2sKK3sKKyAgICBpZiAo
IW1fb25jbGlja0hhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKK30KK0BlbmQKKworQGludGVyZmFjZSBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMgOiBOU09iamVjdAorKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlU
ZXN0OworKyAodm9pZClhdm9pZE1vZGlmeWluZ05TTWFwVGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3Q7
CisrICh2b2lkKWJhZ09mSlNNYW5hZ2VkVmFsdWVzVGVzdDsKKysgKHZvaWQpc2NhbkV4dGVybmFs
T2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3Q7CisrICh2b2lkKWRpc2FwcGVhcmlu
Z1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3Q7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMKKysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdAoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIENsaWNrYWJsZSAqY2xpY2thYmxlID0gW1tDbGlj
a2FibGUgYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgICAgICBjb250ZXh0W0AiY2xpY2thYmxlIl0gPSBjbGlja2FibGU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgY2xpY2thYmxlLm9u
Y2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gdHJ1ZTsg
XAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgY2xpY2thYmxlLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJ2Zvbyc7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAgICAgICAgICAiXTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
ICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdn
aW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS5vbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0g
fHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjbGlja2FibGUud2Vha09uY2xpY2siXTsKKyAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBHQyIs
IFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwK
KyAgICAgICAgICAgICAgICBjbGlja2FibGUgPSBudWxsOyBcCisgICAgICAgICAgICAiXTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAg
ICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlk
Q2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNr
IGRvZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgfQorfQor
CisrICh2b2lkKWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdAorewor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBP
cGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgSlNDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24g
YWxsb2NdIGluaXRdOworICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rp
b24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4
dF07CisgICAgICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5h
Z2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290
T2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRS
ZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93bmVyOm1lc3NhZ2VdOworICAgICAgICAgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICB9CisgICAgfQorfQorCisrICh2b2lkKWJhZ09mSlNNYW5h
Z2VkVmFsdWVzVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbGxl
Y3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07
CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIC8vIENy
ZWF0ZSBhIG5ldyBKU0NvbnRleHQgYW5kIGdpdmUgaXQgYSByb290IG9iamVjdCB0aGF0IHdpbGwg
b3duIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAgICAgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgT3BhcXVlT2Jq
Q09iamVjdCAqcm9vdE9iamVjdCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07Cisg
ICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gQWRkIGEgYnVuY2ggb2YgcHJvcGVydGllcyB0byB0aGUgYmFnIG9mIEpT
TWFuYWdlZFZhbHVlcy4KKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07
CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1
ZVdpdGhCb29sOnRydWUgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OkAiaGVsbG8hIiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwor
ICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVX
aXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
TnVsbEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKKyAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVu
ZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQi
XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHJvcGVydGllcyBhcmUgc3RpbGwgcHJlc2VudCBh
ZnRlciBhIGZ1bGwgY29sbGVjdGlvbi4KKyAgICAgICAgICAgIEpTVmFsdWUgKmlzSGFtID0gW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIEpT
VmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3Nh
Z2UiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm15TnVtYmVyID0gW215UHJpdmF0ZVByb3BlcnRp
ZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmRlZmlu
aXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5
X251bGwiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm5vdFN1cmVJZlVuZGVmaW5lZCA9IFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVh
bl0gJiYgW2lzSGFtIHRvQm9vbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdl
IGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0
cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibXlf
bnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVyXSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0g
PT0gNDIpOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbnVs
bCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIsIFtub3RTdXJlSWZVbmRlZmluZWQg
aXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm93IHRoYXQg
dGhlIEpTQ29udGV4dCBoYXMgZGlzYXBwZWFyZWQsIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIEpTTWFu
YWdlZFZhbHVlcyBoYXZlIGJlZW4gY2xlYXJlZC4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0p
OworICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJt
eV9udW1iZXIgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlf
bnVtYmVyIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBuaWwi
LCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIG5pbCIsICFb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJd
KTsKKyAgICB9Cit9CisKKworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBm
b3JjZSBhbiBFZGVuQ29sbGVjdGlvbgorICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtP
cGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgIH0KKyAgICAg
ICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9i
amVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaAorICAgICAg
ICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2UgYWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRl
bkNvbGxlY3Rpb24uCisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKmNoaWxkID0gW09wYXF1ZU9i
akNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUg
YWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdlZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtl
cHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVzY2FuCisgICAgICAgIC8vIHRoZSBleHRlcm5hbCBv
YmplY3QgZ3JhcGguCisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBu
aWw7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqanNP
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICAgICAgbWFuYWdlZEpTT2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hp
bGRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5D
b2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICAvLyBD
aGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZh
bHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7CisgICAgfQorfQorCisrICh2
b2lkKWRpc2FwcGVhcmluZ1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3QKK3sKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBuaWw7CisgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gMDsKKyAgICAgICAgSlNNYW5hZ2Vk
VmFsdWUgKm1hbmFnZWRDaGlsZCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
CisgICAgICAgICAgICBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsK
KyAgICAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJldGFpbihjb250ZXh0UmVmKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtPcGFxdWVPYmpDT2Jq
ZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFx
dWVPYmplY3RdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgICAgICBKU1ZhbHVlICpq
c0NoaWxkID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNoaWxkIGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgICAgIGpzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0eSJdID0gQCJmb28iOwor
ICAgICAgICAgICAgbWFuYWdlZENoaWxkID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTpqc0NoaWxkXTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFk
ZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZENoaWxkIHdpdGhPd25lcjpjaGlsZF07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhjb250ZXh0UmVmKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFttYW5hZ2VkQ2hpbGQgdmFsdWVdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJjaGlsZCBoYXMgbXlTcGVjaWFsUHJvcGVydHkgZXZlbiB3
aGVuIEpTVmlydHVhbE1hY2hpbmUgZGlzYXBwZWFycyIsCisgICAgICAgICAgICAgICAgW1tqc0No
aWxkW0AibXlTcGVjaWFsUHJvcGVydHkiXSB0b1N0cmluZ10gaXNFcXVhbFRvU3RyaW5nOkAiZm9v
Il0pOworICAgICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyAg
ICAgICAgfQorICAgIH0KK30KK0BlbmQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMo
KQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdF07CisgICAgICAg
IFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0XTsKKyAgICAg
ICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgZGlzYXBw
ZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF07CisgICAgfQorfQorCisjZW5kaWYgLy8g
SlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE2NzY4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKICNpbXBvcnQgIkRh
dGVUZXN0cy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgorI2ltcG9ydCAiTWVtb3J5TWFu
YWdlbWVudFRlc3RzLmgiCiAKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKQEAgLTExNyw4ICsx
MTgsNiBAQCBib29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIC0gKGlkKWluaXRXaXRoU3RyaW5n
OihOU1N0cmluZyopc3RyaW5nOwogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IChyZWFkb25s
eSkgaW50IHk7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKLUBwcm9wZXJ0
eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcg
KiltZXNzYWdlOwogQGVuZAogCkBAIC0xMjYsMTMgKzEyNSw5IEBAIEBpbnRlcmZhY2UgVGV4dFhZ
WiA6IE5TT2JqZWN0IDxUZXh0WFlaPgogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IGludCB5
OwogQHByb3BlcnR5IGludCB6OwotLSAodm9pZCljbGljazsKIEBlbmQKIAotQGltcGxlbWVudGF0
aW9uIFRleHRYWVogewotICAgIEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsK
LSAgICBKU01hbmFnZWRWYWx1ZSAqbV9vbmNsaWNrSGFuZGxlcjsKLX0KK0BpbXBsZW1lbnRhdGlv
biBUZXh0WFlaCiBAc3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7
CkBAIC0xNTAsMzIgKzE0NSw2IEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCiB7
CiAgICAgdGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAx
MyAmIHkgPT0gNCAmJiB6ID09IDU7CiB9Ci0tICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVl
ICopdmFsdWUKLXsKLSAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBt
YW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotfQotCi0tICh2b2lkKXNldE9uY2xpY2s6KEpT
VmFsdWUgKil2YWx1ZQotewotICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUg
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25jbGlja0hhbmRsZXIgd2l0aE93bmVyOnNl
bGZdOwotfQotLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX3dlYWtP
bmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tIChKU1ZhbHVlICopb25jbGljawotewotICAgIHJl
dHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tICh2b2lkKWNsaWNrCi17Ci0gICAg
aWYgKCFtX29uY2xpY2tIYW5kbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKLX0KIEBlbmQKIAogQGNsYXNzIFRpbnlET01O
b2RlOwpAQCAtMjM4LDQ3ICsyMDcsNiBAQCAtICh2b2lkKXJlbW92ZUNoaWxkQXRJbmRleDooTlNV
SW50ZWdlcilpCiAKIEBlbmQKIAotQGludGVyZmFjZSBKU0NvbGxlY3Rpb24gOiBOU09iamVjdAot
LSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
Ci0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZGlj
dDsKLX0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9kaWN0ID0gW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNl
dFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIEpT
TWFuYWdlZFZhbHVlICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07
Ci0gICAgaWYgKG9sZE1hbmFnZWRWYWx1ZSkgewotICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9
IFtvbGRNYW5hZ2VkVmFsdWUgdmFsdWVdOwotICAgICAgICBpZiAob2xkVmFsdWUpCi0gICAgICAg
ICAgICBbb2xkVmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJl
bmNlOm9sZE1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgfQotICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgW19kaWN0IHNldE9i
amVjdDptYW5hZ2VkVmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KLS0gKEpTVmFsdWUgKil2YWx1ZUZv
cktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVl
ID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmICghbWFuYWdlZFZhbHVlKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKLX0KLUBl
bmQKLQogQHByb3RvY29sIEluaXRBIDxKU0V4cG9ydD4KIC0gKGlkKWluaXRXaXRoQTooaW50KWE7
CiAtIChpbnQpaW5pdGlhbGl6ZTsKQEAgLTUxMCw1NSArNDM4LDYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29s
bGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0
XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTQ29udGV4dCog
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgICAgIFRlc3RPYmpl
Y3QqIHJvb3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25l
cjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVl
OltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAi
aXNfaGFtIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6
QCJtZXNzYWdlIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpb
SlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlf
bnVtYmVyIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdOwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFs
dWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCJdOwotCi0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAg
ICAgIEpTVmFsdWUgKmlzSGFtID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJp
c19oYW0iXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm15TnVt
YmVyID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKLSAg
ICAgICAgICAgIEpTVmFsdWUgKmRlZmluaXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMg
dmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm5v
dFN1cmVJZlVuZGVmaW5lZCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90
X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBp
cyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYgW2lzSGFtIHRvQm9vbF0pOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAm
JiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVy
XSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0gPT0gNDIpOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJkZWZpbml0ZWx5X251bGwgaXMgbnVsbCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5l
ZCIsIFtub3RTdXJlSWZVbmRlZmluZWQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlz
IG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgIVtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAImRl
ZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAiZGVmaW5pdGVseV9udWxsIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lm
X3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNl
cG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKLSAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgIFRlc3RPYmplY3QgKnJvb3RP
YmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgSlNDb2xsZWN0aW9uICpj
b2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBKU01hbmFnZWRWYWx1
ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVl
OmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0
LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93
bmVyOm1lc3NhZ2VdOwotICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0Owog
ICAgICAgICBjb250ZXh0W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewpAQCAtOTc3
LDYwICs4NTYsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwotICAgICAgICBUZXh0WFlaICp0ZXN0WFlaID0gW1tUZXh0WFlaIGFsbG9j
XSBpbml0XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRl
eHRbQCJ0ZXN0WFlaIl0gPSB0ZXN0WFlaOwotCi0gICAgICAgICAgICBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAotICAgICAg
ICAgICAgICAgIHRlc3RYWVoub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAg
ICAgICAgIGRpZENsaWNrID0gdHJ1ZTsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRlc3RYWVoud2Vha09uY2xpY2sgPSBmdW5jdGlv
bigpIHsgXAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7IFwKLSAgICAgICAgICAg
ICAgICB9OyBcCi0gICAgICAgICAgICAiXTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwotICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRv
Qm9vbF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAib25jbGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8
fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkpOwotICAgICAgICB9Ci0KLQotICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAidGVzdFhZWi53ZWFrT25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1
bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8
IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAotICAgICAg
ICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaID0g
bnVsbDsgXAotICAgICAgICAgICAgIl07Ci0gICAgICAgIH0KLQotICAgICAgICBKU1N5bmNocm9u
b3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBbdGVzdFhZWiBj
bGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRs
ZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CiAgICAgICAgIFRlc3RPYmpl
Y3QgKnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKICAgICAgICAgSlNNYW5h
Z2VkVmFsdWUgKndlYWtWYWx1ZTsKQEAgLTEzMjYsNDIgKzExNTEsMTEgQEAgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSSgpCiAgICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRl
eHQ6Y29udGV4dF0gdG9EaWN0aW9uYXJ5XTsKICAgICAgICAgW1tKU1ZhbHVlIHZhbHVlV2l0aElu
dDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0FycmF5XTsKICAgICB9Ci0KLSAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFi
bGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9uCi0gICAgICAgIC8vIHNvIHRo
YXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBUZXN0T2JqZWN0
ICpyb290ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7Ci0gICAgICAgIH0KLSAg
ICAgICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qg
b25seSByZWFjaGFibGUgdmlhIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgKLSAgICAgICAgLy8g
dGhyb3VnaCB0aGUgb2JqZWN0IHdlIGFscmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xs
ZWN0aW9uLgotICAgICAgICBUZXN0T2JqZWN0ICpjaGlsZCA9IFtUZXN0T2JqZWN0IHRlc3RPYmpl
Y3RdOwotICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
OmNoaWxkIHdpdGhPd25lcjpyb290XTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdl
ZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtlcHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVz
Y2FuCi0gICAgICAgIC8vIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIEpTTWFu
YWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBuaWw7Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqanNPYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOwotICAgICAgICAgICAgbWFuYWdlZEpT
T2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07
Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
Om1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hpbGRdOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQgc2hvdWxkIHJlc2NhbiB0aGUgbmV3
IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNTeW5jaHJvbm91
c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbWFuYWdlZCBKU1ZhbHVlIGlzIHN0
aWxsIGFsaXZlLgotICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRvZXNuJ3Qg
cmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVlXSAhPSBu
aWwpOwotICAgIH0KLQorICAgIAogICAgIGN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
KCk7CiAgICAgcnVuRGF0ZVRlc3RzKCk7CiAgICAgcnVuSlNFeHBvcnRUZXN0cygpOworICAgIHJ1
bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOwogfQogCiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjc2ODMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC03ODcsNiArNzg3LDcgQEAKICAgPEl0ZW1Hcm91cD4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElDYWxsYmFja0Z1bmN0aW9uLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEFQSVxKYXZhU2NyaXB0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2
YVNjcmlwdENvcmUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKU0FQSVdy
YXBwZXJPYmplY3QuaCIgLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE2NzY4MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycwkod29ya2luZyBjb3B5KQpAQCAtMTM3Niw2ICsxMzc2LDkgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEFQSVxBUElDYXN0LmgiPgogICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElEYXRh
LmgiPgorICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0LmgiPgogICAgICAgPEZpbHRlcj5B
UEk8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNjc2ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY1
Niw2ICsxNjU2LDcgQEAKIAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMjU0
OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi87IH07CiAJCUMyMkIzMUI5
MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0MDMwNTMxNEI0
MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsKKwkJQzI0OEY2OEUxOTA1RDcz
QzAwNzBBMkIxIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0RDMxRTIxNjFD
RDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFw
U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFw
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI1RDcwOUIxNkRFOTlG
NDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdl
ZFZhbHVlLm1tICovOyB9OwpAQCAtMTY2NSw2ICsxNjY2LDcgQEAKIAkJQzI4MzE5MDAxNkZFNEI3
RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjgzMThGRjE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2su
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjgz
MTkwMjE2RkU1MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgzMTkwMTE2RkU1MzNFMDAxNTdC
RkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggKi87IH07CiAJCUMyODhCMkRFMThBNTREM0UwMDdC
RTQwQiAvKiBEYXRlVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tICovOyB9
OworCQlDMjkzMkE1NTE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5MzJBNTQx
OTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSAqLzsgfTsKIAkJQzI5
ODFGRDgxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENjE3QkFF
RTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCAqLzsgfTsKIAkJQzI5
ODFGRDkxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGRDcxN0JBRUU0
QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyOTgxRkRDMTdCQUZGNDQwMEEzQkM5
OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVz
aXJlZFdyaXRlQmFycmllcnMuY3BwICovOyB9OwpAQCAtMzI0Miw2ICszMjQ0LDcgQEAKIAkJQzIy
MzlEMTYxNjI2MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdDVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
MjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBB
UElEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhl
YXBTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhl
YXBTdGF0aXN0aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTEx
NjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI1Miw2ICszMjU1LDggQEAKIAkJQzI4MzE5MDEx
NkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVCbG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzI4OEIyREMxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRlVGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0
cy9EYXRlVGVzdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4OEIyREQxOEE1
NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IERhdGVUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVzdHMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTMyQTUzMTkwNUI1RTcwMEU3QTM5QiAv
KiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTWVtb3J5TWFuYWdlbWVudFRlc3RzLmg7IHBhdGggPSBBUEkvdGVzdHMvTWVtb3J5TWFuYWdl
bWVudFRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTMyQTU0MTkwNUI1
RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW07IHBhdGggPSBB
UEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMjk4MUZENjE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVu
Y2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRX
ZWFrUmVmZXJlbmNlcy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4
IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVk
V2Vha1JlZmVyZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGREEx
N0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsg
cGF0aCA9IGRmZy9ERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNjk4LDYgKzM3MDMsOCBAQAogCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMy
MTQ2QyAvKiB0ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0
ZXN0YXBpLm1tICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhw
LmNwcCAqLywKKwkJCQlDMjkzMkE1MzE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVu
dFRlc3RzLmggKi8sCisJCQkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gdGVzdHM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMzk5Miw2ICszOTk5LDcgQEAKIAkJCQlFMTI0QThGNjBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRBOEY1MEU1NTU3NzUw
MDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0MEREOERERkIwMDQ2
ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjQ4RjY4QzE5MDVENzNDMDA3
MEEyQjEgLyogQVBJRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtNTQ4Myw2ICs1NDkxLDcgQEAKIAkJCQlBMUEwMDlDMTE4MzFB
MjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNC
MkM0MTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1ODQwMzIwMThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQzI0OEY2OEUxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCkBAIC02NzgxLDYgKzY3OTAsNyBAQAogCQkJCUMyMTgx
RkMyMThBOTQ4RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ0MEY2MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAog
CQkJCTg2RDIyMjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJQzI5MzJBNTUxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5t
bSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZp
c2lvbiAxNjc2ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIFZNX2gKICNkZWZpbmUgVk1faAog
CisjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKQEAgLTUx
MCw2ICs1MTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5F
eGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0
YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBBUElEYXRhIGFwaURhdGE7CisKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBm
cmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229933</attachid>
            <date>2014-04-22 17:50:54 -0700</date>
            <delta_ts>2014-04-22 19:08:01 -0700</delta_ts>
            <desc>I have a dream</desc>
            <filename>bug-131691-20140422175034.patch</filename>
            <type>text/plain</type>
            <size>49365</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTA0LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBTdXBwb3J0IFB5dGhvbiAyLjcgaW4gQ3lnd2luCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTQ19BUElEYXRhX2gKKyNkZWZpbmUgSlNDX0FQSURhdGFfaAor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisK
K3N0cnVjdCBBUElEYXRhIHsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBleHRlcm5hbE9iamVj
dEdyYXBoOworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4dGVybmFsUmVtZW1iZXJlZFNldDsK
K307CisKKyNlbHNlCisKK3N0cnVjdCBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpD
X0FQSV9FTkFCTEVECisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX0FQSURh
dGFfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGlu
ZS5tbQkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAICsgKEpTVmly
dHVhbE1hY2hpbmUgKil3cmFwcGVyRm9ySlNDb250ZXgKIEBpbXBsZW1lbnRhdGlvbiBKU1ZpcnR1
YWxNYWNoaW5lIHsKICAgICBKU0NvbnRleHRHcm91cFJlZiBtX2dyb3VwOwogICAgIE5TTWFwVGFi
bGUgKm1fY29udGV4dENhY2hlOwotICAgIE5TTWFwVGFibGUgKm1fZXh0ZXJuYWxPYmplY3RHcmFw
aDsKLSAgICBOU01hcFRhYmxlICptX2V4dGVybmFsUmVtZW1iZXJlZFNldDsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXQKQEAgLTExMCwxMyArMTA4LDIyIEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbnRleHRHcm91cFJlZjoKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPcGFxdWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVl
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eTsKICAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBh
bGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0
aW9ucyBjYXBhY2l0eTowXTsKLSAgICAKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdl
YWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVu
Y3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7Ci0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBz
dHJvbmdJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50
ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGgg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CiAKLSAgICBOU1BvaW50ZXJG
dW5jdGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVl
TWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwotICAgIG1fZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlv
bnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF07
CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIodm0pOworICAgIGlmICghdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoKSB7
CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25h
bGl0eTsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBzdHJvbmdJRE9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKKyAgICAgICAgdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoID0g
YWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRp
b25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTow
XSk7CisgICAgfQorCisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCkg
eworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRl
Z2VyUGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
ID0gYWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFjaXR5
OjBdKTsKKyAgICB9CiAgICAKICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYg
Zm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApAQCAtMTI3LDggKzEzNCw2IEBAIC0gKHZv
aWQpZGVhbGxvYwogewogICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKICAgICBb
bV9jb250ZXh0Q2FjaGUgcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxl
YXNlXTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVy
IGRlYWxsb2NdOwogfQogCkBAIC0xNTksNyArMTY0LDggQEAgLSAoYm9vbClpc09sZEV4dGVybmFs
T2JqZWN0OihpZClvYmplY3QKIC0gKHZvaWQpYWRkRXh0ZXJuYWxSZW1lbWJlcmVkT2JqZWN0Oihp
ZClvYmplY3QKIHsKICAgICBBU1NFUlQoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3Rd
KTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKKyAgICBOU01hcFRhYmxlICpleHRlcm5h
bFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHRvSlMobV9ncm91cCkt
PmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKTsKKyAgICBbZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5
Om9iamVjdF07CiB9CiAKIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHdp
dGhPd25lcjooaWQpb3duZXIKQEAgLTE3MiwxOCArMTc4LDIwIEBAIC0gKHZvaWQpYWRkTWFuYWdl
ZFJlZmVyZW5jZTooaWQpb2JqZWN0IHcKICAgICAKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9K
UyhtX2dyb3VwKSk7CisKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOyAKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGlmIChbc2VsZiBpc09sZEV4dGVybmFs
T2JqZWN0Om93bmVyXSAmJiAhW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3RdKQogICAg
ICAgICBbc2VsZiBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6b3duZXJdOwotIAotICAgIE5T
TWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9y
S2V5Om93bmVyXTsKKworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0
aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQo
KSk7CisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2JqZWN0R3JhcGgg
b2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykgewogICAgICAgICBO
U1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlv
bnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAg
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxp
dHk7CiAgICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhL
ZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFj
aXR5OjFdOwogCi0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVk
T2JqZWN0cyBmb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCBzZXRP
YmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07CiAgICAgICAgIFtvd25lZE9iamVjdHMg
cmVsZWFzZV07CiAgICAgfQogCkBAIC0yMDIsOSArMjEwLDExIEBAIC0gKHZvaWQpcmVtb3ZlTWFu
YWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2dy
b3VwKSk7Ci0gICAgCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW21fZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMo
bV9ncm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKworICAgIE5TTWFw
VGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZt
LmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7IAorICAgIE5TTWFwVGFibGUgKm93
bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAg
ICAgaWYgKCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKICAgIApAQCAtMjE4LDggKzIy
OCw4IEBAIC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICAgICAg
TlNNYXBSZW1vdmUob3duZWRPYmplY3RzLCBvYmplY3QpOwogCiAgICAgaWYgKCFbb3duZWRPYmpl
Y3RzIGNvdW50XSkgewotICAgICAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVj
dEZvcktleTpvd25lcl07Ci0gICAgICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2
bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSkgcmVtb3ZlT2JqZWN0Rm9yS2V5
Om93bmVyXTsKICAgICB9CiB9CiAKQEAgLTI1MCwyNSArMjYwLDEyIEBAIC0gKHZvaWQpYWRkQ29u
dGV4dDooSlNDb250ZXh0ICopd3JhcHBlciAKICAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNo
ZSwgZ2xvYmFsQ29udGV4dCwgd3JhcHBlcik7CiB9CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoCi17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxPYmplY3RHcmFwaDsKLX0KLQot
LSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsUmVtZW1iZXJlZFNldAotewotICAgIHJldHVybiBtX2V4
dGVybmFsUmVtZW1iZXJlZFNldDsKLX0KLQogQGVuZAogCiB2b2lkIHNjYW5FeHRlcm5hbE9iamVj
dEdyYXBoKEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yLCB2b2lkKiByb290
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2
aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFt2
aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKICAgICAgICAgVmVjdG9yPHZvaWQqPiBzdGFj
azsKICAgICAgICAgc3RhY2suYXBwZW5kKHJvb3QpOwogICAgICAgICB3aGlsZSAoIXN0YWNrLmlz
RW1wdHkoKSkgewpAQCAtMjg4LDExICsyODUsOCBAQCB2b2lkIHNjYW5FeHRlcm5hbE9iamVjdEdy
YXBoKEpTQzo6Vk0mIHZtCiB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpWTSYg
dm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVy
Q2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAgICBp
ZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01hcFRh
YmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2JqZWN0
R3JhcGhdOwotICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbdmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4
dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSk7CiAgICAgICAgIGZvciAoaWQga2V5IGluIGV4dGVy
bmFsUmVtZW1iZXJlZFNldCkgewogICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3Rz
ID0gW2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OmtleV07CiAgICAgICAgICAgICBm
b3IgKGlkIG93bmVkT2JqZWN0IGluIG93bmVkT2JqZWN0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaAkocmV2aXNp
b24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBKU0NvbnRleHRHcm91
cFJlZiBnZXRHcm91cEZyb21WaXJ0dWFsTWFjCiAtIChKU0NvbnRleHQgKiljb250ZXh0Rm9yR2xv
YmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAtICh2b2lk
KWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgZm9yR2xvYmFsQ29udGV4dFJlZjooSlNH
bG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoOwotCiBAZW5kCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK3ZvaWQgcnVuTWVtb3J5TWFuYWdl
bWVudFRlc3RzKCk7CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oIgorCisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworZXh0ZXJuICJDIiB2b2lkIGNoZWNrUmVzdWx0KE5T
U3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpOworCitleHRlcm4gIkMiIHZvaWQgSlNT
eW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CitleHRl
cm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4
dFJlZik7CisKK0BpbnRlcmZhY2UgT3BhcXVlT2JqQ09iamVjdCA6IE5TT2JqZWN0CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBPcGFxdWVPYmpDT2JqZWN0CisrIChPcGFxdWVPYmpDT2JqZWN0ICop
b3BhcXVlT2JqZWN0Cit7CisgICAgcmV0dXJuIFtbc2VsZiBhbGxvY10gaW5pdF07Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisK
K0BpbnRlcmZhY2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKKy0gKHZvaWQpc2V0VmFsdWU6KEpT
VmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAoSlNWYWx1ZSAqKXZhbHVl
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTQ29sbGVj
dGlvbiB7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Cit9CistIChpZClpbml0Cit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVl
ICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKG9s
ZE1hbmFnZWRWYWx1ZSkgeworICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9IFtvbGRNYW5hZ2Vk
VmFsdWUgdmFsdWVdOworICAgICAgICBpZiAob2xkVmFsdWUpCisgICAgICAgICAgICBbb2xkVmFs
dWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOm9sZE1hbmFn
ZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgfQorICAgIEpTTWFuYWdlZFZhbHVlICptYW5h
Z2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsK
KyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1h
bmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgW19kaWN0IHNldE9iamVjdDptYW5hZ2Vk
VmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJp
bmcgKilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW19kaWN0IG9i
amVjdEZvcktleTprZXldOworICAgIGlmICghbWFuYWdlZFZhbHVlKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKK30KK0BlbmQKKworQHByb3Rv
Y29sIENsaWNrYWJsZUV4cG9ydHMgPEpTRXhwb3J0PgorQHByb3BlcnR5IChhc3NpZ24pIEpTVmFs
dWUgKm9uY2xpY2s7CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CitA
ZW5kCisKK0BpbnRlcmZhY2UgQ2xpY2thYmxlIDogTlNPYmplY3Q8Q2xpY2thYmxlRXhwb3J0cz4K
Ky0gKHZvaWQpY2xpY2s7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDbGlja2FibGUgeworICAg
IEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsKKyAgICBKU01hbmFnZWRWYWx1
ZSAqbV9vbmNsaWNrSGFuZGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAq
KXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKy0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1
ZSAqKXZhbHVlCit7CisgICAgbV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNo
aW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07
Cit9CistIChKU1ZhbHVlICopd2Vha09uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fd2Vha09uY2xp
Y2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKEpTVmFsdWUgKilvbmNsaWNrCit7CisgICAgcmV0dXJu
IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKHZvaWQpY2xpY2sKK3sKKyAgICBpZiAo
IW1fb25jbGlja0hhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKK30KK0BlbmQKKworQGludGVyZmFjZSBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMgOiBOU09iamVjdAorKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlU
ZXN0OworKyAodm9pZClhdm9pZE1vZGlmeWluZ05TTWFwVGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3Q7
CisrICh2b2lkKWJhZ09mSlNNYW5hZ2VkVmFsdWVzVGVzdDsKKysgKHZvaWQpc2NhbkV4dGVybmFs
T2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3Q7CisrICh2b2lkKWRpc2FwcGVhcmlu
Z1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3Q7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMKKysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdAoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIENsaWNrYWJsZSAqY2xpY2thYmxlID0gW1tDbGlj
a2FibGUgYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgICAgICBjb250ZXh0W0AiY2xpY2thYmxlIl0gPSBjbGlja2FibGU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgY2xpY2thYmxlLm9u
Y2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gdHJ1ZTsg
XAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgY2xpY2thYmxlLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJ2Zvbyc7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAgICAgICAgICAiXTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
ICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdn
aW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS5vbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0g
fHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjbGlja2FibGUud2Vha09uY2xpY2siXTsKKyAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBHQyIs
IFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwK
KyAgICAgICAgICAgICAgICBjbGlja2FibGUgPSBudWxsOyBcCisgICAgICAgICAgICAiXTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAg
ICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlk
Q2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNr
IGRvZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgfQorfQor
CisrICh2b2lkKWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdAorewor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBP
cGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgSlNDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24g
YWxsb2NdIGluaXRdOworICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rp
b24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4
dF07CisgICAgICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5h
Z2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290
T2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRS
ZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93bmVyOm1lc3NhZ2VdOworICAgICAgICAgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICB9CisgICAgfQorfQorCisrICh2b2lkKWJhZ09mSlNNYW5h
Z2VkVmFsdWVzVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbGxl
Y3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07
CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIC8vIENy
ZWF0ZSBhIG5ldyBKU0NvbnRleHQgYW5kIGdpdmUgaXQgYSByb290IG9iamVjdCB0aGF0IHdpbGwg
b3duIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAgICAgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgT3BhcXVlT2Jq
Q09iamVjdCAqcm9vdE9iamVjdCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07Cisg
ICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gQWRkIGEgYnVuY2ggb2YgcHJvcGVydGllcyB0byB0aGUgYmFnIG9mIEpT
TWFuYWdlZFZhbHVlcy4KKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07
CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1
ZVdpdGhCb29sOnRydWUgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OkAiaGVsbG8hIiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwor
ICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVX
aXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
TnVsbEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKKyAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVu
ZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQi
XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHJvcGVydGllcyBhcmUgc3RpbGwgcHJlc2VudCBh
ZnRlciBhIGZ1bGwgY29sbGVjdGlvbi4KKyAgICAgICAgICAgIEpTVmFsdWUgKmlzSGFtID0gW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIEpT
VmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3Nh
Z2UiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm15TnVtYmVyID0gW215UHJpdmF0ZVByb3BlcnRp
ZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmRlZmlu
aXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5
X251bGwiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm5vdFN1cmVJZlVuZGVmaW5lZCA9IFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVh
bl0gJiYgW2lzSGFtIHRvQm9vbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdl
IGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0
cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibXlf
bnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVyXSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0g
PT0gNDIpOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbnVs
bCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIsIFtub3RTdXJlSWZVbmRlZmluZWQg
aXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm93IHRoYXQg
dGhlIEpTQ29udGV4dCBoYXMgZGlzYXBwZWFyZWQsIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIEpTTWFu
YWdlZFZhbHVlcyBoYXZlIGJlZW4gY2xlYXJlZC4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0p
OworICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJt
eV9udW1iZXIgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlf
bnVtYmVyIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBuaWwi
LCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIG5pbCIsICFb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJd
KTsKKyAgICB9Cit9CisKKworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBm
b3JjZSBhbiBFZGVuQ29sbGVjdGlvbgorICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtP
cGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgIH0KKyAgICAg
ICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9i
amVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaAorICAgICAg
ICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2UgYWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRl
bkNvbGxlY3Rpb24uCisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKmNoaWxkID0gW09wYXF1ZU9i
akNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUg
YWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdlZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtl
cHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVzY2FuCisgICAgICAgIC8vIHRoZSBleHRlcm5hbCBv
YmplY3QgZ3JhcGguCisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBu
aWw7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqanNP
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICAgICAgbWFuYWdlZEpTT2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hp
bGRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5D
b2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICAvLyBD
aGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZh
bHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7CisgICAgfQorfQorCisrICh2
b2lkKWRpc2FwcGVhcmluZ1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3QKK3sKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBuaWw7CisgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gMDsKKyAgICAgICAgSlNNYW5hZ2Vk
VmFsdWUgKm1hbmFnZWRDaGlsZCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
CisgICAgICAgICAgICBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsK
KyAgICAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJldGFpbihjb250ZXh0UmVmKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtPcGFxdWVPYmpDT2Jq
ZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFx
dWVPYmplY3RdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgICAgICBKU1ZhbHVlICpq
c0NoaWxkID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNoaWxkIGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgICAgIGpzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0eSJdID0gQCJmb28iOwor
ICAgICAgICAgICAgbWFuYWdlZENoaWxkID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTpqc0NoaWxkXTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFk
ZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZENoaWxkIHdpdGhPd25lcjpjaGlsZF07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhjb250ZXh0UmVmKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFttYW5hZ2VkQ2hpbGQgdmFsdWVdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJjaGlsZCBoYXMgbXlTcGVjaWFsUHJvcGVydHkgZXZlbiB3
aGVuIEpTVmlydHVhbE1hY2hpbmUgZGlzYXBwZWFycyIsCisgICAgICAgICAgICAgICAgW1tqc0No
aWxkW0AibXlTcGVjaWFsUHJvcGVydHkiXSB0b1N0cmluZ10gaXNFcXVhbFRvU3RyaW5nOkAiZm9v
Il0pOworICAgICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyAg
ICAgICAgfQorICAgIH0KK30KK0BlbmQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMo
KQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdF07CisgICAgICAg
IFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0XTsKKyAgICAg
ICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgZGlzYXBw
ZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF07CisgICAgfQorfQorCisjZW5kaWYgLy8g
SlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE2NzY4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKICNpbXBvcnQgIkRh
dGVUZXN0cy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgorI2ltcG9ydCAiTWVtb3J5TWFu
YWdlbWVudFRlc3RzLmgiCiAKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKQEAgLTExNyw4ICsx
MTgsNiBAQCBib29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIC0gKGlkKWluaXRXaXRoU3RyaW5n
OihOU1N0cmluZyopc3RyaW5nOwogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IChyZWFkb25s
eSkgaW50IHk7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKLUBwcm9wZXJ0
eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcg
KiltZXNzYWdlOwogQGVuZAogCkBAIC0xMjYsMTMgKzEyNSw5IEBAIEBpbnRlcmZhY2UgVGV4dFhZ
WiA6IE5TT2JqZWN0IDxUZXh0WFlaPgogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IGludCB5
OwogQHByb3BlcnR5IGludCB6OwotLSAodm9pZCljbGljazsKIEBlbmQKIAotQGltcGxlbWVudGF0
aW9uIFRleHRYWVogewotICAgIEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsK
LSAgICBKU01hbmFnZWRWYWx1ZSAqbV9vbmNsaWNrSGFuZGxlcjsKLX0KK0BpbXBsZW1lbnRhdGlv
biBUZXh0WFlaCiBAc3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7
CkBAIC0xNTAsMzIgKzE0NSw2IEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCiB7
CiAgICAgdGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAx
MyAmIHkgPT0gNCAmJiB6ID09IDU7CiB9Ci0tICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVl
ICopdmFsdWUKLXsKLSAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBt
YW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotfQotCi0tICh2b2lkKXNldE9uY2xpY2s6KEpT
VmFsdWUgKil2YWx1ZQotewotICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUg
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25jbGlja0hhbmRsZXIgd2l0aE93bmVyOnNl
bGZdOwotfQotLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX3dlYWtP
bmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tIChKU1ZhbHVlICopb25jbGljawotewotICAgIHJl
dHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tICh2b2lkKWNsaWNrCi17Ci0gICAg
aWYgKCFtX29uY2xpY2tIYW5kbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKLX0KIEBlbmQKIAogQGNsYXNzIFRpbnlET01O
b2RlOwpAQCAtMjM4LDQ3ICsyMDcsNiBAQCAtICh2b2lkKXJlbW92ZUNoaWxkQXRJbmRleDooTlNV
SW50ZWdlcilpCiAKIEBlbmQKIAotQGludGVyZmFjZSBKU0NvbGxlY3Rpb24gOiBOU09iamVjdAot
LSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
Ci0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZGlj
dDsKLX0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9kaWN0ID0gW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNl
dFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIEpT
TWFuYWdlZFZhbHVlICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07
Ci0gICAgaWYgKG9sZE1hbmFnZWRWYWx1ZSkgewotICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9
IFtvbGRNYW5hZ2VkVmFsdWUgdmFsdWVdOwotICAgICAgICBpZiAob2xkVmFsdWUpCi0gICAgICAg
ICAgICBbb2xkVmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJl
bmNlOm9sZE1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgfQotICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgW19kaWN0IHNldE9i
amVjdDptYW5hZ2VkVmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KLS0gKEpTVmFsdWUgKil2YWx1ZUZv
cktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVl
ID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmICghbWFuYWdlZFZhbHVlKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKLX0KLUBl
bmQKLQogQHByb3RvY29sIEluaXRBIDxKU0V4cG9ydD4KIC0gKGlkKWluaXRXaXRoQTooaW50KWE7
CiAtIChpbnQpaW5pdGlhbGl6ZTsKQEAgLTUxMCw1NSArNDM4LDYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29s
bGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0
XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTQ29udGV4dCog
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgICAgIFRlc3RPYmpl
Y3QqIHJvb3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25l
cjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVl
OltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAi
aXNfaGFtIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6
QCJtZXNzYWdlIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpb
SlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlf
bnVtYmVyIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdOwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFs
dWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCJdOwotCi0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAg
ICAgIEpTVmFsdWUgKmlzSGFtID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJp
c19oYW0iXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm15TnVt
YmVyID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKLSAg
ICAgICAgICAgIEpTVmFsdWUgKmRlZmluaXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMg
dmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm5v
dFN1cmVJZlVuZGVmaW5lZCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90
X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBp
cyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYgW2lzSGFtIHRvQm9vbF0pOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAm
JiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVy
XSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0gPT0gNDIpOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJkZWZpbml0ZWx5X251bGwgaXMgbnVsbCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5l
ZCIsIFtub3RTdXJlSWZVbmRlZmluZWQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlz
IG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgIVtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAImRl
ZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAiZGVmaW5pdGVseV9udWxsIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lm
X3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNl
cG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKLSAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgIFRlc3RPYmplY3QgKnJvb3RP
YmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgSlNDb2xsZWN0aW9uICpj
b2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBKU01hbmFnZWRWYWx1
ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVl
OmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0
LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93
bmVyOm1lc3NhZ2VdOwotICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0Owog
ICAgICAgICBjb250ZXh0W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewpAQCAtOTc3
LDYwICs4NTYsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwotICAgICAgICBUZXh0WFlaICp0ZXN0WFlaID0gW1tUZXh0WFlaIGFsbG9j
XSBpbml0XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRl
eHRbQCJ0ZXN0WFlaIl0gPSB0ZXN0WFlaOwotCi0gICAgICAgICAgICBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAotICAgICAg
ICAgICAgICAgIHRlc3RYWVoub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAg
ICAgICAgIGRpZENsaWNrID0gdHJ1ZTsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRlc3RYWVoud2Vha09uY2xpY2sgPSBmdW5jdGlv
bigpIHsgXAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7IFwKLSAgICAgICAgICAg
ICAgICB9OyBcCi0gICAgICAgICAgICAiXTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwotICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRv
Qm9vbF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAib25jbGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8
fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkpOwotICAgICAgICB9Ci0KLQotICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAidGVzdFhZWi53ZWFrT25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1
bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8
IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAotICAgICAg
ICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaID0g
bnVsbDsgXAotICAgICAgICAgICAgIl07Ci0gICAgICAgIH0KLQotICAgICAgICBKU1N5bmNocm9u
b3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBbdGVzdFhZWiBj
bGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRs
ZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CiAgICAgICAgIFRlc3RPYmpl
Y3QgKnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKICAgICAgICAgSlNNYW5h
Z2VkVmFsdWUgKndlYWtWYWx1ZTsKQEAgLTEzMjYsNDIgKzExNTEsMTEgQEAgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSSgpCiAgICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRl
eHQ6Y29udGV4dF0gdG9EaWN0aW9uYXJ5XTsKICAgICAgICAgW1tKU1ZhbHVlIHZhbHVlV2l0aElu
dDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0FycmF5XTsKICAgICB9Ci0KLSAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFi
bGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9uCi0gICAgICAgIC8vIHNvIHRo
YXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBUZXN0T2JqZWN0
ICpyb290ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7Ci0gICAgICAgIH0KLSAg
ICAgICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qg
b25seSByZWFjaGFibGUgdmlhIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgKLSAgICAgICAgLy8g
dGhyb3VnaCB0aGUgb2JqZWN0IHdlIGFscmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xs
ZWN0aW9uLgotICAgICAgICBUZXN0T2JqZWN0ICpjaGlsZCA9IFtUZXN0T2JqZWN0IHRlc3RPYmpl
Y3RdOwotICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
OmNoaWxkIHdpdGhPd25lcjpyb290XTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdl
ZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtlcHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVz
Y2FuCi0gICAgICAgIC8vIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIEpTTWFu
YWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBuaWw7Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqanNPYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOwotICAgICAgICAgICAgbWFuYWdlZEpT
T2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07
Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
Om1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hpbGRdOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQgc2hvdWxkIHJlc2NhbiB0aGUgbmV3
IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNTeW5jaHJvbm91
c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbWFuYWdlZCBKU1ZhbHVlIGlzIHN0
aWxsIGFsaXZlLgotICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRvZXNuJ3Qg
cmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVlXSAhPSBu
aWwpOwotICAgIH0KLQorICAgIAogICAgIGN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
KCk7CiAgICAgcnVuRGF0ZVRlc3RzKCk7CiAgICAgcnVuSlNFeHBvcnRUZXN0cygpOworICAgIHJ1
bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOwogfQogCiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY3
NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhc3QuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElEYXRhLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNjcmlwdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHRDb3JlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjc2ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEzNzYsNiArMTM3Niw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FzdC5oIj4KICAgICAgIDxG
aWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcQVBJRGF0YS5oIj4KKyAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNjcmlwdC5o
Ij4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE2NTYsNiArMTY1Niw3IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEg
LyogQVBJRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3Rh
dGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQw
MEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKQEAgLTE2NjUsNiArMTY2Niw3IEBA
CiAJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE4RkYxNkZFNEI3RDAwMTU3
QkZEIC8qIEhhbmRsZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4
MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovOyB9OwogCQlD
Mjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8q
IERhdGVUZXN0cy5tbSAqLzsgfTsKKwkJQzI5MzJBNTUxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9y
eU1hbmFnZW1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVz
dHMubW0gKi87IH07CiAJCUMyOTgxRkQ4MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNl
cy5jcHAgKi87IH07CiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjk4
MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGREExN0JBRkY0
NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLzsgfTsKQEAgLTMyNDIs
NiArMzI0NCw3IEBACiAJCUMyMjM5RDE2MTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1RocmVhZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2xvdFZpc2l0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ4RjY4QzE5
MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYx
Q0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5h
Z2VkVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01h
bmFnZWRWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNTIsNiArMzI1
NSw4IEBACiAJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlQmxvY2tJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODhCMkRDMThBNTREM0UwMDdCRTQwQiAv
KiBEYXRlVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0ZVRlc3Rz
Lmg7IHBhdGggPSBBUEkvdGVzdHMvRGF0ZVRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEYXRlVGVzdHMubW07IHBhdGggPSBBUEkv
dGVzdHMvRGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjkzMkE1
MzE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBwYXRoID0gQVBJ
L3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVtb3J5TWFuYWdlbWVu
dFRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERG
R0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2ly
ZWRXZWFrUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgx
RkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHBh
dGggPSBkZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJy
aWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVk
V3JpdGVCYXJyaWVycy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5OCw2ICszNzAzLDggQEAKIAkJCQkx
NEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2
N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAy
QjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCisJCQkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlC
IC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oICovLAorCQkJCUMyOTMyQTU0MTkwNUI1RTcwMEU3
QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IHRl
c3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM5OTIsNiArMzk5OSw3IEBACiAJ
CQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJ
CQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1
REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCisJCQkJ
QzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU0ODMsNiArNTQ5MSw3IEBA
CiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9y
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBB
UElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyog
R0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVE
MDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNjc4MSw2ICs2
NzkwLDcgQEAKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBp
LmMgaW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFw
aS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMyOTMyQTU1MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5k
b20uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElEYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUxMCw2ICs1MTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVz
KCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBBUElE
YXRhIGFwaURhdGE7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29w
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229941</attachid>
            <date>2014-04-22 19:08:07 -0700</date>
            <delta_ts>2014-04-22 19:11:11 -0700</delta_ts>
            <desc>that one day</desc>
            <filename>bug-131691-20140422190747.patch</filename>
            <type>text/plain</type>
            <size>49850</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3Njg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTA0LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBTdXBwb3J0IFB5dGhvbiAyLjcgaW4gQ3lnd2luCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEpTQ19BUElEYXRhX2gKKyNkZWZpbmUgSlNDX0FQSURhdGFfaAor
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisK
K3N0cnVjdCBBUElEYXRhIHsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBlUmVmPiBleHRlcm5hbE9iamVj
dEdyYXBoOworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4dGVybmFsUmVtZW1iZXJlZFNldDsK
K307CisKKyNlbHNlCisKK3N0cnVjdCBBUElEYXRhIHsgfTsKKworI2VuZGlmIC8vIEpTQ19PQkpD
X0FQSV9FTkFCTEVECisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX0FQSURh
dGFfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGlu
ZS5tbQkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Niw4ICs4Niw2IEBAICsgKEpTVmly
dHVhbE1hY2hpbmUgKil3cmFwcGVyRm9ySlNDb250ZXgKIEBpbXBsZW1lbnRhdGlvbiBKU1ZpcnR1
YWxNYWNoaW5lIHsKICAgICBKU0NvbnRleHRHcm91cFJlZiBtX2dyb3VwOwogICAgIE5TTWFwVGFi
bGUgKm1fY29udGV4dENhY2hlOwotICAgIE5TTWFwVGFibGUgKm1fZXh0ZXJuYWxPYmplY3RHcmFw
aDsKLSAgICBOU01hcFRhYmxlICptX2V4dGVybmFsUmVtZW1iZXJlZFNldDsKIH0KIAogLSAoaW5z
dGFuY2V0eXBlKWluaXQKQEAgLTExMCwxMyArMTA4LDIyIEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbnRleHRHcm91cFJlZjoKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGtleU9w
dGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPcGFxdWVQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHZhbHVl
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eTsKICAgICBtX2NvbnRleHRDYWNoZSA9IFtbTlNNYXBUYWJsZSBh
bGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOmtleU9wdGlvbnMgdmFsdWVPcHRpb25zOnZhbHVlT3B0
aW9ucyBjYXBhY2l0eTowXTsKLSAgICAKLSAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdl
YWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVu
Y3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7Ci0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBz
dHJvbmdJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50
ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsT2JqZWN0R3JhcGgg
PSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZh
bHVlT3B0aW9uczpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF07CiAKLSAgICBOU1BvaW50ZXJG
dW5jdGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVl
TWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwotICAgIG1fZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlv
bnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF07
CisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIodm0pOworICAgIGlmICghdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoKSB7
CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0aW9ucyA9IE5TUG9p
bnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmplY3RQZXJzb25h
bGl0eTsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBzdHJvbmdJRE9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNTdHJvbmdNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNPYmpl
Y3RQZXJzb25hbGl0eTsKKyAgICAgICAgdm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoID0g
YWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRp
b25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOnN0cm9uZ0lET3B0aW9ucyBjYXBhY2l0eTow
XSk7CisgICAgfQorCisgICAgaWYgKCF2bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCkg
eworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMg
PSBOU1BvaW50ZXJGdW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRl
Z2VyUGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0
ID0gYWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhLZXlP
cHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFjaXR5
OjBdKTsKKyAgICB9CiAgICAKICAgICBbSlNWTVdyYXBwZXJDYWNoZSBhZGRXcmFwcGVyOnNlbGYg
Zm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApAQCAtMTI3LDggKzEzNCw2IEBAIC0gKHZv
aWQpZGVhbGxvYwogewogICAgIEpTQ29udGV4dEdyb3VwUmVsZWFzZShtX2dyb3VwKTsKICAgICBb
bV9jb250ZXh0Q2FjaGUgcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxPYmplY3RHcmFwaCByZWxl
YXNlXTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVsZWFzZV07CiAgICAgW3N1cGVy
IGRlYWxsb2NdOwogfQogCkBAIC0xNTksNyArMTY0LDggQEAgLSAoYm9vbClpc09sZEV4dGVybmFs
T2JqZWN0OihpZClvYmplY3QKIC0gKHZvaWQpYWRkRXh0ZXJuYWxSZW1lbWJlcmVkT2JqZWN0Oihp
ZClvYmplY3QKIHsKICAgICBBU1NFUlQoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3Rd
KTsKLSAgICBbbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKKyAgICBOU01hcFRhYmxlICpleHRlcm5h
bFJlbWVtYmVyZWRTZXQgPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHRvSlMobV9ncm91cCkt
PmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKTsKKyAgICBbZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5
Om9iamVjdF07CiB9CiAKIC0gKHZvaWQpYWRkTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWN0IHdp
dGhPd25lcjooaWQpb3duZXIKQEAgLTE3MiwxOCArMTc4LDIwIEBAIC0gKHZvaWQpYWRkTWFuYWdl
ZFJlZmVyZW5jZTooaWQpb2JqZWN0IHcKICAgICAKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9K
UyhtX2dyb3VwKSk7CisKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOyAKKyAgICBK
U0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogICAgIGlmIChbc2VsZiBpc09sZEV4dGVybmFs
T2JqZWN0Om93bmVyXSAmJiAhW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvYmplY3RdKQogICAg
ICAgICBbc2VsZiBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6b3duZXJdOwotIAotICAgIE5T
TWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9y
S2V5Om93bmVyXTsKKworICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0
aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQo
KSk7CisgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW2V4dGVybmFsT2JqZWN0R3JhcGgg
b2JqZWN0Rm9yS2V5Om93bmVyXTsKICAgICBpZiAoIW93bmVkT2JqZWN0cykgewogICAgICAgICBO
U1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlv
bnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAg
ICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgaW50ZWdlck9wdGlvbnMgPSBOU1BvaW50ZXJG
dW5jdGlvbnNPcGFxdWVNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNJbnRlZ2VyUGVyc29uYWxp
dHk7CiAgICAgICAgIG93bmVkT2JqZWN0cyA9IFtbTlNNYXBUYWJsZSBhbGxvY10gaW5pdFdpdGhL
ZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVnZXJPcHRpb25zIGNhcGFj
aXR5OjFdOwogCi0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVk
T2JqZWN0cyBmb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCBzZXRP
YmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07CiAgICAgICAgIFtvd25lZE9iamVjdHMg
cmVsZWFzZV07CiAgICAgfQogCkBAIC0yMDIsOSArMjEwLDExIEBAIC0gKHZvaWQpcmVtb3ZlTWFu
YWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2dy
b3VwKSk7Ci0gICAgCi0gICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3RzID0gW21fZXh0ZXJuYWxP
YmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMo
bV9ncm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKworICAgIE5TTWFw
VGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZt
LmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7IAorICAgIE5TTWFwVGFibGUgKm93
bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAg
ICAgaWYgKCFvd25lZE9iamVjdHMpCiAgICAgICAgIHJldHVybjsKICAgIApAQCAtMjE4LDggKzIy
OCw4IEBAIC0gKHZvaWQpcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTooaWQpb2JqZWMKICAgICAgICAg
TlNNYXBSZW1vdmUob3duZWRPYmplY3RzLCBvYmplY3QpOwogCiAgICAgaWYgKCFbb3duZWRPYmpl
Y3RzIGNvdW50XSkgewotICAgICAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9iamVj
dEZvcktleTpvd25lcl07Ci0gICAgICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbZXh0ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVP
YmplY3RGb3JLZXk6b3duZXJdOworICAgICAgICBbc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2
bS5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSkgcmVtb3ZlT2JqZWN0Rm9yS2V5
Om93bmVyXTsKICAgICB9CiB9CiAKQEAgLTI1MCwyNSArMjYwLDEyIEBAIC0gKHZvaWQpYWRkQ29u
dGV4dDooSlNDb250ZXh0ICopd3JhcHBlciAKICAgICBOU01hcEluc2VydChtX2NvbnRleHRDYWNo
ZSwgZ2xvYmFsQ29udGV4dCwgd3JhcHBlcik7CiB9CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoCi17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxPYmplY3RHcmFwaDsKLX0KLQot
LSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsUmVtZW1iZXJlZFNldAotewotICAgIHJldHVybiBtX2V4
dGVybmFsUmVtZW1iZXJlZFNldDsKLX0KLQogQGVuZAogCiB2b2lkIHNjYW5FeHRlcm5hbE9iamVj
dEdyYXBoKEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yLCB2b2lkKiByb290
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2
aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFt2
aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKICAgICAgICAgVmVjdG9yPHZvaWQqPiBzdGFj
azsKICAgICAgICAgc3RhY2suYXBwZW5kKHJvb3QpOwogICAgICAgICB3aGlsZSAoIXN0YWNrLmlz
RW1wdHkoKSkgewpAQCAtMjg4LDExICsyODUsOCBAQCB2b2lkIHNjYW5FeHRlcm5hbE9iamVjdEdy
YXBoKEpTQzo6Vk0mIHZtCiB2b2lkIHNjYW5FeHRlcm5hbFJlbWVtYmVyZWRTZXQoSlNDOjpWTSYg
dm0sIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIEpTVmlydHVhbE1hY2hpbmUgKnZpcnR1YWxNYWNoaW5lID0gW0pTVk1XcmFwcGVy
Q2FjaGUgd3JhcHBlckZvckpTQ29udGV4dEdyb3VwUmVmOnRvUmVmKCZ2bSldOwotICAgICAgICBp
ZiAoIXZpcnR1YWxNYWNoaW5lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBOU01hcFRh
YmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsT2JqZWN0
R3JhcGhdOwotICAgICAgICBOU01hcFRhYmxlICpleHRlcm5hbFJlbWVtYmVyZWRTZXQgPSBbdmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XTsKKyAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJu
YWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4
dGVybmFsUmVtZW1iZXJlZFNldC5nZXQoKSk7CiAgICAgICAgIGZvciAoaWQga2V5IGluIGV4dGVy
bmFsUmVtZW1iZXJlZFNldCkgewogICAgICAgICAgICAgTlNNYXBUYWJsZSAqb3duZWRPYmplY3Rz
ID0gW2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5OmtleV07CiAgICAgICAgICAgICBm
b3IgKGlkIG93bmVkT2JqZWN0IGluIG93bmVkT2JqZWN0cykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5lSW50ZXJuYWwuaAkocmV2aXNp
b24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZpcnR1YWxNYWNoaW5l
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCArNDUsNiBAQCBKU0NvbnRleHRHcm91
cFJlZiBnZXRHcm91cEZyb21WaXJ0dWFsTWFjCiAtIChKU0NvbnRleHQgKiljb250ZXh0Rm9yR2xv
YmFsQ29udGV4dFJlZjooSlNHbG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAtICh2b2lk
KWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgZm9yR2xvYmFsQ29udGV4dFJlZjooSlNH
bG9iYWxDb250ZXh0UmVmKWdsb2JhbENvbnRleHQ7CiAKLS0gKE5TTWFwVGFibGUgKilleHRlcm5h
bE9iamVjdEdyYXBoOwotCiBAZW5kCiAjZW5kaWYgLy8gZGVmaW5lZChfX09CSkNfXykKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuaD4KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK3ZvaWQgcnVuTWVtb3J5TWFuYWdl
bWVudFRlc3RzKCk7CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oIgorCisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKworZXh0ZXJuICJDIiB2b2lkIGNoZWNrUmVzdWx0KE5T
U3RyaW5nICpkZXNjcmlwdGlvbiwgYm9vbCBwYXNzZWQpOworCitleHRlcm4gIkMiIHZvaWQgSlNT
eW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJlZik7CitleHRl
cm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4
dFJlZik7CisKK0BpbnRlcmZhY2UgT3BhcXVlT2JqQ09iamVjdCA6IE5TT2JqZWN0CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBPcGFxdWVPYmpDT2JqZWN0CisrIChPcGFxdWVPYmpDT2JqZWN0ICop
b3BhcXVlT2JqZWN0Cit7CisgICAgcmV0dXJuIFtbc2VsZiBhbGxvY10gaW5pdF07Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisK
K0BpbnRlcmZhY2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKKy0gKHZvaWQpc2V0VmFsdWU6KEpT
VmFsdWUgKil2YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OworLSAoSlNWYWx1ZSAqKXZhbHVl
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEpTQ29sbGVj
dGlvbiB7CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Cit9CistIChpZClpbml0Cit7
CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIHJldHVy
biBuaWw7CisgICAgCisgICAgX2RpY3QgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldFZhbHVlOihKU1Zh
bHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQoreworICAgIEpTTWFuYWdlZFZhbHVl
ICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgaWYgKG9s
ZE1hbmFnZWRWYWx1ZSkgeworICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9IFtvbGRNYW5hZ2Vk
VmFsdWUgdmFsdWVdOworICAgICAgICBpZiAob2xkVmFsdWUpCisgICAgICAgICAgICBbb2xkVmFs
dWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJlbmNlOm9sZE1hbmFn
ZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgfQorICAgIEpTTWFuYWdlZFZhbHVlICptYW5h
Z2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsK
KyAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1h
bmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07CisgICAgW19kaWN0IHNldE9iamVjdDptYW5hZ2Vk
VmFsdWUgZm9yS2V5OmtleV07Cit9CisKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJp
bmcgKilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW19kaWN0IG9i
amVjdEZvcktleTprZXldOworICAgIGlmICghbWFuYWdlZFZhbHVlKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKK30KK0BlbmQKKworQHByb3Rv
Y29sIENsaWNrYWJsZUV4cG9ydHMgPEpTRXhwb3J0PgorQHByb3BlcnR5IChhc3NpZ24pIEpTVmFs
dWUgKm9uY2xpY2s7CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CitA
ZW5kCisKK0BpbnRlcmZhY2UgQ2xpY2thYmxlIDogTlNPYmplY3Q8Q2xpY2thYmxlRXhwb3J0cz4K
Ky0gKHZvaWQpY2xpY2s7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBDbGlja2FibGUgeworICAg
IEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsKKyAgICBKU01hbmFnZWRWYWx1
ZSAqbV9vbmNsaWNrSGFuZGxlcjsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAq
KXZhbHVlCit7CisgICAgbV93ZWFrT25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFu
YWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKK30KKy0gKHZvaWQpc2V0T25jbGljazooSlNWYWx1
ZSAqKXZhbHVlCit7CisgICAgbV9vbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1ZS5jb250ZXh0LnZpcnR1YWxNYWNo
aW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bV9vbmNsaWNrSGFuZGxlciB3aXRoT3duZXI6c2VsZl07
Cit9CistIChKU1ZhbHVlICopd2Vha09uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fd2Vha09uY2xp
Y2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKEpTVmFsdWUgKilvbmNsaWNrCit7CisgICAgcmV0dXJu
IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKK30KKy0gKHZvaWQpY2xpY2sKK3sKKyAgICBpZiAo
IW1fb25jbGlja0hhbmRsZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKKyAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKK30KK0BlbmQKKworQGludGVyZmFjZSBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMgOiBOU09iamVjdAorKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlU
ZXN0OworKyAodm9pZClhdm9pZE1vZGlmeWluZ05TTWFwVGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3Q7
CisrICh2b2lkKWJhZ09mSlNNYW5hZ2VkVmFsdWVzVGVzdDsKKysgKHZvaWQpc2NhbkV4dGVybmFs
T2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3Q7CisrICh2b2lkKWRpc2FwcGVhcmlu
Z1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3Q7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMKKysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdAoreworICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29u
dGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIENsaWNrYWJsZSAqY2xpY2thYmxlID0gW1tDbGlj
a2FibGUgYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CisgICAgICAgICAgICBjb250ZXh0W0AiY2xpY2thYmxlIl0gPSBjbGlja2FibGU7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgY2xpY2thYmxlLm9u
Y2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gdHJ1ZTsg
XAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgY2xpY2thYmxlLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJ2Zvbyc7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAgICAgICAgICAiXTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
ICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtj
b250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdn
aW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS5vbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0g
fHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0
ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjbGlja2FibGUud2Vha09uY2xpY2siXTsKKyAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBHQyIs
IFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwK
KyAgICAgICAgICAgICAgICBjbGlja2FibGUgPSBudWxsOyBcCisgICAgICAgICAgICAiXTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY2xpY2thYmxlIGNsaWNrXTsKKyAg
ICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlk
Q2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNr
IGRvZXNuJ3QgZmlyZSIsICFbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgfQorfQor
CisrICh2b2lkKWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdAorewor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pT
Q29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbSlNWYWx1
ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICBP
cGFxdWVPYmpDT2JqZWN0ICpyb290T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2Jq
ZWN0XTsKKyAgICAgICAgSlNDb2xsZWN0aW9uICpjb2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24g
YWxsb2NdIGluaXRdOworICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rp
b24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4
dF07CisgICAgICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5h
Z2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290
T2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRS
ZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93bmVyOm1lc3NhZ2VdOworICAgICAgICAgICAg
SlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICB9CisgICAgfQorfQorCisrICh2b2lkKWJhZ09mSlNNYW5h
Z2VkVmFsdWVzVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0NvbGxl
Y3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMgPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07
CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIC8vIENy
ZWF0ZSBhIG5ldyBKU0NvbnRleHQgYW5kIGdpdmUgaXQgYSByb290IG9iamVjdCB0aGF0IHdpbGwg
b3duIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFsdWVzLgorICAgICAgICAgICAgSlNDb250ZXh0KiBj
b250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgT3BhcXVlT2Jq
Q09iamVjdCAqcm9vdE9iamVjdCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07Cisg
ICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgLy8gQWRkIGEgYnVuY2ggb2YgcHJvcGVydGllcyB0byB0aGUgYmFnIG9mIEpT
TWFuYWdlZFZhbHVlcy4KKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1h
bmFnZWRSZWZlcmVuY2U6bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07
CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1
ZVdpdGhCb29sOnRydWUgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0OkAiaGVsbG8hIiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwor
ICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVX
aXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOworICAg
ICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRo
TnVsbEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKKyAgICAg
ICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVu
ZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQi
XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgICAgICAgICAg
CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgcHJvcGVydGllcyBhcmUgc3RpbGwgcHJlc2VudCBh
ZnRlciBhIGZ1bGwgY29sbGVjdGlvbi4KKyAgICAgICAgICAgIEpTVmFsdWUgKmlzSGFtID0gW215
UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIEpT
VmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3Nh
Z2UiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm15TnVtYmVyID0gW215UHJpdmF0ZVByb3BlcnRp
ZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmRlZmlu
aXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5
X251bGwiXTsKKyAgICAgICAgICAgIEpTVmFsdWUgKm5vdFN1cmVJZlVuZGVmaW5lZCA9IFtteVBy
aXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVh
bl0gJiYgW2lzSGFtIHRvQm9vbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdl
IGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0
cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibXlf
bnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVyXSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0g
PT0gNDIpOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbnVs
bCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
bm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIsIFtub3RTdXJlSWZVbmRlZmluZWQg
aXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTm93IHRoYXQg
dGhlIEpTQ29udGV4dCBoYXMgZGlzYXBwZWFyZWQsIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIEpTTWFu
YWdlZFZhbHVlcyBoYXZlIGJlZW4gY2xlYXJlZC4KKyAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl0p
OworICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9w
ZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJt
eV9udW1iZXIgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlf
bnVtYmVyIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBuaWwi
LCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIG5pbCIsICFb
bXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJd
KTsKKyAgICB9Cit9CisKKworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBm
b3JjZSBhbiBFZGVuQ29sbGVjdGlvbgorICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4
dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtP
cGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgIH0KKyAgICAg
ICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFs
Q29udGV4dFJlZl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IE9iai1DIG9i
amVjdCBvbmx5IHJlYWNoYWJsZSB2aWEgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaAorICAgICAg
ICAvLyB0aHJvdWdoIHRoZSBvYmplY3Qgd2UgYWxyZWFkeSBzY2FubmVkIGR1cmluZyB0aGUgRWRl
bkNvbGxlY3Rpb24uCisgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKmNoaWxkID0gW09wYXF1ZU9i
akNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUg
YWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgIAorICAg
ICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdlZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtl
cHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVzY2FuCisgICAgICAgIC8vIHRoZSBleHRlcm5hbCBv
YmplY3QgZ3JhcGguCisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBu
aWw7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNWYWx1ZSAqanNP
YmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRl
eHRdOworICAgICAgICAgICAgbWFuYWdlZEpTT2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFn
ZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hp
bGRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBGb3JjZSBhbm90aGVyIEVkZW5D
b2xsZWN0aW9uLiBJdCBzaG91bGQgcmVzY2FuIHRoZSBuZXcgcGFydCBvZiB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgorICAgICAgICBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICAvLyBD
aGVjayB0aGF0IHRoZSBtYW5hZ2VkIEpTVmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAgIGNo
ZWNrUmVzdWx0KEAiRWRlbkNvbGxlY3Rpb24gZG9lc24ndCByZWNsYWltIG5ldyBtYW5hZ2VkIHZh
bHVlcyIsIFttYW5hZ2VkSlNPYmplY3QgdmFsdWVdICE9IG5pbCk7CisgICAgfQorfQorCisrICh2
b2lkKWRpc2FwcGVhcmluZ1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRlc3QKK3sKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBuaWw7CisgICAg
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0gMDsKKyAgICAgICAgSlNNYW5hZ2Vk
VmFsdWUgKm1hbmFnZWRDaGlsZCA9IG5pbDsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07
CisgICAgICAgICAgICBjb250ZXh0UmVmID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsK
KyAgICAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJldGFpbihjb250ZXh0UmVmKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdCA9IFtPcGFxdWVPYmpDT2Jq
ZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFx
dWVPYmplY3RdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdl
ZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07CisgICAgICAgICAgICBKU1ZhbHVlICpq
c0NoaWxkID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNoaWxkIGluQ29udGV4dDpjb250ZXh0
XTsKKyAgICAgICAgICAgIGpzQ2hpbGRbQCJteVNwZWNpYWxQcm9wZXJ0eSJdID0gQCJmb28iOwor
ICAgICAgICAgICAgbWFuYWdlZENoaWxkID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTpqc0NoaWxkXTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFk
ZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZENoaWxkIHdpdGhPd25lcjpjaGlsZF07CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVn
Z2luZyhjb250ZXh0UmVmKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewor
ICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFttYW5hZ2VkQ2hpbGQgdmFsdWVdOworICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJjaGlsZCBoYXMgbXlTcGVjaWFsUHJvcGVydHkgZXZlbiB3
aGVuIEpTVmlydHVhbE1hY2hpbmUgZGlzYXBwZWFycyIsCisgICAgICAgICAgICAgICAgW1tqc0No
aWxkW0AibXlTcGVjaWFsUHJvcGVydHkiXSB0b1N0cmluZ10gaXNFcXVhbFRvU3RyaW5nOkAiZm9v
Il0pOworICAgICAgICAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShjb250ZXh0UmVmKTsKKyAg
ICAgICAgfQorICAgIH0KK30KK0BlbmQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMo
KQoreworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdF07CisgICAgICAg
IFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0XTsKKyAgICAg
ICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaER1cmluZ0Vk
ZW5Db2xsZWN0aW9uVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgZGlzYXBw
ZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF07CisgICAgfQorfQorCisjZW5kaWYgLy8g
SlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rl
c3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE2NzY4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
I2ltcG9ydCAiQ3VycmVudFRoaXNJbnNpZGVCbG9ja0dldHRlclRlc3QuaCIKICNpbXBvcnQgIkRh
dGVUZXN0cy5oIgogI2ltcG9ydCAiSlNFeHBvcnRUZXN0cy5oIgorI2ltcG9ydCAiTWVtb3J5TWFu
YWdlbWVudFRlc3RzLmgiCiAKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3VzR2FyYmFnZUNv
bGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKIGV4dGVybiAiQyIgdm9pZCBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKQEAgLTExNyw4ICsx
MTgsNiBAQCBib29sIHRlc3RYWVpUZXN0ZWQgPSBmYWxzZTsKIC0gKGlkKWluaXRXaXRoU3RyaW5n
OihOU1N0cmluZyopc3RyaW5nOwogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IChyZWFkb25s
eSkgaW50IHk7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGljazsKLUBwcm9wZXJ0
eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcg
KiltZXNzYWdlOwogQGVuZAogCkBAIC0xMjYsMTMgKzEyNSw5IEBAIEBpbnRlcmZhY2UgVGV4dFhZ
WiA6IE5TT2JqZWN0IDxUZXh0WFlaPgogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IGludCB5
OwogQHByb3BlcnR5IGludCB6OwotLSAodm9pZCljbGljazsKIEBlbmQKIAotQGltcGxlbWVudGF0
aW9uIFRleHRYWVogewotICAgIEpTTWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsK
LSAgICBKU01hbmFnZWRWYWx1ZSAqbV9vbmNsaWNrSGFuZGxlcjsKLX0KK0BpbXBsZW1lbnRhdGlv
biBUZXh0WFlaCiBAc3ludGhlc2l6ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7
CkBAIC0xNTAsMzIgKzE0NSw2IEBAIC0gKHZvaWQpdGVzdDooTlNTdHJpbmcgKiltZXNzYWdlCiB7
CiAgICAgdGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9PSAx
MyAmIHkgPT0gNCAmJiB6ID09IDU7CiB9Ci0tICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVl
ICopdmFsdWUKLXsKLSAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBt
YW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotfQotCi0tICh2b2lkKXNldE9uY2xpY2s6KEpT
VmFsdWUgKil2YWx1ZQotewotICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUg
bWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFs
TWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25jbGlja0hhbmRsZXIgd2l0aE93bmVyOnNl
bGZdOwotfQotLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX3dlYWtP
bmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tIChKU1ZhbHVlICopb25jbGljawotewotICAgIHJl
dHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tICh2b2lkKWNsaWNrCi17Ci0gICAg
aWYgKCFtX29uY2xpY2tIYW5kbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU1ZhbHVlICpm
dW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2FsbFdp
dGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKLX0KIEBlbmQKIAogQGNsYXNzIFRpbnlET01O
b2RlOwpAQCAtMjM4LDQ3ICsyMDcsNiBAQCAtICh2b2lkKXJlbW92ZUNoaWxkQXRJbmRleDooTlNV
SW50ZWdlcilpCiAKIEBlbmQKIAotQGludGVyZmFjZSBKU0NvbGxlY3Rpb24gOiBOU09iamVjdAot
LSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7
Ci0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5OwotQGVuZAotCi1AaW1w
bGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZGlj
dDsKLX0KLS0gKGlkKWluaXQKLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICgh
c2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9kaWN0ID0gW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNl
dFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmluZyAqKWtleQotewotICAgIEpT
TWFuYWdlZFZhbHVlICpvbGRNYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5OmtleV07
Ci0gICAgaWYgKG9sZE1hbmFnZWRWYWx1ZSkgewotICAgICAgICBKU1ZhbHVlKiBvbGRWYWx1ZSA9
IFtvbGRNYW5hZ2VkVmFsdWUgdmFsdWVdOwotICAgICAgICBpZiAob2xkVmFsdWUpCi0gICAgICAg
ICAgICBbb2xkVmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSByZW1vdmVNYW5hZ2VkUmVmZXJl
bmNlOm9sZE1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgfQotICAgIEpTTWFuYWdl
ZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZh
bHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOm1hbmFnZWRWYWx1ZSB3aXRoT3duZXI6c2VsZl07Ci0gICAgW19kaWN0IHNldE9i
amVjdDptYW5hZ2VkVmFsdWUgZm9yS2V5OmtleV07Ci19Ci0KLS0gKEpTVmFsdWUgKil2YWx1ZUZv
cktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVl
ID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmICghbWFuYWdlZFZhbHVlKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbbWFuYWdlZFZhbHVlIHZhbHVlXTsKLX0KLUBl
bmQKLQogQHByb3RvY29sIEluaXRBIDxKU0V4cG9ydD4KIC0gKGlkKWluaXRXaXRoQTooaW50KWE7
CiAtIChpbnQpaW5pdGlhbGl6ZTsKQEAgLTUxMCw1NSArNDM4LDYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29s
bGVjdGlvbiogbXlQcml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0
XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTQ29udGV4dCog
Y29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgICAgIFRlc3RPYmpl
Y3QqIHJvb3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgICAgIGNv
bnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25l
cjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVl
OltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAi
aXNfaGFtIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6
QCJtZXNzYWdlIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpb
SlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlf
bnVtYmVyIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNW
YWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlf
bnVsbCJdOwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFs
dWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJl
X2lmX3VuZGVmaW5lZCJdOwotCi0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxl
Y3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAg
ICAgIEpTVmFsdWUgKmlzSGFtID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJp
c19oYW0iXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm15TnVt
YmVyID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKLSAg
ICAgICAgICAgIEpTVmFsdWUgKmRlZmluaXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMg
dmFsdWVGb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm5v
dFN1cmVJZlVuZGVmaW5lZCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90
X3N1cmVfaWZfdW5kZWZpbmVkIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBp
cyB0cnVlIiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYgW2lzSGFtIHRvQm9vbF0pOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAm
JiBbQCJoZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVy
XSAmJiBbbXlOdW1iZXIgdG9JbnQzMl0gPT0gNDIpOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQo
QCJkZWZpbml0ZWx5X251bGwgaXMgbnVsbCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKLSAg
ICAgICAgICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5l
ZCIsIFtub3RTdXJlSWZVbmRlZmluZWQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlz
IG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7Ci0g
ICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgIVtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAImRl
ZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAiZGVmaW5pdGVseV9udWxsIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lm
X3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNl
cG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKLSAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVj
dDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgIFRlc3RPYmplY3QgKnJvb3RP
YmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgSlNDb2xsZWN0aW9uICpj
b2xsZWN0aW9uID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotICAgICAgICBjb250ZXh0
W0Aicm9vdCJdID0gcm9vdE9iamVjdDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAg
ICAgICAgICBKU1ZhbHVlICpqc0NvbGxlY3Rpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6
Y29sbGVjdGlvbiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBKU01hbmFnZWRWYWx1
ZSAqd2Vha0NvbGxlY3Rpb24gPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVl
OmpzQ29sbGVjdGlvbiBhbmRPd25lcjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0
LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93
bmVyOm1lc3NhZ2VdOwotICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9y
RGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0Owog
ICAgICAgICBjb250ZXh0W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewpAQCAtOTc3
LDYwICs4NTYsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAgICB9CiAKICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOwotICAgICAgICBUZXh0WFlaICp0ZXN0WFlaID0gW1tUZXh0WFlaIGFsbG9j
XSBpbml0XTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRl
eHRbQCJ0ZXN0WFlaIl0gPSB0ZXN0WFlaOwotCi0gICAgICAgICAgICBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAIiBcCi0gICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAotICAgICAg
ICAgICAgICAgIHRlc3RYWVoub25jbGljayA9IGZ1bmN0aW9uKCkgeyBcCi0gICAgICAgICAgICAg
ICAgICAgIGRpZENsaWNrID0gdHJ1ZTsgXAotICAgICAgICAgICAgICAgIH07IFwKLSAgICAgICAg
ICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRlc3RYWVoud2Vha09uY2xpY2sgPSBmdW5jdGlv
bigpIHsgXAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Zvbyc7IFwKLSAgICAgICAgICAg
ICAgICB9OyBcCi0gICAgICAgICAgICAiXTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwotICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRv
Qm9vbF0pOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0
Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIEBh
dXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQg
ZXZhbHVhdGVTY3JpcHQ6QCJ0ZXN0WFlaLm9uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAib25jbGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8
fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSkpOwotICAgICAgICB9Ci0KLQotICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAidGVzdFhZWi53ZWFrT25jbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1
bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBpc051bGxdIHx8
IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAotICAgICAg
ICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaID0g
bnVsbDsgXAotICAgICAgICAgICAgIl07Ci0gICAgICAgIH0KLQotICAgICAgICBKU1N5bmNocm9u
b3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBbdGVzdFhZWiBj
bGlja107Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAImRpZENsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRs
ZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CiAgICAgICAgIFRlc3RPYmpl
Y3QgKnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKICAgICAgICAgSlNNYW5h
Z2VkVmFsdWUgKndlYWtWYWx1ZTsKQEAgLTEzMjYsNDIgKzExNTEsMTEgQEAgdm9pZCB0ZXN0T2Jq
ZWN0aXZlQ0FQSSgpCiAgICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRl
eHQ6Y29udGV4dF0gdG9EaWN0aW9uYXJ5XTsKICAgICAgICAgW1tKU1ZhbHVlIHZhbHVlV2l0aElu
dDMyOjQyIGluQ29udGV4dDpjb250ZXh0XSB0b0FycmF5XTsKICAgICB9Ci0KLSAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxs
b2NdIGluaXRdOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFi
bGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVkZW5Db2xsZWN0aW9uCi0gICAgICAgIC8vIHNvIHRo
YXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgotICAgICAgICBUZXN0T2JqZWN0
ICpyb290ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7Ci0gICAgICAgIH0KLSAg
ICAgICAgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qg
b25seSByZWFjaGFibGUgdmlhIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGgKLSAgICAgICAgLy8g
dGhyb3VnaCB0aGUgb2JqZWN0IHdlIGFscmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xs
ZWN0aW9uLgotICAgICAgICBUZXN0T2JqZWN0ICpjaGlsZCA9IFtUZXN0T2JqZWN0IHRlc3RPYmpl
Y3RdOwotICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
OmNoaWxkIHdpdGhPd25lcjpyb290XTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBuZXcgbWFuYWdl
ZCBKU1ZhbHVlIHRoYXQgd2lsbCBvbmx5IGJlIGtlcHQgYWxpdmUgaWYgd2UgcHJvcGVybHkgcmVz
Y2FuCi0gICAgICAgIC8vIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAgICAgIEpTTWFu
YWdlZFZhbHVlICptYW5hZ2VkSlNPYmplY3QgPSBuaWw7Ci0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqanNPYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhP
YmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRdOwotICAgICAgICAgICAgbWFuYWdlZEpT
T2JqZWN0ID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc09iamVjdF07
Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
Om1hbmFnZWRKU09iamVjdCB3aXRoT3duZXI6Y2hpbGRdOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQgc2hvdWxkIHJlc2NhbiB0aGUgbmV3
IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAgICAgICAgSlNTeW5jaHJvbm91
c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwot
ICAgICAgICAKLSAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbWFuYWdlZCBKU1ZhbHVlIGlzIHN0
aWxsIGFsaXZlLgotICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRvZXNuJ3Qg
cmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVlXSAhPSBu
aWwpOwotICAgIH0KLQorICAgIAogICAgIGN1cnJlbnRUaGlzSW5zaWRlQmxvY2tHZXR0ZXJUZXN0
KCk7CiAgICAgcnVuRGF0ZVRlc3RzKCk7CiAgICAgcnVuSlNFeHBvcnRUZXN0cygpOworICAgIHJ1
bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOwogfQogCiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNj
cmlwdENvcmUvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaD4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkocmV2aXNpb24gMTY3
NjgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAg
IDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tG
dW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhc3QuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxBUElEYXRhLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNjcmlwdC5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHRDb3JlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZp
bHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAxNjc2ODMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTEzNzYsNiArMTM3Niw5
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJQ2FzdC5oIj4KICAgICAgIDxG
aWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxBUElcQVBJRGF0YS5oIj4KKyAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNjcmlwdC5o
Ij4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNt
ZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTY3NjgzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDYgKzEyLDcgQEAgZWNobyBDb3B5aW5nIHB1YmxpYyBoZWFkZXJzLi4uDQogbWtk
aXIgIiVQdWJsaWNIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCiBmb3IgJSVmIGluICgNCiAgICAg
QVBJQ2FzdC5oDQorICAgIEFQSURhdGEuaA0KICAgICBBUElTaGltcy5oDQogICAgIEpTQmFzZS5o
DQogICAgIEpTQ2xhc3NSZWYuaA0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNjc2ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTY1Niw2ICsxNjU2
LDcgQEAKIAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RC
QUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi87IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcw
MERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlF
QjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsKKwkJQzI0OEY2OEUxOTA1RDczQzAwNzBBMkIx
IC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0RDMxRTIxNjFDRDY5NTAwMkFB
NERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGlj
cy5jcHAgKi87IH07CiAJCUMyNEQzMUUzMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGlj
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0RDMx
RTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI1RDcwOUIxNkRFOTlGNDAwRkNBNkJD
IC8qIEpTTWFuYWdlZFZhbHVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1t
ICovOyB9OwpAQCAtMTY2NSw2ICsxNjY2LDcgQEAKIAkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZE
IC8qIEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjgzMThGRjE2RkU0QjdEMDAxNTdCRkQgLyogSGFuZGxlQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjgzMTkwMjE2RkU1
MzNFMDAxNTdCRkQgLyogSGFuZGxlQmxvY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjgzMTkwMTE2RkU1MzNFMDAxNTdCRkQgLyogSGFu
ZGxlQmxvY2tJbmxpbmVzLmggKi87IH07CiAJCUMyODhCMkRFMThBNTREM0UwMDdCRTQwQiAvKiBE
YXRlVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjg4QjJERDE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tICovOyB9OworCQlDMjkz
MkE1NTE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5MzJBNTQxOTA1QjVFNzAw
RTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSAqLzsgfTsKIAkJQzI5ODFGRDgxN0JB
RUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjk4MUZENjE3QkFFRTRCMDBBM0JD
OTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCAqLzsgfTsKIAkJQzI5ODFGRDkxN0JB
RUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4
IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyOTgxRkRDMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdE
ZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjk4MUZEQTE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRl
QmFycmllcnMuY3BwICovOyB9OwpAQCAtMzI0Miw2ICszMjQ0LDcgQEAKIAkJQzIyMzlEMTYxNjI2
MkJERDAwNUFDNUZEIC8qIEdDVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjU0OTQyMTVG
N0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMyNDhGNjhDMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSURhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0
aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBTdGF0aXN0
aWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0RDMxRTExNjFDRDY5NTAw
MkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhlYXBTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUQ3
MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTTWFuYWdlZFZhbHVlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzI1Miw2ICszMjU1LDggQEAKIAkJQzI4MzE5MDExNkZFNTMzRTAw
MTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIYW5kbGVCbG9ja0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzI4OEIyREMxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBEYXRlVGVzdHMuaDsgcGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVz
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI4OEIyREQxOEE1NEQzRTAwN0JF
NDBCIC8qIERhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IERhdGVUZXN0cy5tbTsgcGF0aCA9IEFQSS90ZXN0cy9EYXRlVGVzdHMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTMyQTUzMTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlN
YW5hZ2VtZW50VGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTWVtb3J5
TWFuYWdlbWVudFRlc3RzLmg7IHBhdGggPSBBUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5
QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW07IHBhdGggPSBBUEkvdGVzdHMv
TWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
Mjk4MUZENjE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGRDcxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaDsgcGF0aCA9IGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGREExN0JBRkY0NDAw
QTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcDsgcGF0aCA9IGRm
Zy9ERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNjk4LDYgKzM3MDMsOCBAQAogCQkJCTE0RDg1Nzc0MEE0Njk2QzgwMDMyMTQ2QyAvKiB0
ZXN0YXBpLmpzICovLAogCQkJCTg2RDIyMjE5MTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1t
ICovLAogCQkJCTY1MTEyMkU1MTQwNDY5QkEwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwLmNwcCAqLywK
KwkJCQlDMjkzMkE1MzE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgg
Ki8sCisJCQkJQzI5MzJBNTQxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0
cy5tbSAqLywKIAkJCSk7CiAJCQluYW1lID0gdGVzdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMzk5Miw2ICszOTk5LDcgQEAKIAkJCQlFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEg
LyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAv
KiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBX
ZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKKwkJCQlDMjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEgLyog
QVBJRGF0YS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNTQ4Myw2ICs1NDkxLDcgQEAKIAkJCQlBMUEwMDlDMTE4MzFBMjZFMDBDRjg3
MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RDNCMkM0MTAxNTZC
REUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODQwMzIw
MThCRkZCRTEwMDVBMDgxMSAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QzI0OEY2OEUxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBQUJDREU3MThFRjI5NDIwMDAwMjA5NiAvKiBHQ0xvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyREE3NzgzMThFMjU5OTkwMDY2RkNCNiAvKiBIZWFwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkFBQ0U2M0QxOENBNUEwMzAwRUQwMTkxIC8qIEdDQWN0aXZpdHlDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCkBAIC02NzgxLDYgKzY3OTAsNyBAQAogCQkJCUMyMTgxRkMyMThBOTQ4
RkIwMDI1QTIzNSAvKiBKU0V4cG9ydFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0MEY2
MTAwQTRGODU2NzAwMDVGMDYxIC8qIHRlc3RhcGkuYyBpbiBTb3VyY2VzICovLAogCQkJCTg2RDIy
MjFBMTY3RUY5NDQwMDI0QzgwNCAvKiB0ZXN0YXBpLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzI5
MzJBNTUxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCShyZXZpc2lvbiAxNjc2
ODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAiV2F0Y2hkb2cuaCIKICNpbmNsdWRlICJXYXRj
aHBvaW50LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FQSURhdGEuaD4KICNpbmNsdWRlIDx3dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3IuaD4KICNp
bmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTEw
LDYgKzUxMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgQnVpbHRpbkV4
ZWN1dGFibGVzKiBidWlsdGluRXhlY3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRh
Ymxlcy5nZXQoKTsgfQogCisgICAgICAgIEFQSURhdGEgYXBpRGF0YTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBDbGVhckV4Y2VwdGlvblNjb3BlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229943</attachid>
            <date>2014-04-22 19:11:21 -0700</date>
            <delta_ts>2014-04-22 19:25:08 -0700</delta_ts>
            <desc>we will live in a world</desc>
            <filename>bug-131691-20140422191100.patch</filename>
            <type>text/plain</type>
            <size>49878</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTA0LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgREZHOjpXb3JrbGlzdCBzaG91bGQgYWNxdWlyZSB0aGUgbV9sb2NrIGJlZm9yZSBpdGVy
YXRpbmcgREZHIHBsYW5zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0NfQVBJRGF0
YV9oCisjZGVmaW5lIEpTQ19BUElEYXRhX2gKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
KyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitzdHJ1Y3QgQVBJRGF0YSB7CisgICAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gZXh0ZXJuYWxPYmplY3RHcmFwaDsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBl
UmVmPiBleHRlcm5hbFJlbWVtYmVyZWRTZXQ7Cit9OworCisjZWxzZQorCitzdHJ1Y3QgQVBJRGF0
YSB7IH07CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRAorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEpTQ19BUElEYXRhX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHJldmlzaW9uIDE2NzY5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODYsOCArODYsNiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlckZvckpTQ29u
dGV4CiBAaW1wbGVtZW50YXRpb24gSlNWaXJ0dWFsTWFjaGluZSB7CiAgICAgSlNDb250ZXh0R3Jv
dXBSZWYgbV9ncm91cDsKICAgICBOU01hcFRhYmxlICptX2NvbnRleHRDYWNoZTsKLSAgICBOU01h
cFRhYmxlICptX2V4dGVybmFsT2JqZWN0R3JhcGg7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5h
bFJlbWVtYmVyZWRTZXQ7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0xMTAsMTMgKzEw
OCwyMiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyBrZXlPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3Bh
cXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlUGVyc29uYWxpdHk7CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNX
ZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgbV9j
b250ZXh0Q2FjaGUgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlP
cHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6MF07Ci0gICAgCi0gICAg
TlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rp
b25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwotICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zU3Ryb25nTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7
Ci0gICAgbV9leHRlcm5hbE9iamVjdEdyYXBoID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0
aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6c3Ryb25nSURPcHRpb25zIGNh
cGFjaXR5OjBdOwogCi0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0lu
dGVnZXJQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsUmVtZW1iZXJlZFNldCA9IFtbTlNNYXBU
YWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25z
OmludGVnZXJPcHRpb25zIGNhcGFjaXR5OjBdOworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMobV9n
cm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBpZiAoIXZtLmFw
aURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaCkgeworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNP
cHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQ
b2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVt
b3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFw
aURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaCA9IGFkb3B0TlMoCisgICAgICAgICAgICBbW05TTWFw
VGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9u
czpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0KKworICAgIGlmICghdm0uYXBp
RGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQpIHsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25z
T3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5T
UG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICBOU1BvaW50ZXJGdW5j
dGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVt
b3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OworICAgICAgICB2bS5h
cGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IGFkb3B0TlMoCisgICAgICAgICAgICBbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXSk7CisgICAgfQogICAgCiAgICAgW0pTVk1X
cmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsK
ICAKQEAgLTEyNyw4ICsxMzQsNiBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBKU0NvbnRleHRH
cm91cFJlbGVhc2UobV9ncm91cCk7CiAgICAgW21fY29udGV4dENhY2hlIHJlbGVhc2VdOwotICAg
IFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTU5LDcgKzE2
NCw4IEBAIC0gKGJvb2wpaXNPbGRFeHRlcm5hbE9iamVjdDooaWQpb2JqZWN0CiAtICh2b2lkKWFk
ZEV4dGVybmFsUmVtZW1iZXJlZE9iamVjdDooaWQpb2JqZWN0CiB7CiAgICAgQVNTRVJUKFtzZWxm
IGlzT2xkRXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSk7Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVk
U2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5Om9iamVj
dF07CisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8
TlNNYXBUYWJsZSAqPih0b0pTKG1fZ3JvdXApLT5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNl
dC5nZXQoKSk7CisgICAgW2V4dGVybmFsUmVtZW1iZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhCb29sOnRydWVdIGZvcktleTpvYmplY3RdOwogfQogCiAtICh2b2lkKWFkZE1h
bmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlkKW93bmVyCkBAIC0xNzIsMTgg
KzE3OCwyMCBAQCAtICh2b2lkKWFkZE1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3CiAgICAg
CiAgICAgaWYgKCFvYmplY3QgfHwgIW93bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9ncm91cCkpOworCisgICAgSlNDOjpWTSYg
dm0gPSAqdG9KUyhtX2dyb3VwKTsgCisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsK
ICAgICBpZiAoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvd25lcl0gJiYgIVtzZWxmIGlzT2xk
RXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSkKICAgICAgICAgW3NlbGYgYWRkRXh0ZXJuYWxSZW1lbWJl
cmVkT2JqZWN0Om93bmVyXTsKLSAKLSAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbbV9l
eHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CisKKyAgICBOU01hcFRhYmxl
ICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlE
YXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCkpOworICAgIE5TTWFwVGFibGUgKm93bmVkT2Jq
ZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAgICAgaWYg
KCFvd25lZE9iamVjdHMpIHsKICAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFr
SURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25z
IGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2lu
dGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwogICAgICAgICBvd25lZE9iamVjdHMgPSBb
W05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVl
T3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eToxXTsKIAotICAgICAgICBbbV9leHRlcm5h
bE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9iamVjdHMgZm9yS2V5Om93bmVyXTsKKyAgICAg
ICAgW2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVkT2JqZWN0cyBmb3JLZXk6b3du
ZXJdOwogICAgICAgICBbb3duZWRPYmplY3RzIHJlbGVhc2VdOwogICAgIH0KIApAQCAtMjAyLDkg
KzIxMCwxMSBAQCAtICh2b2lkKXJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjCiAgICAg
aWYgKCFvYmplY3QgfHwgIW93bmVyKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9ncm91cCkpOwotICAgIAotICAgIE5TTWFwVGFibGUg
Km93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVy
XTsKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CisKKyAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0g
c3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgu
Z2V0KCkpOyAKKyAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RH
cmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAgIGlmICghb3duZWRPYmplY3RzKQogICAgICAg
ICByZXR1cm47CiAgICAKQEAgLTIxOCw4ICsyMjgsOCBAQCAtICh2b2lkKXJlbW92ZU1hbmFnZWRS
ZWZlcmVuY2U6KGlkKW9iamVjCiAgICAgICAgIE5TTWFwUmVtb3ZlKG93bmVkT2JqZWN0cywgb2Jq
ZWN0KTsKIAogICAgIGlmICghW293bmVkT2JqZWN0cyBjb3VudF0pIHsKLSAgICAgICAgW21fZXh0
ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwotICAgICAgICBbbV9l
eHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICAgICAg
W2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICAgICAg
W3N0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRT
ZXQuZ2V0KCkpIHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CiAgICAgfQogfQogCkBAIC0yNTAs
MjUgKzI2MCwxMiBAQCAtICh2b2lkKWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgCiAg
ICAgTlNNYXBJbnNlcnQobV9jb250ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIHdyYXBwZXIpOwog
fQogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxPYmplY3RHcmFwaAotewotICAgIHJldHVybiBt
X2V4dGVybmFsT2JqZWN0R3JhcGg7Ci19Ci0KLS0gKE5TTWFwVGFibGUgKilleHRlcm5hbFJlbWVt
YmVyZWRTZXQKLXsKLSAgICByZXR1cm4gbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQ7Ci19Ci0KIEBl
bmQKIAogdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2bSwgSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvciwgdm9pZCogcm9vdCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
LSAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJD
YWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlm
ICghdmlydHVhbE1hY2hpbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFi
bGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RH
cmFwaF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7
CiAgICAgICAgIFZlY3Rvcjx2b2lkKj4gc3RhY2s7CiAgICAgICAgIHN0YWNrLmFwcGVuZChyb290
KTsKICAgICAgICAgd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpIHsKQEAgLTI4OCwxMSArMjg1LDgg
QEAgdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2bQogdm9pZCBzY2FuRXh0
ZXJuYWxSZW1lbWJlcmVkU2V0KEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2
aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFt2
aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKLSAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsUmVtZW1iZXJl
ZFNldF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7
CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19jYXN0
PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkpOwog
ICAgICAgICBmb3IgKGlkIGtleSBpbiBleHRlcm5hbFJlbWVtYmVyZWRTZXQpIHsKICAgICAgICAg
ICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVj
dEZvcktleTprZXldOwogICAgICAgICAgICAgZm9yIChpZCBvd25lZE9iamVjdCBpbiBvd25lZE9i
amVjdHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJ
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0
dWFsTWFjaGluZUludGVybmFsLmgJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDggKzQ1LDYgQEAgSlNDb250ZXh0R3JvdXBSZWYgZ2V0R3JvdXBGcm9tVmlydHVhbE1hYwog
LSAoSlNDb250ZXh0ICopY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4
dFJlZilnbG9iYWxDb250ZXh0OwogLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFw
cGVyIGZvckdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0
OwogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxPYmplY3RHcmFwaDsKLQogQGVuZAogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOworCisjZW5kaWYgLy8gSlND
X09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
TWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJN
ZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK2V4
dGVybiAiQyIgdm9pZCBjaGVja1Jlc3VsdChOU1N0cmluZyAqZGVzY3JpcHRpb24sIGJvb2wgcGFz
c2VkKTsKKworZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRl
YnVnZ2luZyhKU0NvbnRleHRSZWYpOworZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVu
Q29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworCitAaW50ZXJmYWNlIE9wYXF1ZU9i
akNPYmplY3QgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gT3BhcXVlT2JqQ09i
amVjdAorKyAoT3BhcXVlT2JqQ09iamVjdCAqKW9wYXF1ZU9iamVjdAoreworICAgIHJldHVybiBb
W3NlbGYgYWxsb2NdIGluaXRdOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBzZWxmOworfQorQGVuZAorCitAaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5T
T2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24geworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9kaWN0ID0gW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcg
KilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZhbHVlID0gW19kaWN0IG9i
amVjdEZvcktleTprZXldOworICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUpIHsKKyAgICAgICAgSlNW
YWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsKKyAgICAgICAgaWYgKG9s
ZFZhbHVlKQorICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgcmVt
b3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOworICAg
IH0KKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pTTWFuYWdlZFZhbHVlIG1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1h
Y2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOwor
ICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTprZXldOworfQorCistIChK
U1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFs
dWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAoIW1h
bmFnZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW21hbmFnZWRWYWx1
ZSB2YWx1ZV07Cit9CitAZW5kCisKK0Bwcm90b2NvbCBDbGlja2FibGVFeHBvcnRzIDxKU0V4cG9y
dD4KK0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOworQHByb3BlcnR5IChhc3Np
Z24pIEpTVmFsdWUgKndlYWtPbmNsaWNrOworQGVuZAorCitAaW50ZXJmYWNlIENsaWNrYWJsZSA6
IE5TT2JqZWN0PENsaWNrYWJsZUV4cG9ydHM+CistICh2b2lkKWNsaWNrOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gQ2xpY2thYmxlIHsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbV93ZWFrT25jbGlj
a0hhbmRsZXI7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlja0hhbmRsZXI7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZv
aWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fd2Vha09uY2xpY2tI
YW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Cit9
CistICh2b2lkKXNldE9uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fb25jbGlja0hh
bmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKKyAg
ICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25j
bGlja0hhbmRsZXIgd2l0aE93bmVyOnNlbGZdOworfQorLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNr
Cit7CisgICAgcmV0dXJuIFttX3dlYWtPbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9CistIChKU1Zh
bHVlICopb25jbGljaworeworICAgIHJldHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9
CistICh2b2lkKWNsaWNrCit7CisgICAgaWYgKCFtX29uY2xpY2tIYW5kbGVyKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2
YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07
Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgTWVtb3J5TWFuYWdlbWVudFRlc3RzIDogTlNPYmplY3QK
KysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdDsKKysgKHZvaWQpYXZvaWRNb2RpZnlpbmdO
U01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0OworKyAodm9pZCliYWdPZkpTTWFuYWdlZFZhbHVl
c1Rlc3Q7CisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rp
b25UZXN0OworKyAodm9pZClkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGluZVdyYXBwZXJUZXN0Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVtb3J5TWFuYWdlbWVudFRlc3RzCisrICh2b2lkKW1h
bmFnZWRWYWx1ZVNhbml0eVRlc3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBD
bGlja2FibGUgKmNsaWNrYWJsZSA9IFtbQ2xpY2thYmxlIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgY29udGV4dFtAImNsaWNr
YWJsZSJdID0gY2xpY2thYmxlOworICAgICAgICAgICAgCisgICAgICAgICAgICBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAor
ICAgICAgICAgICAgICAgIGNsaWNrYWJsZS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAg
ICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJsZS53ZWFrT25jbGljayA9IGZ1
bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgcmV0dXJuICdmb28nOyBcCisgICAgICAgICAg
ICAgICAgfTsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NsaWNrYWJsZSBjbGlja107CisgICAg
ICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENs
aWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIs
IFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTU3luY2hy
b25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjbGlja2FibGUub25j
bGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3VuZCBh
ZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
Y2xpY2thYmxlLndlYWtPbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtP
bmNsaWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBp
c1VuZGVmaW5lZF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgY2xpY2thYmxlID0g
bnVsbDsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgW2NsaWNrYWJsZSBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jv
b2xdKTsKKyAgICAgICAgfQorICAgIH0KK30KKworKyAodm9pZClhdm9pZE1vZGlmeWluZ05TTWFw
VGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdE9iamVjdCA9
IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgIEpTQ29sbGVjdGlvbiAq
Y29sbGVjdGlvbiA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgY29udGV4
dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICAgICAgSlNWYWx1ZSAqanNDb2xsZWN0aW9uID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
OmNvbGxlY3Rpb24gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAgSlNNYW5hZ2VkVmFs
dWUgKndlYWtDb2xsZWN0aW9uID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1
ZTpqc0NvbGxlY3Rpb24gYW5kT3duZXI6cm9vdE9iamVjdF07CisgICAgICAgICAgICBbY29udGV4
dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOndlYWtDb2xsZWN0aW9uIHdpdGhP
d25lcjptZXNzYWdlXTsKKyAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworKyAodm9pZCliYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3QKK3sKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0g
W1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgSlNDb250ZXh0IGFuZCBnaXZl
IGl0IGEgcm9vdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGUgYmFnIG9mIEpTTWFuYWdlZFZhbHVl
cy4KKyAgICAgICAgICAgIEpTQ29udGV4dCogY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RPYmplY3QgPSBbT3BhcXVl
T2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9
IHJvb3RPYmplY3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEFkZCBhIGJ1bmNoIG9m
IHByb3BlcnRpZXMgdG8gdGhlIGJhZyBvZiBKU01hbmFnZWRWYWx1ZXMuCisgICAgICAgICAgICBb
Y29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3Bl
cnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW215UHJpdmF0ZVByb3Bl
cnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0cnVlIGluQ29udGV4dDpjb250
ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVz
IHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvISIgaW5Db250ZXh0OmNv
bnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0
aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0
XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVz
IHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5
OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBz
ZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF0gZm9y
S2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHBy
b3BlcnRpZXMgYXJlIHN0aWxsIHByZXNlbnQgYWZ0ZXIgYSBmdWxsIGNvbGxlY3Rpb24uCisgICAg
ICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAiaXNfaGFtIl07CisgICAgICAgICAgICBKU1ZhbHVlICptZXNzYWdlID0gW215UHJpdmF0ZVBy
b3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBKU1ZhbHVlICpt
eU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl07
CisgICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5TnVsbCA9IFtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAgICAgICBKU1ZhbHVl
ICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpA
Im5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYmIFtpc0hhbSB0b0Jvb2xdKTsKKyAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBoZWxsbyEiLCBbbWVzc2FnZSBpc1N0cmlu
Z10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6W21lc3NhZ2UgdG9TdHJpbmddXSk7Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyA0MiIsIFtteU51bWJlciBpc051
bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQyKTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBbZGVmaW5pdGVseU51bGwgaXNOdWxsXSk7
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRl
ZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIE5vdyB0aGF0IHRoZSBKU0NvbnRleHQgaGFzIGRpc2FwcGVhcmVk
LCBtYWtlIHN1cmUgYWxsIG9mIHRoZSBKU01hbmFnZWRWYWx1ZXMgaGF2ZSBiZWVuIGNsZWFyZWQu
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNz
YWdlIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2Ui
XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVl
Rm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9z
dXJlX2lmX3VuZGVmaW5lZCBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7CisgICAgfQorfQorCisKKysgKHZvaWQpc2Nh
bkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3QKK3sKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSByb290LCBtYWtl
IGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2UgYW4gRWRlbkNvbGxlY3Rpb24KKyAgICAg
ICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCisgICAgICAg
IE9wYXF1ZU9iakNPYmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3Rd
OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290
Il0gPSByb290OworICAgICAgICB9CisgICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qgb25seSByZWFjaGFibGUgdmlhIHRoZSBl
eHRlcm5hbCBvYmplY3QgZ3JhcGgKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgb2JqZWN0IHdlIGFs
cmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xsZWN0aW9uLgorICAgICAgICBPcGFxdWVP
YmpDT2JqZWN0ICpjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAg
ICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0
aE93bmVyOnJvb3RdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hbmFnZWQg
SlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBrZXB0IGFsaXZlIGlmIHdlIHByb3Blcmx5IHJlc2Nh
bgorICAgICAgICAvLyB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgorICAgICAgICBKU01hbmFn
ZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0gbmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzT2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIG1hbmFnZWRKU09i
amVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNPYmplY3RdOwor
ICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
YW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLy8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQgc2hvdWxkIHJlc2NhbiB0
aGUgbmV3IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgSlNTeW5j
aHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbWFuYWdlZCBKU1ZhbHVl
IGlzIHN0aWxsIGFsaXZlLgorICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRv
ZXNuJ3QgcmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVl
XSAhPSBuaWwpOworICAgIH0KK30KKworKyAodm9pZClkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGlu
ZVdyYXBwZXJUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIE9wYXF1ZU9i
akNPYmplY3QgKmNoaWxkID0gbmlsOworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4
dFJlZiA9IDA7CisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkQ2hpbGQgPSBuaWw7Cisg
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgY29udGV4dFJlZiA9IFtj
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRS
ZXRhaW4oY29udGV4dFJlZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE9wYXF1ZU9iakNP
YmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICAg
ICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNo
aWxkID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250
ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJv
b3RdOworICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpjaGlsZCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBqc0NoaWxkW0AibXlT
cGVjaWFsUHJvcGVydHkiXSA9IEAiZm9vIjsKKyAgICAgICAgICAgIG1hbmFnZWRDaGlsZCA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDaGlsZF07CisgICAgICAgICAg
ICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRDaGls
ZCB3aXRoT3duZXI6Y2hpbGRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1N5bmNo
cm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dFJlZik7CisgICAgICAgIAor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQg
PSBbbWFuYWdlZENoaWxkIHZhbHVlXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiY2hpbGQg
aGFzIG15U3BlY2lhbFByb3BlcnR5IGV2ZW4gd2hlbiBKU1ZpcnR1YWxNYWNoaW5lIGRpc2FwcGVh
cnMiLAorICAgICAgICAgICAgICAgIFtbanNDaGlsZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gdG9T
dHJpbmddIGlzRXF1YWxUb1N0cmluZzpAImZvbyJdKTsKKyAgICAgICAgICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoY29udGV4dFJlZik7CisgICAgICAgIH0KKyAgICB9Cit9CitAZW5kCisKK3Zv
aWQgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBtYW5hZ2VkVmFsdWVTYW5pdHlUZXN0XTsK
KyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBhdm9pZE1vZGlmeWluZ05TTWFwVGFibGVX
aGlsZUl0ZXJhdGluZ1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRlc3RzIGJhZ09m
SlNNYW5hZ2VkVmFsdWVzVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgc2Nh
bkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3RdOworICAgICAgICBb
TWVtb3J5TWFuYWdlbWVudFRlc3RzIGRpc2FwcGVhcmluZ1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRl
c3RdOworICAgIH0KK30KKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAxNjc2
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkN1cnJlbnRUaGlzSW5zaWRlQmxv
Y2tHZXR0ZXJUZXN0LmgiCiAjaW1wb3J0ICJEYXRlVGVzdHMuaCIKICNpbXBvcnQgIkpTRXhwb3J0
VGVzdHMuaCIKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oIgogCiBleHRlcm4gIkMi
IHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJl
Zik7CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5n
KEpTQ29udGV4dFJlZik7CkBAIC0xMTcsOCArMTE4LDYgQEAgYm9vbCB0ZXN0WFlaVGVzdGVkID0g
ZmFsc2U7CiAtIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcqKXN0cmluZzsKIEBwcm9wZXJ0
eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OwotQHByb3BlcnR5IChhc3NpZ24p
IEpTVmFsdWUgKm9uY2xpY2s7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xp
Y2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTI2LDEz
ICsxMjUsOSBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBwcm9w
ZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKLS0gKHZvaWQp
Y2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaIHsKLSAgICBKU01hbmFnZWRW
YWx1ZSAqbV93ZWFrT25jbGlja0hhbmRsZXI7Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlj
a0hhbmRsZXI7Ci19CitAaW1wbGVtZW50YXRpb24gVGV4dFhZWgogQHN5bnRoZXNpemUgeDsKIEBz
eW50aGVzaXplIHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTUwLDMyICsxNDUsNiBAQCAtICh2b2lk
KXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBbbWVzc2Fn
ZSBpc0VxdWFsOkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1OwogfQotLSAo
dm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0gICAgbV93ZWFrT25jbGlj
a0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsK
LX0KLQotLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKLXsKLSAgICBtX29uY2xp
Y2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07
Ci0gICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
X29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKLX0KLS0gKEpTVmFsdWUgKil3ZWFrT25j
bGljawotewotICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOwotfQotLSAo
SlNWYWx1ZSAqKW9uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVd
OwotfQotLSAodm9pZCljbGljawotewotICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2
YWx1ZV07Ci0gICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07
Ci19CiBAZW5kCiAKIEBjbGFzcyBUaW55RE9NTm9kZTsKQEAgLTIzOCw0NyArMjA3LDYgQEAgLSAo
dm9pZClyZW1vdmVDaGlsZEF0SW5kZXg6KE5TVUludGVnZXIpaQogCiBAZW5kCiAKLUBpbnRlcmZh
Y2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihO
U1N0cmluZyAqKWtleTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEpTQ29sbGVjdGlvbiB7Ci0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Ci19Ci0tIChpZClpbml0Ci17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZhbHVl
ID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUpIHsK
LSAgICAgICAgSlNWYWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsKLSAg
ICAgICAgaWYgKG9sZFZhbHVlKQotICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmlydHVh
bE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93bmVy
OnNlbGZdOwotICAgIH0KLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pTTWFu
YWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Ci0gICAgW3ZhbHVlLmNvbnRl
eHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0aE93
bmVyOnNlbGZdOwotICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTprZXld
OwotfQotCi0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAg
SlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsK
LSAgICBpZiAoIW1hbmFnZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
W21hbmFnZWRWYWx1ZSB2YWx1ZV07Ci19Ci1AZW5kCi0KIEBwcm90b2NvbCBJbml0QSA8SlNFeHBv
cnQ+CiAtIChpZClpbml0V2l0aEE6KGludClhOwogLSAoaW50KWluaXRpYWxpemU7CkBAIC01MTAs
NTUgKzQzOCw2IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRv
cmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMg
PSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07Ci0gICAgICAgICAgICBUZXN0T2JqZWN0KiByb290T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07Ci0gICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsK
LSAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6
bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07Ci0gICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhCb29sOnRydWUg
aW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOwotICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8h
IiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwotICAgICAgICAgICAgW215
UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5D
b250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoTnVsbEluQ29udGV4dDpj
b250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIFtteVByaXZh
dGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4
dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKLQotICAgICAgICAg
ICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07Ci0gICAgICAgICAgICBKU1ZhbHVl
ICptZXNzYWdlID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07
Ci0gICAgICAgICAgICBKU1ZhbHVlICpteU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZh
bHVlRm9yS2V5OkAibXlfbnVtYmVyIl07Ci0gICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5
TnVsbCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxs
Il07Ci0gICAgICAgICAgICBKU1ZhbHVlICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOwotICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYm
IFtpc0hhbSB0b0Jvb2xdKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBo
ZWxsbyEiLCBbbWVzc2FnZSBpc1N0cmluZ10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6
W21lc3NhZ2UgdG9TdHJpbmddXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJl
ciBpcyA0MiIsIFtteU51bWJlciBpc051bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQy
KTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBb
ZGVmaW5pdGVseU51bGwgaXNOdWxsXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9z
dXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5k
ZWZpbmVkXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBu
aWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7Ci0gICAg
ICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMg
dmFsdWVGb3JLZXk6QCJtZXNzYWdlIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJl
ciBpcyA0MiIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJd
KTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbnVsbCIsICFbbXlQ
cml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKLSAgICAg
ICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgIVtt
eVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0p
OwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIEpTVmFsdWUgKm1lc3Nh
Z2UgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRd
OwotICAgICAgICBUZXN0T2JqZWN0ICpyb290T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVj
dF07Ci0gICAgICAgIEpTQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IFtbSlNDb2xsZWN0aW9uIGFs
bG9jXSBpbml0XTsKLSAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7Ci0gICAg
ICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqanNDb2xsZWN0aW9u
ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNvbGxlY3Rpb24gaW5Db250ZXh0OmNvbnRleHRd
OwotICAgICAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKndlYWtDb2xsZWN0aW9uID0gW0pTTWFuYWdl
ZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc0NvbGxlY3Rpb24gYW5kT3duZXI6cm9vdE9i
amVjdF07Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVm
ZXJlbmNlOndlYWtDb2xsZWN0aW9uIHdpdGhPd25lcjptZXNzYWdlXTsKLSAgICAgICAgICAgIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAg
ICAgICAgIF9fYmxvY2sgaW50IHJlc3VsdDsKICAgICAgICAgY29udGV4dFtAImJsb2NrQ2FsbGJh
Y2siXSA9IF4oaW50IHZhbHVlKXsKQEAgLTk3Nyw2MCArODU2LDYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgVGV4dFhZ
WiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0gdGVzdFhZWjsKLQot
ICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAotICAgICAgICAgICAgICAg
IGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaLm9uY2xpY2sgPSBm
dW5jdGlvbigpIHsgXAotICAgICAgICAgICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKLSAg
ICAgICAgICAgICAgICB9OyBcCi0gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0
ZXN0WFlaLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICdmb28nOyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgIl07Ci0g
ICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0
WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQg
aGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdFhZWi5vbmNs
aWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFm
dGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKLSAg
ICAgICAgfQotCi0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1Zh
bHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoud2Vha09uY2xp
Y2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBh
ZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBc
Ci0gICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKLSAgICAgICAgICAgICJdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAgICAgICAgSlNWYWx1ZSAq
cmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVty
ZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKICAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxs
b2NdIGluaXRdOwogICAgICAgICBUZXN0T2JqZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07CiAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrVmFsdWU7CkBAIC0xMzI2
LDQyICsxMTUxLDExIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBbW0pTVmFs
dWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIHRvRGljdGlvbmFyeV07CiAg
ICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gdG9B
cnJheV07CiAgICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQotICAgICAgICAvLyBDcmVh
dGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBmb3JjZSBhbiBFZGVu
Q29sbGVjdGlvbgotICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4dGVybmFsIG9iamVj
dCBncmFwaC4KLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmpl
Y3RdOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRleHRbQCJy
b290Il0gPSByb290OwotICAgICAgICB9Ci0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVj
dEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgZXh0ZXJu
YWwgb2JqZWN0IGdyYXBoCi0gICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVjdCB3ZSBhbHJlYWR5
IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KLSAgICAgICAgVGVzdE9iamVjdCAq
Y2hpbGQgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07Ci0KLSAg
ICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hbmFnZWQgSlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBr
ZXB0IGFsaXZlIGlmIHdlIHByb3Blcmx5IHJlc2NhbgotICAgICAgICAvLyB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgotICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0g
bmlsOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpz
T2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgICAgIG1hbmFnZWRKU09iamVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6anNPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNo
aWxkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rp
b24uIEl0IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3Qg
Z3JhcGguCi0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRo
YXQgdGhlIG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJFZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwg
W21hbmFnZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKLSAgICB9Ci0KKyAgICAKICAgICBjdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCgpOwogICAgIHJ1bkRhdGVUZXN0cygpOwogICAg
IHJ1bkpTRXhwb3J0VGVzdHMoKTsKKyAgICBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKIH0K
IAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9BUElEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0
Q29yZS9BUElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTc4Nyw2ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEFQSVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxBUElcQVBJRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFT
Y3JpcHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29y
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVj
dC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cQVBJXEFQSUNhc3QuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAg
ICA8RmlsdGVyPkFQSTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQJKHJldmlzaW9u
IDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L2NvcHktZmlsZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBAIGVjaG8gQ29w
eWluZyBwdWJsaWMgaGVhZGVycy4uLg0KIG1rZGlyICIlUHVibGljSGVhZGVyc0RpcmVjdG9yeSUi
IDI+TlVMDQogZm9yICUlZiBpbiAoDQogICAgIEFQSUNhc3QuaA0KKyAgICBBUElEYXRhLmgNCiAg
ICAgQVBJU2hpbXMuaA0KICAgICBKU0Jhc2UuaA0KICAgICBKU0NsYXNzUmVmLmgNCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE2NTYsNiArMTY1Niw3IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEg
LyogQVBJRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNE
Njk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3Rh
dGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQw
MEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKQEAgLTE2NjUsNiArMTY2Niw3IEBA
CiAJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE4RkYxNkZFNEI3RDAwMTU3
QkZEIC8qIEhhbmRsZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4
MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovOyB9OwogCQlD
Mjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8q
IERhdGVUZXN0cy5tbSAqLzsgfTsKKwkJQzI5MzJBNTUxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9y
eU1hbmFnZW1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVz
dHMubW0gKi87IH07CiAJCUMyOTgxRkQ4MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNl
cy5jcHAgKi87IH07CiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vh
a1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjk4
MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGREExN0JBRkY0
NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLzsgfTsKQEAgLTMyNDIs
NiArMzI0NCw3IEBACiAJCUMyMjM5RDE2MTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHQ1RocmVhZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2xvdFZpc2l0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQg
LyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ4RjY4QzE5
MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYx
Q0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5h
Z2VkVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01h
bmFnZWRWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNTIsNiArMzI1
NSw4IEBACiAJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlQmxvY2tJbmxpbmVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODhCMkRDMThBNTREM0UwMDdCRTQwQiAv
KiBEYXRlVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0ZVRlc3Rz
Lmg7IHBhdGggPSBBUEkvdGVzdHMvRGF0ZVRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyODhCMkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBEYXRlVGVzdHMubW07IHBhdGggPSBBUEkv
dGVzdHMvRGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjkzMkE1
MzE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBwYXRoID0gQVBJ
L3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVtb3J5TWFuYWdlbWVu
dFRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERG
R0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2ly
ZWRXZWFrUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgx
RkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHBh
dGggPSBkZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJy
aWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVk
V3JpdGVCYXJyaWVycy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzY5OCw2ICszNzAzLDggQEAKIAkJCQkx
NEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2
N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAy
QjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCisJCQkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlC
IC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oICovLAorCQkJCUMyOTMyQTU0MTkwNUI1RTcwMEU3
QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IHRl
c3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM5OTIsNiArMzk5OSw3IEBACiAJ
CQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJ
CQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1
REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCisJCQkJ
QzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRo
ID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU0ODMsNiArNTQ5MSw3IEBA
CiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9y
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBB
UElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyog
R0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYg
LyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVE
MDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNjc4MSw2ICs2
NzkwLDcgQEAKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBp
LmMgaW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFw
aS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMyOTMyQTU1MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUg
IldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5k
b20uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElEYXRhLmg+CiAjaW5jbHVkZSA8d3Rm
L0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUxMCw2ICs1MTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVz
KCkgeyByZXR1cm4gbV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBBUElE
YXRhIGFwaURhdGE7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29w
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229944</attachid>
            <date>2014-04-22 19:25:08 -0700</date>
            <delta_ts>2014-04-22 19:42:11 -0700</delta_ts>
            <desc>where a patch</desc>
            <filename>the.patch</filename>
            <type>text/plain</type>
            <size>48689</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJRGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNDX0FQSURhdGFfaAorI2RlZmluZSBKU0Nf
QVBJRGF0YV9oCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKworc3RydWN0IEFQSURhdGEgeworICAgIFJldGFpblB0cjxDRlR5cGVSZWY+IGV4
dGVybmFsT2JqZWN0R3JhcGg7CisgICAgUmV0YWluUHRyPENGVHlwZVJlZj4gZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0OworfTsKKworI2Vsc2UKKworc3RydWN0IEFQSURhdGEgeyB9OworCisjZW5kaWYg
Ly8gSlNDX09CSkNfQVBJX0VOQUJMRUQKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBKU0NfQVBJRGF0YV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVh
bE1hY2hpbmUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tCShyZXZpc2lvbiAxNjc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTg2LDggKzg2LDYg
QEAKIEBpbXBsZW1lbnRhdGlvbiBKU1ZpcnR1YWxNYWNoaW5lIHsKICAgICBKU0NvbnRleHRHcm91
cFJlZiBtX2dyb3VwOwogICAgIE5TTWFwVGFibGUgKm1fY29udGV4dENhY2hlOwotICAgIE5TTWFw
VGFibGUgKm1fZXh0ZXJuYWxPYmplY3RHcmFwaDsKLSAgICBOU01hcFRhYmxlICptX2V4dGVybmFs
UmVtZW1iZXJlZFNldDsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXQKQEAgLTExMSwxMiArMTA5
LDIxIEBACiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1Bv
aW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29u
YWxpdHk7CiAgICAgbV9jb250ZXh0Q2FjaGUgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRo
S2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6
MF07CiAgICAgCisgICAgSlNDOjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGlmICghdm0uYXBpRGF0YS5leHRlcm5hbE9iamVj
dEdyYXBoKSB7CiAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0g
TlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBl
cnNvbmFsaXR5OwogICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25z
ID0gTlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2Jq
ZWN0UGVyc29uYWxpdHk7Ci0gICAgbV9leHRlcm5hbE9iamVjdEdyYXBoID0gW1tOU01hcFRhYmxl
IGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6c3Ry
b25nSURPcHRpb25zIGNhcGFjaXR5OjBdOworICAgICAgICB2bS5hcGlEYXRhLmV4dGVybmFsT2Jq
ZWN0R3JhcGggPSBhZG9wdE5TKAorICAgICAgICAgICAgW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0
V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6c3Ryb25nSURPcHRpb25z
IGNhcGFjaXR5OjBdKTsKKyAgICB9CiAKKyAgICBpZiAoIXZtLmFwaURhdGEuZXh0ZXJuYWxSZW1l
bWJlcmVkU2V0KSB7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lET3B0
aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlvbnNP
YmplY3RQZXJzb25hbGl0eTsKICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25zIGludGVnZXJP
cHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rp
b25zSW50ZWdlclBlcnNvbmFsaXR5OwotICAgIG1fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW1tO
U01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9w
dGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MF07CisgICAgICAgIHZtLmFwaURhdGEuZXh0
ZXJuYWxSZW1lbWJlcmVkU2V0ID0gYWRvcHROUygKKyAgICAgICAgICAgIFtbTlNNYXBUYWJsZSBh
bGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25zOmludGVn
ZXJPcHRpb25zIGNhcGFjaXR5OjBdKTsKKyAgICB9CiAgICAKICAgICBbSlNWTVdyYXBwZXJDYWNo
ZSBhZGRXcmFwcGVyOnNlbGYgZm9ySlNDb250ZXh0R3JvdXBSZWY6Z3JvdXBdOwogIApAQCAtMTI3
LDggKzEzNCw2IEBACiB7CiAgICAgSlNDb250ZXh0R3JvdXBSZWxlYXNlKG1fZ3JvdXApOwogICAg
IFttX2NvbnRleHRDYWNoZSByZWxlYXNlXTsKLSAgICBbbV9leHRlcm5hbE9iamVjdEdyYXBoIHJl
bGVhc2VdOwotICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCByZWxlYXNlXTsKICAgICBbc3Vw
ZXIgZGVhbGxvY107CiB9CiAKQEAgLTE1OSw3ICsxNjQsOCBAQAogLSAodm9pZClhZGRFeHRlcm5h
bFJlbWVtYmVyZWRPYmplY3Q6KGlkKW9iamVjdAogewogICAgIEFTU0VSVChbc2VsZiBpc09sZEV4
dGVybmFsT2JqZWN0Om9iamVjdF0pOwotICAgIFttX2V4dGVybmFsUmVtZW1iZXJlZFNldCBzZXRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOnRydWVdIGZvcktleTpvYmplY3RdOworICAg
IE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19jYXN0PE5TTWFwVGFi
bGUgKj4odG9KUyhtX2dyb3VwKS0+YXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkp
OworICAgIFtleHRlcm5hbFJlbWVtYmVyZWRTZXQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoQm9vbDp0cnVlXSBmb3JLZXk6b2JqZWN0XTsKIH0KIAogLSAodm9pZClhZGRNYW5hZ2VkUmVm
ZXJlbmNlOihpZClvYmplY3Qgd2l0aE93bmVyOihpZClvd25lcgpAQCAtMTczLDE3ICsxNzksMTkg
QEAKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2dyb3VwKSk7CisgICAgSlNDOjpWTSYg
dm0gPSAqdG9KUyhtX2dyb3VwKTsgCisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsK
ICAgICBpZiAoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvd25lcl0gJiYgIVtzZWxmIGlzT2xk
RXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSkKICAgICAgICAgW3NlbGYgYWRkRXh0ZXJuYWxSZW1lbWJl
cmVkT2JqZWN0Om93bmVyXTsKICAKLSAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbbV9l
eHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CisgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0
YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKKyAgICBOU01hcFRhYmxlICpvd25lZE9iamVj
dHMgPSBbZXh0ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAgIGlmICgh
b3duZWRPYmplY3RzKSB7CiAgICAgICAgIE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgd2Vha0lE
T3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc1dlYWtNZW1vcnkgfCBOU1BvaW50ZXJGdW5jdGlv
bnNPYmplY3RQZXJzb25hbGl0eTsKICAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBp
bnRlZ2VyT3B0aW9ucyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRl
ckZ1bmN0aW9uc0ludGVnZXJQZXJzb25hbGl0eTsKICAgICAgICAgb3duZWRPYmplY3RzID0gW1tO
U01hcFRhYmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9w
dGlvbnM6aW50ZWdlck9wdGlvbnMgY2FwYWNpdHk6MV07CiAKLSAgICAgICAgW21fZXh0ZXJuYWxP
YmplY3RHcmFwaCBzZXRPYmplY3Q6b3duZWRPYmplY3RzIGZvcktleTpvd25lcl07CisgICAgICAg
IFtleHRlcm5hbE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9iamVjdHMgZm9yS2V5Om93bmVy
XTsKICAgICAgICAgW293bmVkT2JqZWN0cyByZWxlYXNlXTsKICAgICB9CiAKQEAgLTIwMiw5ICsy
MTAsMTEgQEAKICAgICBpZiAoIW9iamVjdCB8fCAhb3duZXIpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhtX2dyb3VwKSk7CisgICAgSlND
OjpWTSYgdm0gPSAqdG9KUyhtX2dyb3VwKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIo
dm0pOwogICAgIAotICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2Jq
ZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICBOU01hcFRhYmxlICpleHRlcm5hbE9i
amVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFs
T2JqZWN0R3JhcGguZ2V0KCkpOyAKKyAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0
ZXJuYWxPYmplY3RHcmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAgIGlmICghb3duZWRPYmpl
Y3RzKQogICAgICAgICByZXR1cm47CiAgICAKQEAgLTIxOCw4ICsyMjgsOCBAQAogICAgICAgICBO
U01hcFJlbW92ZShvd25lZE9iamVjdHMsIG9iamVjdCk7CiAKICAgICBpZiAoIVtvd25lZE9iamVj
dHMgY291bnRdKSB7Ci0gICAgICAgIFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0
Rm9yS2V5Om93bmVyXTsKLSAgICAgICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVkU2V0IHJlbW92ZU9i
amVjdEZvcktleTpvd25lcl07CisgICAgICAgIFtleHRlcm5hbE9iamVjdEdyYXBoIHJlbW92ZU9i
amVjdEZvcktleTpvd25lcl07CisgICAgICAgIFtzdGF0aWNfY2FzdDxOU01hcFRhYmxlICo+KHZt
LmFwaURhdGEuZXh0ZXJuYWxSZW1lbWJlcmVkU2V0LmdldCgpKSByZW1vdmVPYmplY3RGb3JLZXk6
b3duZXJdOwogICAgIH0KIH0KIApAQCAtMjUwLDI1ICsyNjAsMTIgQEAKICAgICBOU01hcEluc2Vy
dChtX2NvbnRleHRDYWNoZSwgZ2xvYmFsQ29udGV4dCwgd3JhcHBlcik7CiB9CiAKLS0gKE5TTWFw
VGFibGUgKilleHRlcm5hbE9iamVjdEdyYXBoCi17Ci0gICAgcmV0dXJuIG1fZXh0ZXJuYWxPYmpl
Y3RHcmFwaDsKLX0KLQotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsUmVtZW1iZXJlZFNldAotewot
ICAgIHJldHVybiBtX2V4dGVybmFsUmVtZW1iZXJlZFNldDsKLX0KLQogQGVuZAogCiB2b2lkIHNj
YW5FeHRlcm5hbE9iamVjdEdyYXBoKEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yLCB2b2lkKiByb290KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1Zp
cnR1YWxNYWNoaW5lICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJG
b3JKU0NvbnRleHRHcm91cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFj
aGluZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxP
YmplY3RHcmFwaCA9IFt2aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKKyAgICAg
ICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IHN0YXRpY19jYXN0PE5TTWFwVGFi
bGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbE9iamVjdEdyYXBoLmdldCgpKTsKICAgICAgICAgVmVj
dG9yPHZvaWQqPiBzdGFjazsKICAgICAgICAgc3RhY2suYXBwZW5kKHJvb3QpOwogICAgICAgICB3
aGlsZSAoIXN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMjg4LDExICsyODUsOCBAQAogdm9pZCBzY2Fu
RXh0ZXJuYWxSZW1lbWJlcmVkU2V0KEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5l
ICp2aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRH
cm91cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9
IFt2aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKLSAgICAgICAgTlNNYXBUYWJs
ZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsUmVtZW1i
ZXJlZFNldF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0
aWNfY2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQo
KSk7CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19j
YXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkp
OwogICAgICAgICBmb3IgKGlkIGtleSBpbiBleHRlcm5hbFJlbWVtYmVyZWRTZXQpIHsKICAgICAg
ICAgICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9i
amVjdEZvcktleTprZXldOwogICAgICAgICAgICAgZm9yIChpZCBvd25lZE9iamVjdCBpbiBvd25l
ZE9iamVjdHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hp
bmVJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNW
aXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDggKzQ1LDYgQEAKIC0gKEpTQ29udGV4dCAqKWNvbnRleHRGb3JHbG9iYWxDb250ZXh0
UmVmOihKU0dsb2JhbENvbnRleHRSZWYpZ2xvYmFsQ29udGV4dDsKIC0gKHZvaWQpYWRkQ29udGV4
dDooSlNDb250ZXh0ICopd3JhcHBlciBmb3JHbG9iYWxDb250ZXh0UmVmOihKU0dsb2JhbENvbnRl
eHRSZWYpZ2xvYmFsQ29udGV4dDsKIAotLSAoTlNNYXBUYWJsZSAqKWV4dGVybmFsT2JqZWN0R3Jh
cGg7Ci0KIEBlbmQKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRl
c3RzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01l
bW9yeU1hbmFnZW1lbnRUZXN0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorCisj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKwordm9pZCBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMo
KTsKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5t
bQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5
TWFuYWdlbWVudFRlc3RzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgiCisKKyNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAorCitleHRlcm4gIkMiIHZvaWQgY2hlY2tSZXN1bHQoTlNTdHJpbmcgKmRl
c2NyaXB0aW9uLCBib29sIHBhc3NlZCk7CisKK2V4dGVybiAiQyIgdm9pZCBKU1N5bmNocm9ub3Vz
R2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKK2V4dGVybiAiQyIgdm9p
ZCBKU1N5bmNocm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoSlNDb250ZXh0UmVmKTsKKwor
QGludGVyZmFjZSBPcGFxdWVPYmpDT2JqZWN0IDogTlNPYmplY3QKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIE9wYXF1ZU9iakNPYmplY3QKKysgKE9wYXF1ZU9iakNPYmplY3QgKilvcGFxdWVPYmpl
Y3QKK3sKKyAgICByZXR1cm4gW1tzZWxmIGFsbG9jXSBpbml0XTsKK30KKworLSAoaW5zdGFuY2V0
eXBlKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0BlbmQKKworQGludGVyZmFj
ZSBKU0NvbGxlY3Rpb24gOiBOU09iamVjdAorLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZh
bHVlIGZvcktleTooTlNTdHJpbmcgKilrZXk7CistIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5T
U3RyaW5nICopa2V5OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNDb2xsZWN0aW9uIHsKKyAg
ICBOU011dGFibGVEaWN0aW9uYXJ5ICpfZGljdDsKK30KKy0gKGlkKWluaXQKK3sKKyAgICBzZWxm
ID0gW3N1cGVyIGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKKyAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAg
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1
ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm9sZE1hbmFn
ZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAob2xkTWFuYWdlZFZh
bHVlKSB7CisgICAgICAgIEpTVmFsdWUqIG9sZFZhbHVlID0gW29sZE1hbmFnZWRWYWx1ZSB2YWx1
ZV07CisgICAgICAgIGlmIChvbGRWYWx1ZSkKKyAgICAgICAgICAgIFtvbGRWYWx1ZS5jb250ZXh0
LnZpcnR1YWxNYWNoaW5lIHJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6b2xkTWFuYWdlZFZhbHVlIHdp
dGhPd25lcjpzZWxmXTsKKyAgICB9CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9
IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOworICAgIFt2YWx1
ZS5jb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZFZhbHVl
IHdpdGhPd25lcjpzZWxmXTsKKyAgICBbX2RpY3Qgc2V0T2JqZWN0Om1hbmFnZWRWYWx1ZSBmb3JL
ZXk6a2V5XTsKK30KKworLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAqKWtleQor
eworICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkVmFsdWUgPSBbX2RpY3Qgb2JqZWN0Rm9yS2V5
OmtleV07CisgICAgaWYgKCFtYW5hZ2VkVmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuIFttYW5hZ2VkVmFsdWUgdmFsdWVdOworfQorQGVuZAorCitAcHJvdG9jb2wgQ2xpY2th
YmxlRXhwb3J0cyA8SlNFeHBvcnQ+CitAcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqb25jbGlj
azsKK0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICp3ZWFrT25jbGljazsKK0BlbmQKKworQGlu
dGVyZmFjZSBDbGlja2FibGUgOiBOU09iamVjdDxDbGlja2FibGVFeHBvcnRzPgorLSAodm9pZClj
bGljazsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIENsaWNrYWJsZSB7CisgICAgSlNNYW5hZ2Vk
VmFsdWUgKm1fd2Vha09uY2xpY2tIYW5kbGVyOworICAgIEpTTWFuYWdlZFZhbHVlICptX29uY2xp
Y2tIYW5kbGVyOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNlbGYgPSBbc3Vw
ZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVy
biBzZWxmOworfQorCistICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKK3sK
KyAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVX
aXRoVmFsdWU6dmFsdWVdOworfQorLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUK
K3sKKyAgICBtX29uY2xpY2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdp
dGhWYWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFu
YWdlZFJlZmVyZW5jZTptX29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKK30KKy0gKEpT
VmFsdWUgKil3ZWFrT25jbGljaworeworICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIg
dmFsdWVdOworfQorLSAoSlNWYWx1ZSAqKW9uY2xpY2sKK3sKKyAgICByZXR1cm4gW21fb25jbGlj
a0hhbmRsZXIgdmFsdWVdOworfQorLSAodm9pZCljbGljaworeworICAgIGlmICghbV9vbmNsaWNr
SGFuZGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgKmZ1bmN0aW9uID0g
W21fb25jbGlja0hhbmRsZXIgdmFsdWVdOworICAgIFtmdW5jdGlvbiBjYWxsV2l0aEFyZ3VtZW50
czpbTlNBcnJheSBhcnJheV1dOworfQorQGVuZAorCitAaW50ZXJmYWNlIE1lbW9yeU1hbmFnZW1l
bnRUZXN0cyA6IE5TT2JqZWN0CisrICh2b2lkKW1hbmFnZWRWYWx1ZVNhbml0eVRlc3Q7CisrICh2
b2lkKWF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdDsKKysgKHZvaWQp
YmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0OworKyAodm9pZClzY2FuRXh0ZXJuYWxPYmplY3RHcmFw
aER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdDsKKysgKHZvaWQpZGlzYXBwZWFyaW5nVmlydHVhbE1h
Y2hpbmVXcmFwcGVyVGVzdDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIE1lbW9yeU1hbmFnZW1l
bnRUZXN0cworKyAodm9pZCltYW5hZ2VkVmFsdWVTYW5pdHlUZXN0Cit7CisgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9j
XSBpbml0XTsKKyAgICAgICAgQ2xpY2thYmxlICpjbGlja2FibGUgPSBbW0NsaWNrYWJsZSBhbGxv
Y10gaW5pdF07CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
ICAgIGNvbnRleHRbQCJjbGlja2FibGUiXSA9IGNsaWNrYWJsZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAorICAgICAgICAgICAgICAgIGRp
ZENsaWNrID0gZmFsc2U7IFwKKyAgICAgICAgICAgICAgICBjbGlja2FibGUub25jbGljayA9IGZ1
bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSB0cnVlOyBcCisgICAgICAg
ICAgICAgICAgfTsgXAorICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBjbGlja2Fi
bGUud2Vha09uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAorICAgICAgICAgICAgICAgIHJldHVybiAn
Zm9vJzsgXAorICAgICAgICAgICAgICAgIH07IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlj
a2FibGUgY2xpY2tdOworICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVu
dCBoYW5kbGVyIG9uY2xpY2siLCBbcmVzdWx0IHRvQm9vbF0pOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2Ny
aXB0OkAiY2xpY2thYmxlLm9uY2xpY2siXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAib25j
bGljayBzdGlsbCBhcm91bmQgYWZ0ZXIgR0MiLCAhKFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0
IGlzVW5kZWZpbmVkXSkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4
dCBldmFsdWF0ZVNjcmlwdDpAImNsaWNrYWJsZS53ZWFrT25jbGljayJdOworICAgICAgICAgICAg
Y2hlY2tSZXN1bHQoQCJ3ZWFrT25jbGljayBub3QgYXJvdW5kIGFmdGVyIEdDIiwgW3Jlc3VsdCBp
c051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBbY29udGV4dCBldmFsdWF0ZVNj
cmlwdDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAorICAgICAgICAg
ICAgICAgIGNsaWNrYWJsZSA9IG51bGw7IFwKKyAgICAgICAgICAgICJdOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmco
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgIAorICAgICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgICAgIFtjbGlja2FibGUgY2xpY2tdOworICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwor
ICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBm
aXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQp
YXZvaWRNb2RpZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0Cit7CisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFs
bG9jXSBpbml0XTsKKyAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0
aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgIE9wYXF1ZU9iakNP
YmplY3QgKnJvb3RPYmplY3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAg
ICAgICBKU0NvbGxlY3Rpb24gKmNvbGxlY3Rpb24gPSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5p
dF07CisgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ29sbGVjdGlvbiA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE9iamVjdDpjb2xsZWN0aW9uIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAg
ICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrQ29sbGVjdGlvbiA9IFtKU01hbmFnZWRWYWx1ZSBt
YW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDb2xsZWN0aW9uIGFuZE93bmVyOnJvb3RPYmplY3RdOwor
ICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3
ZWFrQ29sbGVjdGlvbiB3aXRoT3duZXI6bWVzc2FnZV07CisgICAgICAgICAgICBKU1N5bmNocm9u
b3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKysgKHZvaWQpYmFnT2ZKU01hbmFnZWRWYWx1ZXNU
ZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29sbGVjdGlvbiogbXlQ
cml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3
IEpTQ29udGV4dCBhbmQgZ2l2ZSBpdCBhIHJvb3Qgb2JqZWN0IHRoYXQgd2lsbCBvd24gdGhlIGJh
ZyBvZiBKU01hbmFnZWRWYWx1ZXMuCisgICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBb
W0pTQ29udGV4dCBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpy
b290T2JqZWN0ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAg
IGNvbnRleHRbQCJyb290Il0gPSByb290T2JqZWN0OworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBBZGQgYSBidW5jaCBvZiBwcm9wZXJ0aWVzIHRvIHRoZSBiYWcgb2YgSlNNYW5hZ2VkVmFs
dWVzLgorICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVy
ZW5jZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25lcjpyb290T2JqZWN0XTsKKyAgICAgICAg
ICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEJvb2w6
dHJ1ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFtIl07CisgICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJo
ZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAg
ICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0
MiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlfbnVtYmVyIl07CisgICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhOdWxsSW5Db250
ZXh0OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOworICAgICAgICAgICAgW215
UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5D
b250ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dp
bmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBwcm9wZXJ0aWVzIGFyZSBzdGlsbCBwcmVzZW50IGFmdGVyIGEgZnVs
bCBjb2xsZWN0aW9uLgorICAgICAgICAgICAgSlNWYWx1ZSAqaXNIYW0gPSBbbXlQcml2YXRlUHJv
cGVydGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdOworICAgICAgICAgICAgSlNWYWx1ZSAqbWVz
c2FnZSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibWVzc2FnZSJdOworICAg
ICAgICAgICAgSlNWYWx1ZSAqbXlOdW1iZXIgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZv
cktleTpAIm15X251bWJlciJdOworICAgICAgICAgICAgSlNWYWx1ZSAqZGVmaW5pdGVseU51bGwg
PSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdOwor
ICAgICAgICAgICAgSlNWYWx1ZSAqbm90U3VyZUlmVW5kZWZpbmVkID0gW215UHJpdmF0ZVByb3Bl
cnRpZXMgdmFsdWVGb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKKyAgICAgICAgICAg
IGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIHRydWUiLCBbaXNIYW0gaXNCb29sZWFuXSAmJiBbaXNI
YW0gdG9Cb29sXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm1lc3NhZ2UgaXMgaGVsbG8h
IiwgW21lc3NhZ2UgaXNTdHJpbmddICYmIFtAImhlbGxvISIgaXNFcXVhbFRvU3RyaW5nOlttZXNz
YWdlIHRvU3RyaW5nXV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJteV9udW1iZXIgaXMg
NDIiLCBbbXlOdW1iZXIgaXNOdW1iZXJdICYmIFtteU51bWJlciB0b0ludDMyXSA9PSA0Mik7Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRlbHlfbnVsbCBpcyBudWxsIiwgW2RlZmlu
aXRlbHlOdWxsIGlzTnVsbF0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9p
Zl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgW25vdFN1cmVJZlVuZGVmaW5lZCBpc1VuZGVmaW5l
ZF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdGhhdCB0aGUgSlNDb250
ZXh0IGhhcyBkaXNhcHBlYXJlZCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgSlNNYW5hZ2VkVmFsdWVz
IGhhdmUgYmVlbiBjbGVhcmVkLgorICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBuaWwi
LCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7CisgICAgICAg
IGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFs
dWVGb3JLZXk6QCJtZXNzYWdlIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBp
cyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXSk7
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG5pbCIsICFbbXlQcml2
YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKKyAgICAgICAg
Y2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgbmlsIiwgIVtteVByaXZhdGVQ
cm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0pOworICAgIH0K
K30KKworCisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rp
b25UZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29u
dGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAgCisgICAgICAgIC8vIENy
ZWF0ZSB0aGUgcm9vdCwgbWFrZSBpdCByZWFjaGFibGUgZnJvbSBKUywgYW5kIGZvcmNlIGFuIEVk
ZW5Db2xsZWN0aW9uCisgICAgICAgIC8vIHNvIHRoYXQgd2Ugc2NhbiB0aGUgZXh0ZXJuYWwgb2Jq
ZWN0IGdyYXBoLgorICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNP
YmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAg
ICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdDsKKyAgICAgICAgfQorICAgICAgICBKU1N5bmNo
cm9ub3VzRWRlbkNvbGxlY3RGb3JEZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVm
XSk7CisgICAgICAgIAorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkg
cmVhY2hhYmxlIHZpYSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoCisgICAgICAgIC8vIHRocm91
Z2ggdGhlIG9iamVjdCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlv
bi4KKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqY2hpbGQgPSBbT3BhcXVlT2JqQ09iamVjdCBv
cGFxdWVPYmplY3RdOworICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2Vk
UmVmZXJlbmNlOmNoaWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgCisgICAgICAgIC8vIENy
ZWF0ZSBhIG5ldyBtYW5hZ2VkIEpTVmFsdWUgdGhhdCB3aWxsIG9ubHkgYmUga2VwdCBhbGl2ZSBp
ZiB3ZSBwcm9wZXJseSByZXNjYW4KKyAgICAgICAgLy8gdGhlIGV4dGVybmFsIG9iamVjdCBncmFw
aC4KKyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRKU09iamVjdCA9IG5pbDsKKyAgICAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU1ZhbHVlICpqc09iamVjdCA9IFtK
U1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvIiBpbkNvbnRleHQ6Y29udGV4dF07CisgICAg
ICAgICAgICBtYW5hZ2VkSlNPYmplY3QgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0
aFZhbHVlOmpzT2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFk
ZE1hbmFnZWRSZWZlcmVuY2U6bWFuYWdlZEpTT2JqZWN0IHdpdGhPd25lcjpjaGlsZF07CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24u
IEl0IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3Jh
cGguCisgICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIC8vIENoZWNrIHRoYXQg
dGhlIG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KKyAgICAgICAgY2hlY2tSZXN1bHQo
QCJFZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21h
bmFnZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKKyAgICB9Cit9CisKKysgKHZvaWQpZGlzYXBw
ZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdAoreworICAgIEBhdXRvcmVsZWFzZXBvb2wg
eworICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpjaGlsZCA9IG5pbDsKKyAgICAgICAgSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSAwOworICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFu
YWdlZENoaWxkID0gbmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKKyAgICAgICAg
ICAgIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOworICAgICAgICAg
ICAgSlNHbG9iYWxDb250ZXh0UmV0YWluKGNvbnRleHRSZWYpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBPcGFxdWVPYmpDT2JqZWN0ICpyb290ID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVl
T2JqZWN0XTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290OworICAgICAgICAg
ICAgCisgICAgICAgICAgICBjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07
CisgICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNl
OmNoaWxkIHdpdGhPd25lcjpyb290XTsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQgPSBb
SlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y2hpbGQgaW5Db250ZXh0OmNvbnRleHRdOworICAgICAg
ICAgICAganNDaGlsZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gPSBAImZvbyI7CisgICAgICAgICAg
ICBtYW5hZ2VkQ2hpbGQgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpz
Q2hpbGRdOworICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJl
ZmVyZW5jZTptYW5hZ2VkQ2hpbGQgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKGNvbnRl
eHRSZWYpOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAg
ICBKU1ZhbHVlICpqc0NoaWxkID0gW21hbmFnZWRDaGlsZCB2YWx1ZV07CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChAImNoaWxkIGhhcyBteVNwZWNpYWxQcm9wZXJ0eSBldmVuIHdoZW4gSlNWaXJ0
dWFsTWFjaGluZSBkaXNhcHBlYXJzIiwKKyAgICAgICAgICAgICAgICBbW2pzQ2hpbGRbQCJteVNw
ZWNpYWxQcm9wZXJ0eSJdIHRvU3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJmb28iXSk7CisgICAg
ICAgICAgICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKGNvbnRleHRSZWYpOworICAgICAgICB9Cisg
ICAgfQorfQorQGVuZAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpCit7CisgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgbWFuYWdl
ZFZhbHVlU2FuaXR5VGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYXZvaWRN
b2RpZnlpbmdOU01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0XTsKKyAgICAgICAgW01lbW9yeU1h
bmFnZW1lbnRUZXN0cyBiYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3RdOworICAgICAgICBbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIHNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rp
b25UZXN0XTsKKyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBkaXNhcHBlYXJpbmdWaXJ0
dWFsTWFjaGluZVdyYXBwZXJUZXN0XTsKKyAgICB9Cit9CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19B
UElfRU5BQkxFRApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBp
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5tbQkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0
cy90ZXN0YXBpLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0ICJD
dXJyZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdC5oIgogI2ltcG9ydCAiRGF0ZVRlc3RzLmgi
CiAjaW1wb3J0ICJKU0V4cG9ydFRlc3RzLmgiCisjaW1wb3J0ICJNZW1vcnlNYW5hZ2VtZW50VGVz
dHMuaCIKIAogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRl
YnVnZ2luZyhKU0NvbnRleHRSZWYpOwogZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVu
Q29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOwpAQCAtMTE3LDggKzExOCw2IEBACiAt
IChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcqKXN0cmluZzsKIEBwcm9wZXJ0eSBpbnQgeDsK
IEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OwotQHByb3BlcnR5IChhc3NpZ24pIEpTVmFsdWUg
Km9uY2xpY2s7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xpY2s7CiAtICh2
b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTI2LDEzICsxMjUsOSBA
QAogQHByb3BlcnR5IGludCB4OwogQHByb3BlcnR5IGludCB5OwogQHByb3BlcnR5IGludCB6Owot
LSAodm9pZCljbGljazsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFRleHRYWVogewotICAgIEpT
TWFuYWdlZFZhbHVlICptX3dlYWtPbmNsaWNrSGFuZGxlcjsKLSAgICBKU01hbmFnZWRWYWx1ZSAq
bV9vbmNsaWNrSGFuZGxlcjsKLX0KK0BpbXBsZW1lbnRhdGlvbiBUZXh0WFlaCiBAc3ludGhlc2l6
ZSB4OwogQHN5bnRoZXNpemUgeTsKIEBzeW50aGVzaXplIHo7CkBAIC0xNTAsMzIgKzE0NSw2IEBA
CiB7CiAgICAgdGVzdFhZWlRlc3RlZCA9IFttZXNzYWdlIGlzRXF1YWw6QCJ0ZXN0Il0gJiYgeCA9
PSAxMyAmIHkgPT0gNCAmJiB6ID09IDU7CiB9Ci0tICh2b2lkKXNldFdlYWtPbmNsaWNrOihKU1Zh
bHVlICopdmFsdWUKLXsKLSAgICBtX3dlYWtPbmNsaWNrSGFuZGxlciA9IFtKU01hbmFnZWRWYWx1
ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6dmFsdWVdOwotfQotCi0tICh2b2lkKXNldE9uY2xpY2s6
KEpTVmFsdWUgKil2YWx1ZQotewotICAgIG1fb25jbGlja0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFs
dWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKLSAgICBbdmFsdWUuY29udGV4dC52aXJ0
dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25jbGlja0hhbmRsZXIgd2l0aE93bmVy
OnNlbGZdOwotfQotLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNrCi17Ci0gICAgcmV0dXJuIFttX3dl
YWtPbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tIChKU1ZhbHVlICopb25jbGljawotewotICAg
IHJldHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Ci19Ci0tICh2b2lkKWNsaWNrCi17Ci0g
ICAgaWYgKCFtX29uY2xpY2tIYW5kbGVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU1ZhbHVl
ICpmdW5jdGlvbiA9IFttX29uY2xpY2tIYW5kbGVyIHZhbHVlXTsKLSAgICBbZnVuY3Rpb24gY2Fs
bFdpdGhBcmd1bWVudHM6W05TQXJyYXkgYXJyYXldXTsKLX0KIEBlbmQKIAogQGNsYXNzIFRpbnlE
T01Ob2RlOwpAQCAtMjM4LDQ3ICsyMDcsNiBAQAogCiBAZW5kCiAKLUBpbnRlcmZhY2UgSlNDb2xs
ZWN0aW9uIDogTlNPYmplY3QKLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2YWx1ZSBmb3JL
ZXk6KE5TU3RyaW5nICopa2V5OwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihOU1N0cmluZyAq
KWtleTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEpTQ29sbGVjdGlvbiB7Ci0gICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqX2RpY3Q7Ci19Ci0tIChpZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBl
ciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfZGlj
dCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0KLSAgICByZXR1cm4gc2Vs
ZjsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJp
bmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZhbHVlID0gW19kaWN0
IG9iamVjdEZvcktleTprZXldOwotICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUpIHsKLSAgICAgICAg
SlNWYWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsKLSAgICAgICAgaWYg
KG9sZFZhbHVlKQotICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUg
cmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOwot
ICAgIH0KLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pTTWFuYWdlZFZhbHVl
IG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Ci0gICAgW3ZhbHVlLmNvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZd
OwotICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTprZXldOwotfQotCi0t
IChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAgSlNNYW5hZ2Vk
VmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICBpZiAo
IW1hbmFnZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW21hbmFnZWRW
YWx1ZSB2YWx1ZV07Ci19Ci1AZW5kCi0KIEBwcm90b2NvbCBJbml0QSA8SlNFeHBvcnQ+CiAtIChp
ZClpbml0V2l0aEE6KGludClhOwogLSAoaW50KWluaXRpYWxpemU7CkBAIC01MTAsNTYgKzQzOCw3
IEBACiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29sbGVjdGlv
biogbXlQcml2YXRlUHJvcGVydGllcyA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKLQot
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgICAgIEpTQ29udGV4dCogY29udGV4
dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgICAgIFRlc3RPYmplY3QqIHJv
b3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgICAgIGNvbnRleHRb
QCJyb290Il0gPSByb290T2JqZWN0OwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hp
bmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpteVByaXZhdGVQcm9wZXJ0aWVzIHdpdGhPd25lcjpyb290
T2JqZWN0XTsKLSAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1Zh
bHVlIHZhbHVlV2l0aEJvb2w6dHJ1ZSBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAiaXNfaGFt
Il07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2
YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyEiIGluQ29udGV4dDpjb250ZXh0XSBmb3JLZXk6QCJtZXNz
YWdlIl07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1
ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibXlfbnVtYmVy
Il07Ci0gICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2
YWx1ZVdpdGhOdWxsSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImRlZmluaXRlbHlfbnVsbCJd
OwotICAgICAgICAgICAgW215UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFs
dWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAIm5vdF9zdXJlX2lmX3Vu
ZGVmaW5lZCJdOwotCi0gICAgICAgICAgICBKU1N5bmNocm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JE
ZWJ1Z2dpbmcoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0KLSAgICAgICAgICAgIEpT
VmFsdWUgKmlzSGFtID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0i
XTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm1lc3NhZ2UgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2
YWx1ZUZvcktleTpAIm1lc3NhZ2UiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm15TnVtYmVyID0g
W215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJteV9udW1iZXIiXTsKLSAgICAgICAg
ICAgIEpTVmFsdWUgKmRlZmluaXRlbHlOdWxsID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVG
b3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKm5vdFN1cmVJ
ZlVuZGVmaW5lZCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVf
aWZfdW5kZWZpbmVkIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyB0cnVl
IiwgW2lzSGFtIGlzQm9vbGVhbl0gJiYgW2lzSGFtIHRvQm9vbF0pOwotICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJtZXNzYWdlIGlzIGhlbGxvISIsIFttZXNzYWdlIGlzU3RyaW5nXSAmJiBbQCJo
ZWxsbyEiIGlzRXF1YWxUb1N0cmluZzpbbWVzc2FnZSB0b1N0cmluZ11dKTsKLSAgICAgICAgICAg
IGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgW215TnVtYmVyIGlzTnVtYmVyXSAmJiBb
bXlOdW1iZXIgdG9JbnQzMl0gPT0gNDIpOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZp
bml0ZWx5X251bGwgaXMgbnVsbCIsIFtkZWZpbml0ZWx5TnVsbCBpc051bGxdKTsKLSAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KEAibm90X3N1cmVfaWZfdW5kZWZpbmVkIGlzIHVuZGVmaW5lZCIsIFtu
b3RTdXJlSWZVbmRlZmluZWQgaXNVbmRlZmluZWRdKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNo
ZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZv
cktleTpAImlzX2hhbSJdKTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNzYWdlIGlzIG5pbCIs
ICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2UiXSk7Ci0gICAgICAg
IGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIDQyIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZh
bHVlRm9yS2V5OkAibXlfbnVtYmVyIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAImRlZmluaXRl
bHlfbnVsbCBpcyBudWxsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVm
aW5pdGVseV9udWxsIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lmX3VuZGVm
aW5lZCBpcyB1bmRlZmluZWQiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJu
b3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7Ci0gICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7
Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsK
LSAgICAgICAgSlNWYWx1ZSAqbWVzc2FnZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhl
bGxvIiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgIFRlc3RPYmplY3QgKnJvb3RPYmplY3Qg
PSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgSlNDb2xsZWN0aW9uICpjb2xsZWN0
aW9uID0gW1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOwotICAgICAgICBjb250ZXh0W0Aicm9v
dCJdID0gcm9vdE9iamVjdDsKLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAg
ICBKU1ZhbHVlICpqc0NvbGxlY3Rpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6Y29sbGVj
dGlvbiBpbkNvbnRleHQ6Y29udGV4dF07Ci0gICAgICAgICAgICBKU01hbmFnZWRWYWx1ZSAqd2Vh
a0NvbGxlY3Rpb24gPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOmpzQ29s
bGVjdGlvbiBhbmRPd25lcjpyb290T2JqZWN0XTsKLSAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1
YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6d2Vha0NvbGxlY3Rpb24gd2l0aE93bmVyOm1l
c3NhZ2VdOwotICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdn
aW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlND
b250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgX19ibG9jayBpbnQgcmVzdWx0OwogICAgICAg
ICBjb250ZXh0W0AiYmxvY2tDYWxsYmFjayJdID0gXihpbnQgdmFsdWUpewogICAgICAgICAgICAg
cmVzdWx0ID0gdmFsdWU7CkBAIC05NzcsNjAgKzg1Niw2IEBACiAgICAgfQogCiAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFs
bG9jXSBpbml0XTsKLSAgICAgICAgVGV4dFhZWiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10g
aW5pdF07Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0
W0AidGVzdFhZWiJdID0gdGVzdFhZWjsKLQotICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVT
Y3JpcHQ6QCIgXAotICAgICAgICAgICAgICAgIGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAg
ICAgICAgICB0ZXN0WFlaLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgXAotICAgICAgICAgICAgICAg
ICAgICBkaWRDbGljayA9IHRydWU7IFwKLSAgICAgICAgICAgICAgICB9OyBcCi0gICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaLndlYWtPbmNsaWNrID0gZnVuY3Rpb24o
KSB7IFwKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdmb28nOyBcCi0gICAgICAgICAgICAg
ICAgfTsgXAotICAgICAgICAgICAgIl07Ci0gICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQgaGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jv
b2xdKTsKLSAgICAgICAgfQotCi0gICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2
YWx1YXRlU2NyaXB0OkAidGVzdFhZWi5vbmNsaWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3Vs
dChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFmdGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwg
W3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0
ZVNjcmlwdDpAInRlc3RYWVoud2Vha09uY2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0
KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBhZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBb
cmVzdWx0IGlzVW5kZWZpbmVkXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKLSAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCi0gICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51
bGw7IFwKLSAgICAgICAgICAgICJdOwotICAgICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91
c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0p
OwotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xp
Y2tdOwotICAgICAgICAgICAgSlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3Jp
cHQ6QCJkaWRDbGljayJdOwotICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVy
IG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29sIHsKICAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAq
dm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdOwogICAgICAgICBUZXN0T2JqZWN0
ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CiAgICAgICAgIEpTTWFuYWdl
ZFZhbHVlICp3ZWFrVmFsdWU7CkBAIC0xMzI3LDQxICsxMTUyLDEwIEBACiAgICAgICAgIFtbSlNW
YWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gdG9BcnJheV07CiAgICAg
fQogCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHJvb3Qs
IG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBmb3JjZSBhbiBFZGVuQ29sbGVjdGlvbgot
ICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KLSAg
ICAgICAgVGVzdE9iamVjdCAqcm9vdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwotICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRleHRbQCJyb290Il0gPSByb290
OwotICAgICAgICB9Ci0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2lu
ZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBu
ZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdy
YXBoCi0gICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVjdCB3ZSBhbHJlYWR5IHNjYW5uZWQgZHVy
aW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KLSAgICAgICAgVGVzdE9iamVjdCAqY2hpbGQgPSBbVGVz
dE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRk
TWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07Ci0KLSAgICAgICAgLy8gQ3Jl
YXRlIGEgbmV3IG1hbmFnZWQgSlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBrZXB0IGFsaXZlIGlm
IHdlIHByb3Blcmx5IHJlc2NhbgotICAgICAgICAvLyB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBo
LgotICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0gbmlsOwotICAgICAg
ICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpzT2JqZWN0ID0gW0pT
VmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250ZXh0XTsKLSAgICAg
ICAgICAgIG1hbmFnZWRKU09iamVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRo
VmFsdWU6anNPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRk
TWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNoaWxkXTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rpb24uIEl0IHNob3Vs
ZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCi0gICAg
ICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIG1hbmFn
ZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KLSAgICAgICAgY2hlY2tSZXN1bHQoQCJFZGVuQ29s
bGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwgW21hbmFnZWRKU09i
amVjdCB2YWx1ZV0gIT0gbmlsKTsKLSAgICB9Ci0KICAgICBjdXJyZW50VGhpc0luc2lkZUJsb2Nr
R2V0dGVyVGVzdCgpOwogICAgIHJ1bkRhdGVUZXN0cygpOwogICAgIHJ1bkpTRXhwb3J0VGVzdHMo
KTsKKyAgICBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKIH0KIAogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE0LTA0
LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4dGVybmFsIG9i
amVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBleHRlcm5hbCBy
ZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJpbmcgCisgICAg
ICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNzIG9mIEFQSS1y
ZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAgICAgcHJvcGVy
IHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGljaCB3ZXJlIGVw
aGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMgdGhlIHNpdHVh
dGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQgYnV0IHRoZSBW
TSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVzdCB3YXkgdG8g
ZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8gYWxsb3cgCisg
ICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVhbGxvY2F0ZWQu
CisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9yIG1lbW9yeS1t
YW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRoZSAKKyAgICAg
ICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmlsZSBzaW5jZSB0
ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxlZC4KKworICAg
ICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1ZpcnR1YWxNYWNo
aW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29udGV4dEdyb3Vw
UmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6XSk6CisgICAg
ICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRoT3duZXI6XSk6
CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6CisgICAgICAgIChz
Y2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBl
eHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmlydHVhbE1hY2hp
bmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICogQVBJL0pTVmly
dHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1vcnlNYW5hZ2Vt
ZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRU
ZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0
XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAgICAoLVtKU0Nv
bGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFsdWU6Zm9yS2V5
Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6CisgICAgICAgICgt
W0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFrT25jbGljazpd
KToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAgICgtW0NsaWNr
YWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlja10pOgorICAg
ICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFuYWdlbWVudFRl
c3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5TWFuYWdlbWVu
dFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVzdF0pOgorICAg
ICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1ZXNUZXN0XSk6
CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxPYmplY3RHcmFw
aER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50
VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgorICAgICAgICAo
cnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5t
bToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9iamVjdGl2ZUNB
UEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRY
WVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBvbmNsaWNrXSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xsZWN0aW9u
IHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIHZh
bHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNC0wNC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgREZH
OjpXb3JrbGlzdCBzaG91bGQgYWNxdWlyZSB0aGUgbV9sb2NrIGJlZm9yZSBpdGVyYXRpbmcgREZH
IHBsYW5zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0ph
dmFTY3JpcHRDb3JlL0FQSURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvSmF2YVNjcmlwdENvcmUvQVBJRGF0YS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRD
b3JlL0FQSURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaD4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvagkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNzg3LDYgKzc4Nyw3IEBACiAgIDxJdGVtR3JvdXA+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxBUElcQVBJQ2FsbGJhY2tGdW5jdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhc3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XEFQSVxBUElEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSmF2YVNj
cmlwdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHRDb3Jl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0
LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAxNjc2OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtp
bmcgY29weSkKQEAgLTEzNzYsNiArMTM3Niw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxBUElcQVBJQ2FzdC5oIj4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxBUElcQVBJRGF0YS5oIj4KKyAgICAg
IDxGaWx0ZXI+QVBJPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxBUElcSmF2YVNjcmlwdC5oIj4KICAgICAgIDxGaWx0ZXI+QVBJPC9GaWx0ZXI+
CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24g
MTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
Y29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKIG1rZGlyICIl
UHVibGljSGVhZGVyc0RpcmVjdG9yeSUiIDI+TlVMDQogZm9yICUlZiBpbiAoDQogICAgIEFQSUNh
c3QuaA0KKyAgICBBUElEYXRhLmgNCiAgICAgQVBJU2hpbXMuaA0KICAgICBKU0Jhc2UuaA0KICAg
ICBKU0NsYXNzUmVmLmgNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2NTYsNiArMTY1Niw3IEBA
CiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2
NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3
NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0
MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAv
KiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CisJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBB
UElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAv
KiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3Bw
ICovOyB9OwogCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYx
Q0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNUQ3MDlCMTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSAqLzsg
fTsKQEAgLTE2NjUsNiArMTY2Niw3IEBACiAJCUMyODMxOTAwMTZGRTRCN0QwMDE1N0JGRCAvKiBI
YW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI4MzE5MDIxNkZFNTMzRTAw
MTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE5MDExNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJs
b2NrSW5saW5lcy5oICovOyB9OwogCQlDMjg4QjJERTE4QTU0RDNFMDA3QkU0MEIgLyogRGF0ZVRl
c3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4
OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5tbSAqLzsgfTsKKwkJQzI5MzJBNTUx
OTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5
QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi87IH07CiAJCUMyOTgxRkQ4MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8q
IERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi87IH07CiAJCUMyOTgxRkQ5MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBE
RkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlDMjk4MUZEQzE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJl
ZFdyaXRlQmFycmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI5ODFGREExN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJp
ZXJzLmNwcCAqLzsgfTsKQEAgLTMyNDIsNiArMzI0NCw3IEBACiAJCUMyMjM5RDE2MTYyNjJCREQw
MDVBQzVGRCAvKiBHQ1RocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
Q1RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjI1NDk0MjE1RjdEQkFB
MDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2xvdFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTRE
QiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
ZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVENzA5OTE2
REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBKU01hbmFnZWRWYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTMyNTIsNiArMzI1NSw4IEBACiAJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JG
RCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGFuZGxlQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
ODhCMkRDMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRGF0ZVRlc3RzLmg7IHBhdGggPSBBUEkvdGVzdHMvRGF0ZVRlc3RzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODhCMkREMThBNTREM0UwMDdCRTQwQiAv
KiBEYXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBE
YXRlVGVzdHMubW07IHBhdGggPSBBUEkvdGVzdHMvRGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjkzMkE1MzE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdl
bWVudFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE1lbW9yeU1hbmFn
ZW1lbnRUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjkzMkE1NDE5MDVCNUU3MDBFN0EzOUIgLyog
TWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tOyBwYXRoID0gQVBJL3Rlc3RzL01lbW9y
eU1hbmFnZW1lbnRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI5ODFG
RDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
Y3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkQ3MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVk
V2Vha1JlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRGVz
aXJlZFdlYWtSZWZlcmVuY2VzLmg7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2Vz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkRBMTdCQUZGNDQwMEEzQkM5
OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHA7IHBhdGggPSBkZmcvREZH
RGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MzY5OCw2ICszNzAzLDggQEAKIAkJCQkxNEQ4NTc3NDBBNDY5NkM4MDAzMjE0NkMgLyogdGVzdGFw
aS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSAqLywK
IAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVzdFJlZ0V4cC5jcHAgKi8sCisJCQkJ
QzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oICovLAor
CQkJCUMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0g
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IHRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTM5OTIsNiArMzk5OSw3IEBACiAJCQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9w
YXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJCQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3Bh
cXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0
QXZhaWxhYmlsaXR5LmggKi8sCisJCQkJQzI0OEY2OEMxOTA1RDczQzAwNzBBMkIxIC8qIEFQSURh
dGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTU0ODMsNiArNTQ5MSw3IEBACiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8q
IEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkQzQjJDNDEwMTU2QkRFMDAy
ODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTg0MDMyMDE4QkZG
QkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNDhG
NjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQUFC
Q0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovLApAQCAtNjc4MSw2ICs2NzkwLDcgQEAKIAkJCQlDMjE4MUZDMjE4QTk0OEZCMDAy
NUEyMzUgLyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE0NDBGNjEwMEE0
Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNlcyAqLywKIAkJCQk4NkQyMjIxQTE2
N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUMyOTMyQTU1
MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTY3NjkzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQAogI2luY2x1ZGUgIldhdGNoZG9nLmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2lu
dC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
UElEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVyQWxsb2NhdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUxMCw2ICs1
MTEsOCBAQAogICAgICAgICAKICAgICAgICAgQnVpbHRpbkV4ZWN1dGFibGVzKiBidWlsdGluRXhl
Y3V0YWJsZXMoKSB7IHJldHVybiBtX2J1aWx0aW5FeGVjdXRhYmxlcy5nZXQoKTsgfQogCisgICAg
ICAgIEFQSURhdGEgYXBpRGF0YTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDbGVhckV4Y2Vw
dGlvblNjb3BlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229946</attachid>
            <date>2014-04-22 19:42:16 -0700</date>
            <delta_ts>2016-09-17 07:16:24 -0700</delta_ts>
            <desc>will be judged</desc>
            <filename>bug-131691-20140422194156.patch</filename>
            <type>text/plain</type>
            <size>56193</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDE0LTA0LTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSBjb3VsZCBkaXNhcHBlYXIgYW5kIHRha2UgaXRzIGV4
dGVybmFsIG9iamVjdCBncmFwaCB3aXRoIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlZCB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoIGFuZCBl
eHRlcm5hbCByZW1lbWJlcmVkIHNldCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBhcmUgdXNlZCBkdXJp
bmcgCisgICAgICAgIGdhcmJhZ2UgY29sbGVjdGlvbiB0byBkZXRlcm1pbmUgdGhlIGxpdmVuZXNz
IG9mIEFQSS1yZWxhdGVkIG9iamVjdHMuIFRoZXkgYXJlIG5vdyBvd25lZCBieSBWTSAKKyAgICAg
ICAgcHJvcGVyIHJhdGhlciB0aGFuIEpTVmlydHVhbE1hY2hpbmUsIGluc3RhbmNlcyBvZiB3aGlj
aCB3ZXJlIGVwaGVtZXJhbC4gCisKKyAgICAgICAgQWRkZWQgYSB0ZXN0IHRoYXQgdHJpZ2dlcnMg
dGhlIHNpdHVhdGlvbiB3aGVyZSB0aGUgSlNWaXJ0dWFsTWFjaGluZSBoYXMgZGlzYXBwZWFyZWQg
YnV0IHRoZSBWTSBpcyAKKyAgICAgICAgc3RpbGwgYXJvdW5kIHRvIGRvIEdDLiBUaGUgZWFzaWVz
dCB3YXkgdG8gZG8gdGhpcyB3YXMgdG8ganVzdCBkcm9wIGRvd24gaW50byB0aGUgQyBBUEkgdG8g
YWxsb3cgCisgICAgICAgIHRoZSBPYmplY3RpdmUtQyB3cmFwcGVyIG9iamVjdHMgdG8gYmUgZGVh
bGxvY2F0ZWQuCisKKyAgICAgICAgQWxzbyBjcmVhdGVkIGEgbmV3IEFQSSB0ZXN0IGZpbGUgZm9y
IG1lbW9yeS1tYW5hZ2VtZW50LXJlbGF0ZWQgQVBJIHRlc3RzIGFuZCBtb3ZlZCBzb21lIG9mIHRo
ZSAKKyAgICAgICAgb2xkZXIgdGVzdHMgZnJvbSB0ZXN0YXBpLm1tIGludG8gdGhpcyBuZXcgZmls
ZSBzaW5jZSB0ZXN0YXBpLm1tIGlzIGdldHRpbmcgYSBsaXR0bGUgY3Jvd2RlZCBhbmQgbXVkZGxl
ZC4KKworICAgICAgICAqIEFQSS9BUElEYXRhLmg6IEFkZGVkLgorICAgICAgICAqIEFQSS9KU1Zp
cnR1YWxNYWNoaW5lLm1tOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGluaXRXaXRoQ29u
dGV4dEdyb3VwUmVmOl0pOgorICAgICAgICAoLVtKU1ZpcnR1YWxNYWNoaW5lIGRlYWxsb2NdKToK
KyAgICAgICAgKC1bSlNWaXJ0dWFsTWFjaGluZSBhZGRFeHRlcm5hbFJlbWVtYmVyZWRPYmplY3Q6
XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTp3aXRo
T3duZXI6XSk6CisgICAgICAgICgtW0pTVmlydHVhbE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVy
ZW5jZTp3aXRoT3duZXI6XSk6CisgICAgICAgIChzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaCk6Cisg
ICAgICAgIChzY2FuRXh0ZXJuYWxSZW1lbWJlcmVkU2V0KToKKyAgICAgICAgKC1bSlNWaXJ0dWFs
TWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXSk6IERlbGV0ZWQuCisgICAgICAgICgtW0pTVmly
dHVhbE1hY2hpbmUgZXh0ZXJuYWxSZW1lbWJlcmVkU2V0XSk6IERlbGV0ZWQuCisgICAgICAgICog
QVBJL0pTVmlydHVhbE1hY2hpbmVJbnRlcm5hbC5oOgorICAgICAgICAqIEFQSS90ZXN0cy9NZW1v
cnlNYW5hZ2VtZW50VGVzdHMuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL01lbW9yeU1h
bmFnZW1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICgrW09wYXF1ZU9iakNPYmplY3Qgb3Bh
cXVlT2JqZWN0XSk6CisgICAgICAgICgtW09wYXF1ZU9iakNPYmplY3QgaW5pdF0pOgorICAgICAg
ICAoLVtKU0NvbGxlY3Rpb24gaW5pdF0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gc2V0VmFs
dWU6Zm9yS2V5Ol0pOgorICAgICAgICAoLVtKU0NvbGxlY3Rpb24gdmFsdWVGb3JLZXk6XSk6Cisg
ICAgICAgICgtW0NsaWNrYWJsZSBpbml0XSk6CisgICAgICAgICgtW0NsaWNrYWJsZSBzZXRXZWFr
T25jbGljazpdKToKKyAgICAgICAgKC1bQ2xpY2thYmxlIHNldE9uY2xpY2s6XSk6CisgICAgICAg
ICgtW0NsaWNrYWJsZSB3ZWFrT25jbGlja10pOgorICAgICAgICAoLVtDbGlja2FibGUgb25jbGlj
a10pOgorICAgICAgICAoLVtDbGlja2FibGUgY2xpY2tdKToKKyAgICAgICAgKCtbTWVtb3J5TWFu
YWdlbWVudFRlc3RzIG1hbmFnZWRWYWx1ZVNhbml0eVRlc3RdKToKKyAgICAgICAgKCtbTWVtb3J5
TWFuYWdlbWVudFRlc3RzIGF2b2lkTW9kaWZ5aW5nTlNNYXBUYWJsZVdoaWxlSXRlcmF0aW5nVGVz
dF0pOgorICAgICAgICAoK1tNZW1vcnlNYW5hZ2VtZW50VGVzdHMgYmFnT2ZKU01hbmFnZWRWYWx1
ZXNUZXN0XSk6CisgICAgICAgICgrW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBzY2FuRXh0ZXJuYWxP
YmplY3RHcmFwaER1cmluZ0VkZW5Db2xsZWN0aW9uVGVzdF0pOgorICAgICAgICAoK1tNZW1vcnlN
YW5hZ2VtZW50VGVzdHMgZGlzYXBwZWFyaW5nVmlydHVhbE1hY2hpbmVXcmFwcGVyVGVzdF0pOgor
ICAgICAgICAocnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKToKKyAgICAgICAgKiBBUEkvdGVzdHMv
dGVzdGFwaS5tbToKKyAgICAgICAgKC1bVGV4dFhZWiB0ZXN0Ol0pOgorICAgICAgICAodGVzdE9i
amVjdGl2ZUNBUEkpOgorICAgICAgICAoLVtUZXh0WFlaIHNldFdlYWtPbmNsaWNrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXh0WFlaIHNldE9uY2xpY2s6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1RleHRYWVogd2Vha09uY2xpY2tdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGV4dFhZWiBv
bmNsaWNrXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1RleHRYWVogY2xpY2tdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bSlNDb2xsZWN0aW9uIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlND
b2xsZWN0aW9uIHNldFZhbHVlOmZvcktleTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSlNDb2xs
ZWN0aW9uIHZhbHVlRm9yS2V5Ol0pOiBEZWxldGVkLgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uaDoKKwogMjAxNC0wNC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgREZHOjpXb3JrbGlzdCBzaG91bGQgYWNxdWlyZSB0aGUgbV9sb2NrIGJlZm9yZSBpdGVy
YXRpbmcgREZHIHBsYW5zLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSURhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0NfQVBJRGF0
YV9oCisjZGVmaW5lIEpTQ19BUElEYXRhX2gKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
KyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitzdHJ1Y3QgQVBJRGF0YSB7CisgICAgUmV0YWlu
UHRyPENGVHlwZVJlZj4gZXh0ZXJuYWxPYmplY3RHcmFwaDsKKyAgICBSZXRhaW5QdHI8Q0ZUeXBl
UmVmPiBleHRlcm5hbFJlbWVtYmVyZWRTZXQ7Cit9OworCisjZWxzZQorCitzdHJ1Y3QgQVBJRGF0
YSB7IH07CisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRAorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEpTQ19BUElEYXRhX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmUubW0JKHJldmlzaW9uIDE2NzY5MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtODYsOCArODYsNiBAQCArIChKU1ZpcnR1YWxNYWNoaW5lICopd3JhcHBlckZvckpTQ29u
dGV4CiBAaW1wbGVtZW50YXRpb24gSlNWaXJ0dWFsTWFjaGluZSB7CiAgICAgSlNDb250ZXh0R3Jv
dXBSZWYgbV9ncm91cDsKICAgICBOU01hcFRhYmxlICptX2NvbnRleHRDYWNoZTsKLSAgICBOU01h
cFRhYmxlICptX2V4dGVybmFsT2JqZWN0R3JhcGg7Ci0gICAgTlNNYXBUYWJsZSAqbV9leHRlcm5h
bFJlbWVtYmVyZWRTZXQ7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0CkBAIC0xMTAsMTMgKzEw
OCwyMiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb250ZXh0R3JvdXBSZWY6CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyBrZXlPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3Bh
cXVlTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlUGVyc29uYWxpdHk7CiAgICAgTlNQ
b2ludGVyRnVuY3Rpb25zT3B0aW9ucyB2YWx1ZU9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNX
ZWFrTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CiAgICAgbV9j
b250ZXh0Q2FjaGUgPSBbW05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlP
cHRpb25zIHZhbHVlT3B0aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6MF07Ci0gICAgCi0gICAg
TlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rp
b25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OwotICAg
IE5TUG9pbnRlckZ1bmN0aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25zID0gTlNQb2ludGVyRnVu
Y3Rpb25zU3Ryb25nTWVtb3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7
Ci0gICAgbV9leHRlcm5hbE9iamVjdEdyYXBoID0gW1tOU01hcFRhYmxlIGFsbG9jXSBpbml0V2l0
aEtleU9wdGlvbnM6d2Vha0lET3B0aW9ucyB2YWx1ZU9wdGlvbnM6c3Ryb25nSURPcHRpb25zIGNh
cGFjaXR5OjBdOwogCi0gICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyBpbnRlZ2VyT3B0aW9u
cyA9IE5TUG9pbnRlckZ1bmN0aW9uc09wYXF1ZU1lbW9yeSB8IE5TUG9pbnRlckZ1bmN0aW9uc0lu
dGVnZXJQZXJzb25hbGl0eTsKLSAgICBtX2V4dGVybmFsUmVtZW1iZXJlZFNldCA9IFtbTlNNYXBU
YWJsZSBhbGxvY10gaW5pdFdpdGhLZXlPcHRpb25zOndlYWtJRE9wdGlvbnMgdmFsdWVPcHRpb25z
OmludGVnZXJPcHRpb25zIGNhcGFjaXR5OjBdOworICAgIEpTQzo6Vk0mIHZtID0gKnRvSlMobV9n
cm91cCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBpZiAoIXZtLmFw
aURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaCkgeworICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNP
cHRpb25zIHdlYWtJRE9wdGlvbnMgPSBOU1BvaW50ZXJGdW5jdGlvbnNXZWFrTWVtb3J5IHwgTlNQ
b2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CisgICAgICAgIE5TUG9pbnRlckZ1bmN0
aW9uc09wdGlvbnMgc3Ryb25nSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zU3Ryb25nTWVt
b3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zT2JqZWN0UGVyc29uYWxpdHk7CisgICAgICAgIHZtLmFw
aURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaCA9IGFkb3B0TlMoCisgICAgICAgICAgICBbW05TTWFw
VGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0aW9u
czpzdHJvbmdJRE9wdGlvbnMgY2FwYWNpdHk6MF0pOworICAgIH0KKworICAgIGlmICghdm0uYXBp
RGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQpIHsKKyAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25z
T3B0aW9ucyB3ZWFrSURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5T
UG9pbnRlckZ1bmN0aW9uc09iamVjdFBlcnNvbmFsaXR5OworICAgICAgICBOU1BvaW50ZXJGdW5j
dGlvbnNPcHRpb25zIGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVt
b3J5IHwgTlNQb2ludGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OworICAgICAgICB2bS5h
cGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IGFkb3B0TlMoCisgICAgICAgICAgICBbW05T
TWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVlT3B0
aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eTowXSk7CisgICAgfQogICAgCiAgICAgW0pTVk1X
cmFwcGVyQ2FjaGUgYWRkV3JhcHBlcjpzZWxmIGZvckpTQ29udGV4dEdyb3VwUmVmOmdyb3VwXTsK
ICAKQEAgLTEyNyw4ICsxMzQsNiBAQCAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBKU0NvbnRleHRH
cm91cFJlbGVhc2UobV9ncm91cCk7CiAgICAgW21fY29udGV4dENhY2hlIHJlbGVhc2VdOwotICAg
IFttX2V4dGVybmFsT2JqZWN0R3JhcGggcmVsZWFzZV07Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJl
cmVkU2V0IHJlbGVhc2VdOwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTU5LDcgKzE2
NCw4IEBAIC0gKGJvb2wpaXNPbGRFeHRlcm5hbE9iamVjdDooaWQpb2JqZWN0CiAtICh2b2lkKWFk
ZEV4dGVybmFsUmVtZW1iZXJlZE9iamVjdDooaWQpb2JqZWN0CiB7CiAgICAgQVNTRVJUKFtzZWxm
IGlzT2xkRXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSk7Ci0gICAgW21fZXh0ZXJuYWxSZW1lbWJlcmVk
U2V0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dHJ1ZV0gZm9yS2V5Om9iamVj
dF07CisgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gc3RhdGljX2Nhc3Q8
TlNNYXBUYWJsZSAqPih0b0pTKG1fZ3JvdXApLT5hcGlEYXRhLmV4dGVybmFsUmVtZW1iZXJlZFNl
dC5nZXQoKSk7CisgICAgW2V4dGVybmFsUmVtZW1iZXJlZFNldCBzZXRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhCb29sOnRydWVdIGZvcktleTpvYmplY3RdOwogfQogCiAtICh2b2lkKWFkZE1h
bmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3aXRoT3duZXI6KGlkKW93bmVyCkBAIC0xNzIsMTgg
KzE3OCwyMCBAQCAtICh2b2lkKWFkZE1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjdCB3CiAgICAg
CiAgICAgaWYgKCFvYmplY3QgfHwgIW93bmVyKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9ncm91cCkpOworCisgICAgSlNDOjpWTSYg
dm0gPSAqdG9KUyhtX2dyb3VwKTsgCisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsK
ICAgICBpZiAoW3NlbGYgaXNPbGRFeHRlcm5hbE9iamVjdDpvd25lcl0gJiYgIVtzZWxmIGlzT2xk
RXh0ZXJuYWxPYmplY3Q6b2JqZWN0XSkKICAgICAgICAgW3NlbGYgYWRkRXh0ZXJuYWxSZW1lbWJl
cmVkT2JqZWN0Om93bmVyXTsKLSAKLSAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbbV9l
eHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CisKKyAgICBOU01hcFRhYmxl
ICpleHRlcm5hbE9iamVjdEdyYXBoID0gc3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlE
YXRhLmV4dGVybmFsT2JqZWN0R3JhcGguZ2V0KCkpOworICAgIE5TTWFwVGFibGUgKm93bmVkT2Jq
ZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVjdEZvcktleTpvd25lcl07CiAgICAgaWYg
KCFvd25lZE9iamVjdHMpIHsKICAgICAgICAgTlNQb2ludGVyRnVuY3Rpb25zT3B0aW9ucyB3ZWFr
SURPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zV2Vha01lbW9yeSB8IE5TUG9pbnRlckZ1bmN0
aW9uc09iamVjdFBlcnNvbmFsaXR5OwogICAgICAgICBOU1BvaW50ZXJGdW5jdGlvbnNPcHRpb25z
IGludGVnZXJPcHRpb25zID0gTlNQb2ludGVyRnVuY3Rpb25zT3BhcXVlTWVtb3J5IHwgTlNQb2lu
dGVyRnVuY3Rpb25zSW50ZWdlclBlcnNvbmFsaXR5OwogICAgICAgICBvd25lZE9iamVjdHMgPSBb
W05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczp3ZWFrSURPcHRpb25zIHZhbHVl
T3B0aW9uczppbnRlZ2VyT3B0aW9ucyBjYXBhY2l0eToxXTsKIAotICAgICAgICBbbV9leHRlcm5h
bE9iamVjdEdyYXBoIHNldE9iamVjdDpvd25lZE9iamVjdHMgZm9yS2V5Om93bmVyXTsKKyAgICAg
ICAgW2V4dGVybmFsT2JqZWN0R3JhcGggc2V0T2JqZWN0Om93bmVkT2JqZWN0cyBmb3JLZXk6b3du
ZXJdOwogICAgICAgICBbb3duZWRPYmplY3RzIHJlbGVhc2VdOwogICAgIH0KIApAQCAtMjAyLDkg
KzIxMCwxMSBAQCAtICh2b2lkKXJlbW92ZU1hbmFnZWRSZWZlcmVuY2U6KGlkKW9iamVjCiAgICAg
aWYgKCFvYmplY3QgfHwgIW93bmVyKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKHRvSlMobV9ncm91cCkpOwotICAgIAotICAgIE5TTWFwVGFibGUg
Km93bmVkT2JqZWN0cyA9IFttX2V4dGVybmFsT2JqZWN0R3JhcGggb2JqZWN0Rm9yS2V5Om93bmVy
XTsKKyAgICBKU0M6OlZNJiB2bSA9ICp0b0pTKG1fZ3JvdXApOworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CisKKyAgICBOU01hcFRhYmxlICpleHRlcm5hbE9iamVjdEdyYXBoID0g
c3RhdGljX2Nhc3Q8TlNNYXBUYWJsZSAqPih2bS5hcGlEYXRhLmV4dGVybmFsT2JqZWN0R3JhcGgu
Z2V0KCkpOyAKKyAgICBOU01hcFRhYmxlICpvd25lZE9iamVjdHMgPSBbZXh0ZXJuYWxPYmplY3RH
cmFwaCBvYmplY3RGb3JLZXk6b3duZXJdOwogICAgIGlmICghb3duZWRPYmplY3RzKQogICAgICAg
ICByZXR1cm47CiAgICAKQEAgLTIxOCw4ICsyMjgsOCBAQCAtICh2b2lkKXJlbW92ZU1hbmFnZWRS
ZWZlcmVuY2U6KGlkKW9iamVjCiAgICAgICAgIE5TTWFwUmVtb3ZlKG93bmVkT2JqZWN0cywgb2Jq
ZWN0KTsKIAogICAgIGlmICghW293bmVkT2JqZWN0cyBjb3VudF0pIHsKLSAgICAgICAgW21fZXh0
ZXJuYWxPYmplY3RHcmFwaCByZW1vdmVPYmplY3RGb3JLZXk6b3duZXJdOwotICAgICAgICBbbV9l
eHRlcm5hbFJlbWVtYmVyZWRTZXQgcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICAgICAg
W2V4dGVybmFsT2JqZWN0R3JhcGggcmVtb3ZlT2JqZWN0Rm9yS2V5Om93bmVyXTsKKyAgICAgICAg
W3N0YXRpY19jYXN0PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRT
ZXQuZ2V0KCkpIHJlbW92ZU9iamVjdEZvcktleTpvd25lcl07CiAgICAgfQogfQogCkBAIC0yNTAs
MjUgKzI2MCwxMiBAQCAtICh2b2lkKWFkZENvbnRleHQ6KEpTQ29udGV4dCAqKXdyYXBwZXIgCiAg
ICAgTlNNYXBJbnNlcnQobV9jb250ZXh0Q2FjaGUsIGdsb2JhbENvbnRleHQsIHdyYXBwZXIpOwog
fQogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxPYmplY3RHcmFwaAotewotICAgIHJldHVybiBt
X2V4dGVybmFsT2JqZWN0R3JhcGg7Ci19Ci0KLS0gKE5TTWFwVGFibGUgKilleHRlcm5hbFJlbWVt
YmVyZWRTZXQKLXsKLSAgICByZXR1cm4gbV9leHRlcm5hbFJlbWVtYmVyZWRTZXQ7Ci19Ci0KIEBl
bmQKIAogdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2bSwgSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvciwgdm9pZCogcm9vdCkKIHsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
LSAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdmlydHVhbE1hY2hpbmUgPSBbSlNWTVdyYXBwZXJD
YWNoZSB3cmFwcGVyRm9ySlNDb250ZXh0R3JvdXBSZWY6dG9SZWYoJnZtKV07Ci0gICAgICAgIGlm
ICghdmlydHVhbE1hY2hpbmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIE5TTWFwVGFi
bGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBbdmlydHVhbE1hY2hpbmUgZXh0ZXJuYWxPYmplY3RH
cmFwaF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7
CiAgICAgICAgIFZlY3Rvcjx2b2lkKj4gc3RhY2s7CiAgICAgICAgIHN0YWNrLmFwcGVuZChyb290
KTsKICAgICAgICAgd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpIHsKQEAgLTI4OCwxMSArMjg1LDgg
QEAgdm9pZCBzY2FuRXh0ZXJuYWxPYmplY3RHcmFwaChKU0M6OlZNJiB2bQogdm9pZCBzY2FuRXh0
ZXJuYWxSZW1lbWJlcmVkU2V0KEpTQzo6Vk0mIHZtLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2
aXJ0dWFsTWFjaGluZSA9IFtKU1ZNV3JhcHBlckNhY2hlIHdyYXBwZXJGb3JKU0NvbnRleHRHcm91
cFJlZjp0b1JlZigmdm0pXTsKLSAgICAgICAgaWYgKCF2aXJ0dWFsTWFjaGluZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgTlNNYXBUYWJsZSAqZXh0ZXJuYWxPYmplY3RHcmFwaCA9IFt2
aXJ0dWFsTWFjaGluZSBleHRlcm5hbE9iamVjdEdyYXBoXTsKLSAgICAgICAgTlNNYXBUYWJsZSAq
ZXh0ZXJuYWxSZW1lbWJlcmVkU2V0ID0gW3ZpcnR1YWxNYWNoaW5lIGV4dGVybmFsUmVtZW1iZXJl
ZFNldF07CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsT2JqZWN0R3JhcGggPSBzdGF0aWNf
Y2FzdDxOU01hcFRhYmxlICo+KHZtLmFwaURhdGEuZXh0ZXJuYWxPYmplY3RHcmFwaC5nZXQoKSk7
CisgICAgICAgIE5TTWFwVGFibGUgKmV4dGVybmFsUmVtZW1iZXJlZFNldCA9IHN0YXRpY19jYXN0
PE5TTWFwVGFibGUgKj4odm0uYXBpRGF0YS5leHRlcm5hbFJlbWVtYmVyZWRTZXQuZ2V0KCkpOwog
ICAgICAgICBmb3IgKGlkIGtleSBpbiBleHRlcm5hbFJlbWVtYmVyZWRTZXQpIHsKICAgICAgICAg
ICAgIE5TTWFwVGFibGUgKm93bmVkT2JqZWN0cyA9IFtleHRlcm5hbE9iamVjdEdyYXBoIG9iamVj
dEZvcktleTprZXldOwogICAgICAgICAgICAgZm9yIChpZCBvd25lZE9iamVjdCBpbiBvd25lZE9i
amVjdHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmlydHVhbE1hY2hpbmVJ
bnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWaXJ0
dWFsTWFjaGluZUludGVybmFsLmgJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNWaXJ0dWFsTWFjaGluZUludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDggKzQ1LDYgQEAgSlNDb250ZXh0R3JvdXBSZWYgZ2V0R3JvdXBGcm9tVmlydHVhbE1hYwog
LSAoSlNDb250ZXh0ICopY29udGV4dEZvckdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4
dFJlZilnbG9iYWxDb250ZXh0OwogLSAodm9pZClhZGRDb250ZXh0OihKU0NvbnRleHQgKil3cmFw
cGVyIGZvckdsb2JhbENvbnRleHRSZWY6KEpTR2xvYmFsQ29udGV4dFJlZilnbG9iYWxDb250ZXh0
OwogCi0tIChOU01hcFRhYmxlICopZXh0ZXJuYWxPYmplY3RHcmFwaDsKLQogQGVuZAogI2VuZGlm
IC8vIGRlZmluZWQoX19PQkpDX18pCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
dGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3Rz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKKyNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAorCit2b2lkIHJ1bk1lbW9yeU1hbmFnZW1lbnRUZXN0cygpOworCisjZW5kaWYgLy8gSlND
X09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
TWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9NZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJN
ZW1vcnlNYW5hZ2VtZW50VGVzdHMuaCIKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK2V4
dGVybiAiQyIgdm9pZCBjaGVja1Jlc3VsdChOU1N0cmluZyAqZGVzY3JpcHRpb24sIGJvb2wgcGFz
c2VkKTsKKworZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRl
YnVnZ2luZyhKU0NvbnRleHRSZWYpOworZXh0ZXJuICJDIiB2b2lkIEpTU3luY2hyb25vdXNFZGVu
Q29sbGVjdEZvckRlYnVnZ2luZyhKU0NvbnRleHRSZWYpOworCitAaW50ZXJmYWNlIE9wYXF1ZU9i
akNPYmplY3QgOiBOU09iamVjdAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gT3BhcXVlT2JqQ09i
amVjdAorKyAoT3BhcXVlT2JqQ09iamVjdCAqKW9wYXF1ZU9iamVjdAoreworICAgIHJldHVybiBb
W3NlbGYgYWxsb2NdIGluaXRdOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOwor
ICAgIHJldHVybiBzZWxmOworfQorQGVuZAorCitAaW50ZXJmYWNlIEpTQ29sbGVjdGlvbiA6IE5T
T2JqZWN0CistICh2b2lkKXNldFZhbHVlOihKU1ZhbHVlICopdmFsdWUgZm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKKy0gKEpTVmFsdWUgKil2YWx1ZUZvcktleTooTlNTdHJpbmcgKilrZXk7CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBKU0NvbGxlY3Rpb24geworICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKl9kaWN0OworfQorLSAoaWQpaW5pdAoreworICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Cisg
ICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9kaWN0ID0gW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktleTooTlNTdHJpbmcg
KilrZXkKK3sKKyAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZhbHVlID0gW19kaWN0IG9i
amVjdEZvcktleTprZXldOworICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUpIHsKKyAgICAgICAgSlNW
YWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsKKyAgICAgICAgaWYgKG9s
ZFZhbHVlKQorICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgcmVt
b3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOworICAg
IH0KKyAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pTTWFuYWdlZFZhbHVlIG1h
bmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07CisgICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1h
Y2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0aE93bmVyOnNlbGZdOwor
ICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTprZXldOworfQorCistIChK
U1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Cit7CisgICAgSlNNYW5hZ2VkVmFs
dWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICBpZiAoIW1h
bmFnZWRWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gW21hbmFnZWRWYWx1
ZSB2YWx1ZV07Cit9CitAZW5kCisKK0Bwcm90b2NvbCBDbGlja2FibGVFeHBvcnRzIDxKU0V4cG9y
dD4KK0Bwcm9wZXJ0eSAoYXNzaWduKSBKU1ZhbHVlICpvbmNsaWNrOworQHByb3BlcnR5IChhc3Np
Z24pIEpTVmFsdWUgKndlYWtPbmNsaWNrOworQGVuZAorCitAaW50ZXJmYWNlIENsaWNrYWJsZSA6
IE5TT2JqZWN0PENsaWNrYWJsZUV4cG9ydHM+CistICh2b2lkKWNsaWNrOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gQ2xpY2thYmxlIHsKKyAgICBKU01hbmFnZWRWYWx1ZSAqbV93ZWFrT25jbGlj
a0hhbmRsZXI7CisgICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlja0hhbmRsZXI7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKKyAgICBpZiAo
IXNlbGYpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZv
aWQpc2V0V2Vha09uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fd2Vha09uY2xpY2tI
YW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Cit9
CistICh2b2lkKXNldE9uY2xpY2s6KEpTVmFsdWUgKil2YWx1ZQoreworICAgIG1fb25jbGlja0hh
bmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsKKyAg
ICBbdmFsdWUuY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1fb25j
bGlja0hhbmRsZXIgd2l0aE93bmVyOnNlbGZdOworfQorLSAoSlNWYWx1ZSAqKXdlYWtPbmNsaWNr
Cit7CisgICAgcmV0dXJuIFttX3dlYWtPbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9CistIChKU1Zh
bHVlICopb25jbGljaworeworICAgIHJldHVybiBbbV9vbmNsaWNrSGFuZGxlciB2YWx1ZV07Cit9
CistICh2b2lkKWNsaWNrCit7CisgICAgaWYgKCFtX29uY2xpY2tIYW5kbGVyKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2
YWx1ZV07CisgICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07
Cit9CitAZW5kCisKK0BpbnRlcmZhY2UgTWVtb3J5TWFuYWdlbWVudFRlc3RzIDogTlNPYmplY3QK
KysgKHZvaWQpbWFuYWdlZFZhbHVlU2FuaXR5VGVzdDsKKysgKHZvaWQpYXZvaWRNb2RpZnlpbmdO
U01hcFRhYmxlV2hpbGVJdGVyYXRpbmdUZXN0OworKyAodm9pZCliYWdPZkpTTWFuYWdlZFZhbHVl
c1Rlc3Q7CisrICh2b2lkKXNjYW5FeHRlcm5hbE9iamVjdEdyYXBoRHVyaW5nRWRlbkNvbGxlY3Rp
b25UZXN0OworKyAodm9pZClkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGluZVdyYXBwZXJUZXN0Owor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gTWVtb3J5TWFuYWdlbWVudFRlc3RzCisrICh2b2lkKW1h
bmFnZWRWYWx1ZVNhbml0eVRlc3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAg
SlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICBD
bGlja2FibGUgKmNsaWNrYWJsZSA9IFtbQ2xpY2thYmxlIGFsbG9jXSBpbml0XTsKKyAgICAgICAg
CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgY29udGV4dFtAImNsaWNr
YWJsZSJdID0gY2xpY2thYmxlOworICAgICAgICAgICAgCisgICAgICAgICAgICBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIiBcCisgICAgICAgICAgICAgICAgZGlkQ2xpY2sgPSBmYWxzZTsgXAor
ICAgICAgICAgICAgICAgIGNsaWNrYWJsZS5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKKyAgICAg
ICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKKyAgICAgICAgICAgICAgICB9OyBcCisgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGNsaWNrYWJsZS53ZWFrT25jbGljayA9IGZ1
bmN0aW9uKCkgeyBcCisgICAgICAgICAgICAgICAgcmV0dXJuICdmb28nOyBcCisgICAgICAgICAg
ICAgICAgfTsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgW2NsaWNrYWJsZSBjbGlja107CisgICAg
ICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENs
aWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayIs
IFtyZXN1bHQgdG9Cb29sXSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTU3luY2hy
b25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRS
ZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAg
SlNWYWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJjbGlja2FibGUub25j
bGljayJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJvbmNsaWNrIHN0aWxsIGFyb3VuZCBh
ZnRlciBHQyIsICEoW3Jlc3VsdCBpc051bGxdIHx8IFtyZXN1bHQgaXNVbmRlZmluZWRdKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAi
Y2xpY2thYmxlLndlYWtPbmNsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWtP
bmNsaWNrIG5vdCBhcm91bmQgYWZ0ZXIgR0MiLCBbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBp
c1VuZGVmaW5lZF0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKKyAgICAgICAgICAgIFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAiIFwKKyAgICAgICAg
ICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBcCisgICAgICAgICAgICAgICAgY2xpY2thYmxlID0g
bnVsbDsgXAorICAgICAgICAgICAgIl07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKKyAgICAgICAgCisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgW2NsaWNrYWJsZSBjbGlja107CisgICAgICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBb
Y29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRpZENsaWNrIl07CisgICAgICAgICAgICBjaGVja1Jl
c3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jv
b2xdKTsKKyAgICAgICAgfQorICAgIH0KK30KKworKyAodm9pZClhdm9pZE1vZGlmeWluZ05TTWFw
VGFibGVXaGlsZUl0ZXJhdGluZ1Rlc3QKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAg
ICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAg
ICBKU1ZhbHVlICptZXNzYWdlID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGlu
Q29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgT3BhcXVlT2JqQ09iamVjdCAqcm9vdE9iamVjdCA9
IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAgICAgIEpTQ29sbGVjdGlvbiAq
Y29sbGVjdGlvbiA9IFtbSlNDb2xsZWN0aW9uIGFsbG9jXSBpbml0XTsKKyAgICAgICAgY29udGV4
dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICAgICAgSlNWYWx1ZSAqanNDb2xsZWN0aW9uID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0
OmNvbGxlY3Rpb24gaW5Db250ZXh0OmNvbnRleHRdOworICAgICAgICAgICAgSlNNYW5hZ2VkVmFs
dWUgKndlYWtDb2xsZWN0aW9uID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1
ZTpqc0NvbGxlY3Rpb24gYW5kT3duZXI6cm9vdE9iamVjdF07CisgICAgICAgICAgICBbY29udGV4
dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOndlYWtDb2xsZWN0aW9uIHdpdGhP
d25lcjptZXNzYWdlXTsKKyAgICAgICAgICAgIEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworKyAodm9pZCliYWdPZkpTTWFuYWdlZFZhbHVlc1Rlc3QKK3sKKyAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb2xsZWN0aW9uKiBteVByaXZhdGVQcm9wZXJ0aWVzID0g
W1tKU0NvbGxlY3Rpb24gYWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7CisgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgSlNDb250ZXh0IGFuZCBnaXZl
IGl0IGEgcm9vdCBvYmplY3QgdGhhdCB3aWxsIG93biB0aGUgYmFnIG9mIEpTTWFuYWdlZFZhbHVl
cy4KKyAgICAgICAgICAgIEpTQ29udGV4dCogY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBp
bml0XTsKKyAgICAgICAgICAgIE9wYXF1ZU9iakNPYmplY3QgKnJvb3RPYmplY3QgPSBbT3BhcXVl
T2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICAgICAgY29udGV4dFtAInJvb3QiXSA9
IHJvb3RPYmplY3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEFkZCBhIGJ1bmNoIG9m
IHByb3BlcnRpZXMgdG8gdGhlIGJhZyBvZiBKU01hbmFnZWRWYWx1ZXMuCisgICAgICAgICAgICBb
Y29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm15UHJpdmF0ZVByb3Bl
cnRpZXMgd2l0aE93bmVyOnJvb3RPYmplY3RdOworICAgICAgICAgICAgW215UHJpdmF0ZVByb3Bl
cnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoQm9vbDp0cnVlIGluQ29udGV4dDpjb250
ZXh0XSBmb3JLZXk6QCJpc19oYW0iXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVz
IHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpAImhlbGxvISIgaW5Db250ZXh0OmNv
bnRleHRdIGZvcktleTpAIm1lc3NhZ2UiXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0
aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aEludDMyOjQyIGluQ29udGV4dDpjb250ZXh0
XSBmb3JLZXk6QCJteV9udW1iZXIiXTsKKyAgICAgICAgICAgIFtteVByaXZhdGVQcm9wZXJ0aWVz
IHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aE51bGxJbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5
OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAgICAgICBbbXlQcml2YXRlUHJvcGVydGllcyBz
ZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF0gZm9y
S2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl07CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHBy
b3BlcnRpZXMgYXJlIHN0aWxsIHByZXNlbnQgYWZ0ZXIgYSBmdWxsIGNvbGxlY3Rpb24uCisgICAg
ICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5
OkAiaXNfaGFtIl07CisgICAgICAgICAgICBKU1ZhbHVlICptZXNzYWdlID0gW215UHJpdmF0ZVBy
b3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07CisgICAgICAgICAgICBKU1ZhbHVlICpt
eU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibXlfbnVtYmVyIl07
CisgICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5TnVsbCA9IFtteVByaXZhdGVQcm9wZXJ0
aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl07CisgICAgICAgICAgICBKU1ZhbHVl
ICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpA
Im5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJpc19o
YW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYmIFtpc0hhbSB0b0Jvb2xdKTsKKyAgICAg
ICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBoZWxsbyEiLCBbbWVzc2FnZSBpc1N0cmlu
Z10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6W21lc3NhZ2UgdG9TdHJpbmddXSk7Cisg
ICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJlciBpcyA0MiIsIFtteU51bWJlciBpc051
bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQyKTsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBbZGVmaW5pdGVseU51bGwgaXNOdWxsXSk7
CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRl
ZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIC8vIE5vdyB0aGF0IHRoZSBKU0NvbnRleHQgaGFzIGRpc2FwcGVhcmVk
LCBtYWtlIHN1cmUgYWxsIG9mIHRoZSBKU01hbmFnZWRWYWx1ZXMgaGF2ZSBiZWVuIGNsZWFyZWQu
CisgICAgICAgIGNoZWNrUmVzdWx0KEAiaXNfaGFtIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVy
dGllcyB2YWx1ZUZvcktleTpAImlzX2hhbSJdKTsKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJtZXNz
YWdlIGlzIG5pbCIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm1lc3NhZ2Ui
XSk7CisgICAgICAgIGNoZWNrUmVzdWx0KEAibXlfbnVtYmVyIGlzIG5pbCIsICFbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJdKTsKKyAgICAgICAgY2hlY2tSZXN1
bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbmlsIiwgIVtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVl
Rm9yS2V5OkAiZGVmaW5pdGVseV9udWxsIl0pOworICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9z
dXJlX2lmX3VuZGVmaW5lZCBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JL
ZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXSk7CisgICAgfQorfQorCisKKysgKHZvaWQpc2Nh
bkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3QKK3sKKyAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQg
YWxsb2NdIGluaXRdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSByb290LCBtYWtl
IGl0IHJlYWNoYWJsZSBmcm9tIEpTLCBhbmQgZm9yY2UgYW4gRWRlbkNvbGxlY3Rpb24KKyAgICAg
ICAgLy8gc28gdGhhdCB3ZSBzY2FuIHRoZSBleHRlcm5hbCBvYmplY3QgZ3JhcGguCisgICAgICAg
IE9wYXF1ZU9iakNPYmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3Rd
OworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIGNvbnRleHRbQCJyb290
Il0gPSByb290OworICAgICAgICB9CisgICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZv
ckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgCisgICAg
ICAgIC8vIENyZWF0ZSBhIG5ldyBPYmotQyBvYmplY3Qgb25seSByZWFjaGFibGUgdmlhIHRoZSBl
eHRlcm5hbCBvYmplY3QgZ3JhcGgKKyAgICAgICAgLy8gdGhyb3VnaCB0aGUgb2JqZWN0IHdlIGFs
cmVhZHkgc2Nhbm5lZCBkdXJpbmcgdGhlIEVkZW5Db2xsZWN0aW9uLgorICAgICAgICBPcGFxdWVP
YmpDT2JqZWN0ICpjaGlsZCA9IFtPcGFxdWVPYmpDT2JqZWN0IG9wYXF1ZU9iamVjdF07CisgICAg
ICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0
aE93bmVyOnJvb3RdOworICAgICAgICAKKyAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hbmFnZWQg
SlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBrZXB0IGFsaXZlIGlmIHdlIHByb3Blcmx5IHJlc2Nh
bgorICAgICAgICAvLyB0aGUgZXh0ZXJuYWwgb2JqZWN0IGdyYXBoLgorICAgICAgICBKU01hbmFn
ZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0gbmlsOworICAgICAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzT2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2Jq
ZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250ZXh0XTsKKyAgICAgICAgICAgIG1hbmFnZWRKU09i
amVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNPYmplY3RdOwor
ICAgICAgICAgICAgW2NvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
YW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNoaWxkXTsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgLy8gRm9yY2UgYW5vdGhlciBFZGVuQ29sbGVjdGlvbi4gSXQgc2hvdWxkIHJlc2NhbiB0
aGUgbmV3IHBhcnQgb2YgdGhlIGV4dGVybmFsIG9iamVjdCBncmFwaC4KKyAgICAgICAgSlNTeW5j
aHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0pOworICAgICAgICAKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbWFuYWdlZCBKU1ZhbHVl
IGlzIHN0aWxsIGFsaXZlLgorICAgICAgICBjaGVja1Jlc3VsdChAIkVkZW5Db2xsZWN0aW9uIGRv
ZXNuJ3QgcmVjbGFpbSBuZXcgbWFuYWdlZCB2YWx1ZXMiLCBbbWFuYWdlZEpTT2JqZWN0IHZhbHVl
XSAhPSBuaWwpOworICAgIH0KK30KKworKyAodm9pZClkaXNhcHBlYXJpbmdWaXJ0dWFsTWFjaGlu
ZVdyYXBwZXJUZXN0Cit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIE9wYXF1ZU9i
akNPYmplY3QgKmNoaWxkID0gbmlsOworICAgICAgICBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4
dFJlZiA9IDA7CisgICAgICAgIEpTTWFuYWdlZFZhbHVlICptYW5hZ2VkQ2hpbGQgPSBuaWw7Cisg
ICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICAgICAgSlNDb250ZXh0ICpjb250ZXh0
ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgY29udGV4dFJlZiA9IFtj
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CisgICAgICAgICAgICBKU0dsb2JhbENvbnRleHRS
ZXRhaW4oY29udGV4dFJlZik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE9wYXF1ZU9iakNP
YmplY3QgKnJvb3QgPSBbT3BhcXVlT2JqQ09iamVjdCBvcGFxdWVPYmplY3RdOworICAgICAgICAg
ICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNo
aWxkID0gW09wYXF1ZU9iakNPYmplY3Qgb3BhcXVlT2JqZWN0XTsKKyAgICAgICAgICAgIFtjb250
ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6Y2hpbGQgd2l0aE93bmVyOnJv
b3RdOworICAgICAgICAgICAgSlNWYWx1ZSAqanNDaGlsZCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpjaGlsZCBpbkNvbnRleHQ6Y29udGV4dF07CisgICAgICAgICAgICBqc0NoaWxkW0AibXlT
cGVjaWFsUHJvcGVydHkiXSA9IEAiZm9vIjsKKyAgICAgICAgICAgIG1hbmFnZWRDaGlsZCA9IFtK
U01hbmFnZWRWYWx1ZSBtYW5hZ2VkVmFsdWVXaXRoVmFsdWU6anNDaGlsZF07CisgICAgICAgICAg
ICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVmZXJlbmNlOm1hbmFnZWRDaGls
ZCB3aXRoT3duZXI6Y2hpbGRdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1N5bmNo
cm9ub3VzR2FyYmFnZUNvbGxlY3RGb3JEZWJ1Z2dpbmcoY29udGV4dFJlZik7CisgICAgICAgIAor
ICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTVmFsdWUgKmpzQ2hpbGQg
PSBbbWFuYWdlZENoaWxkIHZhbHVlXTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiY2hpbGQg
aGFzIG15U3BlY2lhbFByb3BlcnR5IGV2ZW4gd2hlbiBKU1ZpcnR1YWxNYWNoaW5lIGRpc2FwcGVh
cnMiLAorICAgICAgICAgICAgICAgIFtbanNDaGlsZFtAIm15U3BlY2lhbFByb3BlcnR5Il0gdG9T
dHJpbmddIGlzRXF1YWxUb1N0cmluZzpAImZvbyJdKTsKKyAgICAgICAgICAgIEpTR2xvYmFsQ29u
dGV4dFJlbGVhc2UoY29udGV4dFJlZik7CisgICAgICAgIH0KKyAgICB9Cit9CitAZW5kCisKK3Zv
aWQgcnVuTWVtb3J5TWFuYWdlbWVudFRlc3RzKCkKK3sKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsK
KyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBtYW5hZ2VkVmFsdWVTYW5pdHlUZXN0XTsK
KyAgICAgICAgW01lbW9yeU1hbmFnZW1lbnRUZXN0cyBhdm9pZE1vZGlmeWluZ05TTWFwVGFibGVX
aGlsZUl0ZXJhdGluZ1Rlc3RdOworICAgICAgICBbTWVtb3J5TWFuYWdlbWVudFRlc3RzIGJhZ09m
SlNNYW5hZ2VkVmFsdWVzVGVzdF07CisgICAgICAgIFtNZW1vcnlNYW5hZ2VtZW50VGVzdHMgc2Nh
bkV4dGVybmFsT2JqZWN0R3JhcGhEdXJpbmdFZGVuQ29sbGVjdGlvblRlc3RdOworICAgICAgICBb
TWVtb3J5TWFuYWdlbWVudFRlc3RzIGRpc2FwcGVhcmluZ1ZpcnR1YWxNYWNoaW5lV3JhcHBlclRl
c3RdOworICAgIH0KK30KKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAxNjc2
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbXBvcnQgIkN1cnJlbnRUaGlzSW5zaWRlQmxv
Y2tHZXR0ZXJUZXN0LmgiCiAjaW1wb3J0ICJEYXRlVGVzdHMuaCIKICNpbXBvcnQgIkpTRXhwb3J0
VGVzdHMuaCIKKyNpbXBvcnQgIk1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oIgogCiBleHRlcm4gIkMi
IHZvaWQgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKEpTQ29udGV4dFJl
Zik7CiBleHRlcm4gIkMiIHZvaWQgSlNTeW5jaHJvbm91c0VkZW5Db2xsZWN0Rm9yRGVidWdnaW5n
KEpTQ29udGV4dFJlZik7CkBAIC0xMTcsOCArMTE4LDYgQEAgYm9vbCB0ZXN0WFlaVGVzdGVkID0g
ZmFsc2U7CiAtIChpZClpbml0V2l0aFN0cmluZzooTlNTdHJpbmcqKXN0cmluZzsKIEBwcm9wZXJ0
eSBpbnQgeDsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCB5OwotQHByb3BlcnR5IChhc3NpZ24p
IEpTVmFsdWUgKm9uY2xpY2s7Ci1AcHJvcGVydHkgKGFzc2lnbikgSlNWYWx1ZSAqd2Vha09uY2xp
Y2s7CiAtICh2b2lkKXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZTsKIEBlbmQKIApAQCAtMTI2LDEz
ICsxMjUsOSBAQCBAaW50ZXJmYWNlIFRleHRYWVogOiBOU09iamVjdCA8VGV4dFhZWj4KIEBwcm9w
ZXJ0eSBpbnQgeDsKIEBwcm9wZXJ0eSBpbnQgeTsKIEBwcm9wZXJ0eSBpbnQgejsKLS0gKHZvaWQp
Y2xpY2s7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXh0WFlaIHsKLSAgICBKU01hbmFnZWRW
YWx1ZSAqbV93ZWFrT25jbGlja0hhbmRsZXI7Ci0gICAgSlNNYW5hZ2VkVmFsdWUgKm1fb25jbGlj
a0hhbmRsZXI7Ci19CitAaW1wbGVtZW50YXRpb24gVGV4dFhZWgogQHN5bnRoZXNpemUgeDsKIEBz
eW50aGVzaXplIHk7CiBAc3ludGhlc2l6ZSB6OwpAQCAtMTUwLDMyICsxNDUsNiBAQCAtICh2b2lk
KXRlc3Q6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIHRlc3RYWVpUZXN0ZWQgPSBbbWVzc2Fn
ZSBpc0VxdWFsOkAidGVzdCJdICYmIHggPT0gMTMgJiB5ID09IDQgJiYgeiA9PSA1OwogfQotLSAo
dm9pZClzZXRXZWFrT25jbGljazooSlNWYWx1ZSAqKXZhbHVlCi17Ci0gICAgbV93ZWFrT25jbGlj
a0hhbmRsZXIgPSBbSlNNYW5hZ2VkVmFsdWUgbWFuYWdlZFZhbHVlV2l0aFZhbHVlOnZhbHVlXTsK
LX0KLQotLSAodm9pZClzZXRPbmNsaWNrOihKU1ZhbHVlICopdmFsdWUKLXsKLSAgICBtX29uY2xp
Y2tIYW5kbGVyID0gW0pTTWFuYWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07
Ci0gICAgW3ZhbHVlLmNvbnRleHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpt
X29uY2xpY2tIYW5kbGVyIHdpdGhPd25lcjpzZWxmXTsKLX0KLS0gKEpTVmFsdWUgKil3ZWFrT25j
bGljawotewotICAgIHJldHVybiBbbV93ZWFrT25jbGlja0hhbmRsZXIgdmFsdWVdOwotfQotLSAo
SlNWYWx1ZSAqKW9uY2xpY2sKLXsKLSAgICByZXR1cm4gW21fb25jbGlja0hhbmRsZXIgdmFsdWVd
OwotfQotLSAodm9pZCljbGljawotewotICAgIGlmICghbV9vbmNsaWNrSGFuZGxlcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgSlNWYWx1ZSAqZnVuY3Rpb24gPSBbbV9vbmNsaWNrSGFuZGxlciB2
YWx1ZV07Ci0gICAgW2Z1bmN0aW9uIGNhbGxXaXRoQXJndW1lbnRzOltOU0FycmF5IGFycmF5XV07
Ci19CiBAZW5kCiAKIEBjbGFzcyBUaW55RE9NTm9kZTsKQEAgLTIzOCw0NyArMjA3LDYgQEAgLSAo
dm9pZClyZW1vdmVDaGlsZEF0SW5kZXg6KE5TVUludGVnZXIpaQogCiBAZW5kCiAKLUBpbnRlcmZh
Y2UgSlNDb2xsZWN0aW9uIDogTlNPYmplY3QKLS0gKHZvaWQpc2V0VmFsdWU6KEpTVmFsdWUgKil2
YWx1ZSBmb3JLZXk6KE5TU3RyaW5nICopa2V5OwotLSAoSlNWYWx1ZSAqKXZhbHVlRm9yS2V5OihO
U1N0cmluZyAqKWtleTsKLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEpTQ29sbGVjdGlvbiB7Ci0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqX2RpY3Q7Ci19Ci0tIChpZClpbml0Ci17Ci0gICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICBfZGljdCA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Ci0KLSAgICBy
ZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClzZXRWYWx1ZTooSlNWYWx1ZSAqKXZhbHVlIGZvcktl
eTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICBKU01hbmFnZWRWYWx1ZSAqb2xkTWFuYWdlZFZhbHVl
ID0gW19kaWN0IG9iamVjdEZvcktleTprZXldOwotICAgIGlmIChvbGRNYW5hZ2VkVmFsdWUpIHsK
LSAgICAgICAgSlNWYWx1ZSogb2xkVmFsdWUgPSBbb2xkTWFuYWdlZFZhbHVlIHZhbHVlXTsKLSAg
ICAgICAgaWYgKG9sZFZhbHVlKQotICAgICAgICAgICAgW29sZFZhbHVlLmNvbnRleHQudmlydHVh
bE1hY2hpbmUgcmVtb3ZlTWFuYWdlZFJlZmVyZW5jZTpvbGRNYW5hZ2VkVmFsdWUgd2l0aE93bmVy
OnNlbGZdOwotICAgIH0KLSAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZFZhbHVlID0gW0pTTWFu
YWdlZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTp2YWx1ZV07Ci0gICAgW3ZhbHVlLmNvbnRl
eHQudmlydHVhbE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkVmFsdWUgd2l0aE93
bmVyOnNlbGZdOwotICAgIFtfZGljdCBzZXRPYmplY3Q6bWFuYWdlZFZhbHVlIGZvcktleTprZXld
OwotfQotCi0tIChKU1ZhbHVlICopdmFsdWVGb3JLZXk6KE5TU3RyaW5nICopa2V5Ci17Ci0gICAg
SlNNYW5hZ2VkVmFsdWUgKm1hbmFnZWRWYWx1ZSA9IFtfZGljdCBvYmplY3RGb3JLZXk6a2V5XTsK
LSAgICBpZiAoIW1hbmFnZWRWYWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
W21hbmFnZWRWYWx1ZSB2YWx1ZV07Ci19Ci1AZW5kCi0KIEBwcm90b2NvbCBJbml0QSA8SlNFeHBv
cnQ+CiAtIChpZClpbml0V2l0aEE6KGludClhOwogLSAoaW50KWluaXRpYWxpemU7CkBAIC01MTAs
NTUgKzQzOCw2IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgIH0KIAogICAgIEBhdXRv
cmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbGxlY3Rpb24qIG15UHJpdmF0ZVByb3BlcnRpZXMg
PSBbW0pTQ29sbGVjdGlvbiBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9v
bCB7Ci0gICAgICAgICAgICBKU0NvbnRleHQqIGNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07Ci0gICAgICAgICAgICBUZXN0T2JqZWN0KiByb290T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07Ci0gICAgICAgICAgICBjb250ZXh0W0Aicm9vdCJdID0gcm9vdE9iamVjdDsK
LSAgICAgICAgICAgIFtjb250ZXh0LnZpcnR1YWxNYWNoaW5lIGFkZE1hbmFnZWRSZWZlcmVuY2U6
bXlQcml2YXRlUHJvcGVydGllcyB3aXRoT3duZXI6cm9vdE9iamVjdF07Ci0gICAgICAgICAgICBb
bXlQcml2YXRlUHJvcGVydGllcyBzZXRWYWx1ZTpbSlNWYWx1ZSB2YWx1ZVdpdGhCb29sOnRydWUg
aW5Db250ZXh0OmNvbnRleHRdIGZvcktleTpAImlzX2hhbSJdOwotICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8h
IiBpbkNvbnRleHQ6Y29udGV4dF0gZm9yS2V5OkAibWVzc2FnZSJdOwotICAgICAgICAgICAgW215
UHJpdmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoSW50MzI6NDIgaW5D
b250ZXh0OmNvbnRleHRdIGZvcktleTpAIm15X251bWJlciJdOwotICAgICAgICAgICAgW215UHJp
dmF0ZVByb3BlcnRpZXMgc2V0VmFsdWU6W0pTVmFsdWUgdmFsdWVXaXRoTnVsbEluQ29udGV4dDpj
b250ZXh0XSBmb3JLZXk6QCJkZWZpbml0ZWx5X251bGwiXTsKLSAgICAgICAgICAgIFtteVByaXZh
dGVQcm9wZXJ0aWVzIHNldFZhbHVlOltKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4
dDpjb250ZXh0XSBmb3JLZXk6QCJub3Rfc3VyZV9pZl91bmRlZmluZWQiXTsKLQotICAgICAgICAg
ICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IEpTR2xv
YmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgICAgICBKU1ZhbHVlICppc0hhbSA9IFtteVByaXZh
dGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiaXNfaGFtIl07Ci0gICAgICAgICAgICBKU1ZhbHVl
ICptZXNzYWdlID0gW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJtZXNzYWdlIl07
Ci0gICAgICAgICAgICBKU1ZhbHVlICpteU51bWJlciA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZh
bHVlRm9yS2V5OkAibXlfbnVtYmVyIl07Ci0gICAgICAgICAgICBKU1ZhbHVlICpkZWZpbml0ZWx5
TnVsbCA9IFtteVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAiZGVmaW5pdGVseV9udWxs
Il07Ci0gICAgICAgICAgICBKU1ZhbHVlICpub3RTdXJlSWZVbmRlZmluZWQgPSBbbXlQcml2YXRl
UHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm5vdF9zdXJlX2lmX3VuZGVmaW5lZCJdOwotICAgICAg
ICAgICAgY2hlY2tSZXN1bHQoQCJpc19oYW0gaXMgdHJ1ZSIsIFtpc0hhbSBpc0Jvb2xlYW5dICYm
IFtpc0hhbSB0b0Jvb2xdKTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBo
ZWxsbyEiLCBbbWVzc2FnZSBpc1N0cmluZ10gJiYgW0AiaGVsbG8hIiBpc0VxdWFsVG9TdHJpbmc6
W21lc3NhZ2UgdG9TdHJpbmddXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJl
ciBpcyA0MiIsIFtteU51bWJlciBpc051bWJlcl0gJiYgW215TnVtYmVyIHRvSW50MzJdID09IDQy
KTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiZGVmaW5pdGVseV9udWxsIGlzIG51bGwiLCBb
ZGVmaW5pdGVseU51bGwgaXNOdWxsXSk7Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm5vdF9z
dXJlX2lmX3VuZGVmaW5lZCBpcyB1bmRlZmluZWQiLCBbbm90U3VyZUlmVW5kZWZpbmVkIGlzVW5k
ZWZpbmVkXSk7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGVja1Jlc3VsdChAImlzX2hhbSBpcyBu
aWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMgdmFsdWVGb3JLZXk6QCJpc19oYW0iXSk7Ci0gICAg
ICAgIGNoZWNrUmVzdWx0KEAibWVzc2FnZSBpcyBuaWwiLCAhW215UHJpdmF0ZVByb3BlcnRpZXMg
dmFsdWVGb3JLZXk6QCJtZXNzYWdlIl0pOwotICAgICAgICBjaGVja1Jlc3VsdChAIm15X251bWJl
ciBpcyA0MiIsICFbbXlQcml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAIm15X251bWJlciJd
KTsKLSAgICAgICAgY2hlY2tSZXN1bHQoQCJkZWZpbml0ZWx5X251bGwgaXMgbnVsbCIsICFbbXlQ
cml2YXRlUHJvcGVydGllcyB2YWx1ZUZvcktleTpAImRlZmluaXRlbHlfbnVsbCJdKTsKLSAgICAg
ICAgY2hlY2tSZXN1bHQoQCJub3Rfc3VyZV9pZl91bmRlZmluZWQgaXMgdW5kZWZpbmVkIiwgIVtt
eVByaXZhdGVQcm9wZXJ0aWVzIHZhbHVlRm9yS2V5OkAibm90X3N1cmVfaWZfdW5kZWZpbmVkIl0p
OwotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBKU0NvbnRleHQgKmNv
bnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07Ci0gICAgICAgIEpTVmFsdWUgKm1lc3Nh
Z2UgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6QCJoZWxsbyIgaW5Db250ZXh0OmNvbnRleHRd
OwotICAgICAgICBUZXN0T2JqZWN0ICpyb290T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVj
dF07Ci0gICAgICAgIEpTQ29sbGVjdGlvbiAqY29sbGVjdGlvbiA9IFtbSlNDb2xsZWN0aW9uIGFs
bG9jXSBpbml0XTsKLSAgICAgICAgY29udGV4dFtAInJvb3QiXSA9IHJvb3RPYmplY3Q7Ci0gICAg
ICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICAgICAgSlNWYWx1ZSAqanNDb2xsZWN0aW9u
ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OmNvbGxlY3Rpb24gaW5Db250ZXh0OmNvbnRleHRd
OwotICAgICAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKndlYWtDb2xsZWN0aW9uID0gW0pTTWFuYWdl
ZFZhbHVlIG1hbmFnZWRWYWx1ZVdpdGhWYWx1ZTpqc0NvbGxlY3Rpb24gYW5kT3duZXI6cm9vdE9i
amVjdF07Ci0gICAgICAgICAgICBbY29udGV4dC52aXJ0dWFsTWFjaGluZSBhZGRNYW5hZ2VkUmVm
ZXJlbmNlOndlYWtDb2xsZWN0aW9uIHdpdGhPd25lcjptZXNzYWdlXTsKLSAgICAgICAgICAgIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENv
bnRleHRSZWZdKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBhdXRvcmVsZWFzZXBvb2wgewog
ICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdF07CiAg
ICAgICAgIF9fYmxvY2sgaW50IHJlc3VsdDsKICAgICAgICAgY29udGV4dFtAImJsb2NrQ2FsbGJh
Y2siXSA9IF4oaW50IHZhbHVlKXsKQEAgLTk3Nyw2MCArODU2LDYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgfQogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29u
dGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLSAgICAgICAgVGV4dFhZ
WiAqdGVzdFhZWiA9IFtbVGV4dFhZWiBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgICAgICBjb250ZXh0W0AidGVzdFhZWiJdID0gdGVzdFhZWjsKLQot
ICAgICAgICAgICAgW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCIgXAotICAgICAgICAgICAgICAg
IGRpZENsaWNrID0gZmFsc2U7IFwKLSAgICAgICAgICAgICAgICB0ZXN0WFlaLm9uY2xpY2sgPSBm
dW5jdGlvbigpIHsgXAotICAgICAgICAgICAgICAgICAgICBkaWRDbGljayA9IHRydWU7IFwKLSAg
ICAgICAgICAgICAgICB9OyBcCi0gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0
ZXN0WFlaLndlYWtPbmNsaWNrID0gZnVuY3Rpb24oKSB7IFwKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICdmb28nOyBcCi0gICAgICAgICAgICAgICAgfTsgXAotICAgICAgICAgICAgIl07Ci0g
ICAgICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFt0ZXN0
WFlaIGNsaWNrXTsKLSAgICAgICAgICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1
YXRlU2NyaXB0OkAiZGlkQ2xpY2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAiRXZlbnQg
aGFuZGxlciBvbmNsaWNrIiwgW3Jlc3VsdCB0b0Jvb2xdKTsKLSAgICAgICAgfQotCi0gICAgICAg
IEpTU3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdKTsKLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgKnJlc3VsdCA9IFtjb250ZXh0IGV2YWx1YXRlU2NyaXB0OkAidGVzdFhZWi5vbmNs
aWNrIl07Ci0gICAgICAgICAgICBjaGVja1Jlc3VsdChAIm9uY2xpY2sgc3RpbGwgYXJvdW5kIGFm
dGVyIEdDIiwgIShbcmVzdWx0IGlzTnVsbF0gfHwgW3Jlc3VsdCBpc1VuZGVmaW5lZF0pKTsKLSAg
ICAgICAgfQotCi0KLSAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgICAgICBKU1Zh
bHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAInRlc3RYWVoud2Vha09uY2xp
Y2siXTsKLSAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2Vha09uY2xpY2sgbm90IGFyb3VuZCBh
ZnRlciBHQyIsIFtyZXN1bHQgaXNOdWxsXSB8fCBbcmVzdWx0IGlzVW5kZWZpbmVkXSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIFtjb250ZXh0
IGV2YWx1YXRlU2NyaXB0OkAiIFwKLSAgICAgICAgICAgICAgICBkaWRDbGljayA9IGZhbHNlOyBc
Ci0gICAgICAgICAgICAgICAgdGVzdFhZWiA9IG51bGw7IFwKLSAgICAgICAgICAgICJdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotCi0gICAgICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICAgICAgW3Rlc3RYWVogY2xpY2tdOwotICAgICAgICAgICAgSlNWYWx1ZSAq
cmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJkaWRDbGljayJdOwotICAgICAgICAg
ICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5kbGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVty
ZXN1bHQgdG9Cb29sXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBAYXV0b3JlbGVhc2Vwb29s
IHsKICAgICAgICAgSlNWaXJ0dWFsTWFjaGluZSAqdm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxs
b2NdIGluaXRdOwogICAgICAgICBUZXN0T2JqZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3Qg
dGVzdE9iamVjdF07CiAgICAgICAgIEpTTWFuYWdlZFZhbHVlICp3ZWFrVmFsdWU7CkBAIC0xMzI2
LDQyICsxMTUxLDExIEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBbW0pTVmFs
dWUgdmFsdWVXaXRoSW50MzI6NDIgaW5Db250ZXh0OmNvbnRleHRdIHRvRGljdGlvbmFyeV07CiAg
ICAgICAgIFtbSlNWYWx1ZSB2YWx1ZVdpdGhJbnQzMjo0MiBpbkNvbnRleHQ6Y29udGV4dF0gdG9B
cnJheV07CiAgICAgfQotCi0gICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIEpTQ29udGV4
dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKLQotICAgICAgICAvLyBDcmVh
dGUgdGhlIHJvb3QsIG1ha2UgaXQgcmVhY2hhYmxlIGZyb20gSlMsIGFuZCBmb3JjZSBhbiBFZGVu
Q29sbGVjdGlvbgotICAgICAgICAvLyBzbyB0aGF0IHdlIHNjYW4gdGhlIGV4dGVybmFsIG9iamVj
dCBncmFwaC4KLSAgICAgICAgVGVzdE9iamVjdCAqcm9vdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmpl
Y3RdOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIGNvbnRleHRbQCJy
b290Il0gPSByb290OwotICAgICAgICB9Ci0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVj
dEZvckRlYnVnZ2luZyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLQotICAgICAgICAv
LyBDcmVhdGUgYSBuZXcgT2JqLUMgb2JqZWN0IG9ubHkgcmVhY2hhYmxlIHZpYSB0aGUgZXh0ZXJu
YWwgb2JqZWN0IGdyYXBoCi0gICAgICAgIC8vIHRocm91Z2ggdGhlIG9iamVjdCB3ZSBhbHJlYWR5
IHNjYW5uZWQgZHVyaW5nIHRoZSBFZGVuQ29sbGVjdGlvbi4KLSAgICAgICAgVGVzdE9iamVjdCAq
Y2hpbGQgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKLSAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTpjaGlsZCB3aXRoT3duZXI6cm9vdF07Ci0KLSAg
ICAgICAgLy8gQ3JlYXRlIGEgbmV3IG1hbmFnZWQgSlNWYWx1ZSB0aGF0IHdpbGwgb25seSBiZSBr
ZXB0IGFsaXZlIGlmIHdlIHByb3Blcmx5IHJlc2NhbgotICAgICAgICAvLyB0aGUgZXh0ZXJuYWwg
b2JqZWN0IGdyYXBoLgotICAgICAgICBKU01hbmFnZWRWYWx1ZSAqbWFuYWdlZEpTT2JqZWN0ID0g
bmlsOwotICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgICAgIEpTVmFsdWUgKmpz
T2JqZWN0ID0gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAiaGVsbG8iIGluQ29udGV4dDpjb250
ZXh0XTsKLSAgICAgICAgICAgIG1hbmFnZWRKU09iamVjdCA9IFtKU01hbmFnZWRWYWx1ZSBtYW5h
Z2VkVmFsdWVXaXRoVmFsdWU6anNPYmplY3RdOwotICAgICAgICAgICAgW2NvbnRleHQudmlydHVh
bE1hY2hpbmUgYWRkTWFuYWdlZFJlZmVyZW5jZTptYW5hZ2VkSlNPYmplY3Qgd2l0aE93bmVyOmNo
aWxkXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGFub3RoZXIgRWRlbkNvbGxlY3Rp
b24uIEl0IHNob3VsZCByZXNjYW4gdGhlIG5ldyBwYXJ0IG9mIHRoZSBleHRlcm5hbCBvYmplY3Qg
Z3JhcGguCi0gICAgICAgIEpTU3luY2hyb25vdXNFZGVuQ29sbGVjdEZvckRlYnVnZ2luZyhbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIHRo
YXQgdGhlIG1hbmFnZWQgSlNWYWx1ZSBpcyBzdGlsbCBhbGl2ZS4KLSAgICAgICAgY2hlY2tSZXN1
bHQoQCJFZGVuQ29sbGVjdGlvbiBkb2Vzbid0IHJlY2xhaW0gbmV3IG1hbmFnZWQgdmFsdWVzIiwg
W21hbmFnZWRKU09iamVjdCB2YWx1ZV0gIT0gbmlsKTsKLSAgICB9Ci0KKyAgICAKICAgICBjdXJy
ZW50VGhpc0luc2lkZUJsb2NrR2V0dGVyVGVzdCgpOwogICAgIHJ1bkRhdGVUZXN0cygpOwogICAg
IHJ1bkpTRXhwb3J0VGVzdHMoKTsKKyAgICBydW5NZW1vcnlNYW5hZ2VtZW50VGVzdHMoKTsKIH0K
IAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9K
YXZhU2NyaXB0Q29yZS9BUElEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0ZvcndhcmRpbmdIZWFkZXJzL0phdmFTY3JpcHRDb3JlL0FQSURhdGEuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Gb3J3YXJkaW5nSGVhZGVycy9KYXZhU2NyaXB0
Q29yZS9BUElEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0FQSS9BUElEYXRhLmg+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTc4Nyw2ICs3ODcsNyBAQAogICA8SXRlbUdyb3VwPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEFQSUNhbGxiYWNrRnVuY3Rpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXEFQSVxBUElDYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxBUElcQVBJRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEphdmFT
Y3JpcHQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEFQSVxKYXZhU2NyaXB0Q29y
ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEpTQVBJV3JhcHBlck9iamVj
dC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ouZmlsdGVycwkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzc2LDYgKzEzNzYsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cQVBJXEFQSUNhc3QuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSURhdGEuaCI+CisgICAg
ICA8RmlsdGVyPkFQSTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5cQVBJXEphdmFTY3JpcHQuaCI+CiAgICAgICA8RmlsdGVyPkFQSTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovY29weS1maWxlcy5jbWQJKHJldmlzaW9u
IDE2NzY5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L2NvcHktZmlsZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEwMiArMSwxMDMgQEAKLUBlY2hv
IG9mZg0KLQ0KLXNldCBQdWJsaWNIZWFkZXJzRGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERE
SVIlXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUNCi1zZXQgUHJpdmF0ZUhlYWRlcnNEaXJlY3Rvcnk9
JUNPTkZJR1VSQVRJT05CVUlMRERJUiVcaW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlDQot
c2V0IFJlc291cmNlc0RpcmVjdG9yeT0lQ09ORklHVVJBVElPTkJVSUxERElSJVxiaW4lUGxhdGZv
cm1BcmNoaXRlY3R1cmUlXEphdmFTY3JpcHRDb3JlLnJlc291cmNlcw0KLXNldCBEZXJpdmVkU291
cmNlc0RpcmVjdG9yeT0lQ09ORklHVVJBVElPTkJVSUxERElSJVxvYmolUGxhdGZvcm1BcmNoaXRl
Y3R1cmUlXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzDQotDQotaWYgIiUxIiBFUVUgImNs
ZWFuIiBnb3RvIDpjbGVhbg0KLWlmICIlMSIgRVFVICJyZWJ1aWxkIiBjYWxsIDpjbGVhbg0KLQ0K
LWVjaG8gQ29weWluZyBwdWJsaWMgaGVhZGVycy4uLg0KLW1rZGlyICIlUHVibGljSGVhZGVyc0Rp
cmVjdG9yeSUiIDI+TlVMDQotZm9yICUlZiBpbiAoDQotICAgIEFQSUNhc3QuaA0KLSAgICBBUElT
aGltcy5oDQotICAgIEpTQmFzZS5oDQotICAgIEpTQ2xhc3NSZWYuaA0KLSAgICBKU0NvbnRleHRS
ZWYuaA0KLSAgICBKU0NvbnRleHRSZWZQcml2YXRlLmgNCi0JSlNDVGVzdFJ1bm5lclV0aWxzLmgN
Ci0gICAgSlNPYmplY3RSZWYuaA0KLSAgICBKU09iamVjdFJlZlByaXZhdGUuaA0KLSAgICBKU1Jl
dGFpblB0ci5oDQotICAgIEpTUmV0YWluUHRyLmgNCi0gICAgSlNTdHJpbmdSZWYuaA0KLSAgICBK
U1N0cmluZ1JlZkJTVFIuaA0KLSAgICBKU1N0cmluZ1JlZkNGLmgNCi0gICAgSlNWYWx1ZVJlZi5o
DQotICAgIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgNCi0gICAgSlNXZWFrT2JqZWN0TWFw
UmVmUHJpdmF0ZS5oDQotICAgIEphdmFTY3JpcHQuaA0KLSAgICBKYXZhU2NyaXB0Q29yZS5oDQot
ICAgIE9wYXF1ZUpTU3RyaW5nLmgNCi0gICAgV2ViS2l0QXZhaWxhYmlsaXR5LmgNCi0pIGRvICgN
Ci0gICAgeGNvcHkgL3kgL2QgLi5cQVBJXCUlZiAiJVB1YmxpY0hlYWRlcnNEaXJlY3RvcnklIiA+
TlVMDQotKQ0KLQ0KLWVjaG8gQ29weWluZyBwcml2YXRlIGhlYWRlcnMuLi4NCi1ta2RpciAiJVBy
aXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgMj5OVUwNCi1mb3IgJSVkIGluICgNCi0gICAgYXNzZW1i
bGVyDQotICAgIGJpbmRpbmdzDQotICAgIGJ5dGVjb2RlDQotICAgIGJ1aWx0aW5zDQotICAgIGRm
Zw0KLSAgICBkaXNhc3NlbWJsZXINCi0gICAgaGVhcA0KLSAgICBkZWJ1Z2dlcg0KLSAgICBpbnNw
ZWN0b3INCi0gICAgaW5zcGVjdG9yXGFnZW50cw0KLSAgICBpbnRlcnByZXRlcg0KLSAgICBqaXQN
Ci0gICAgbGxpbnQNCi0gICAgcGFyc2VyDQotICAgIHByb2ZpbGVyDQotICAgIHJlcGxheQ0KLSAg
ICBydW50aW1lDQotICAgIHlhcnINCi0pIGRvICgNCi0gICAgeGNvcHkgL3kgL2QgLi5cJSVkXCou
aCAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KLSkNCi0NCi1lY2hvIENvcHlpbmcg
SW5zcGVjdG9yIHNjcmlwdHMgYXMgaWYgdGhleSB3ZXJlIHByaXZhdGUgaGVhZGVycy4uLg0KLWZv
ciAlJWQgaW4gKA0KLSAgICBpbnNwZWN0b3Jcc2NyaXB0cw0KLSkgZG8gKA0KLSAgICB4Y29weSAv
eSAvZCAuLlwlJWRcKiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KLSkNCi0NCi1l
Y2hvIENvcHlpbmcgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcyBpZiB0aGV5IHdlcmUgcHJp
dmF0ZSBoZWFkZXJzLi4uDQoteGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5z
cGVjdG9ySlMuanNvbiIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwNCi14Y29weSAv
eSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU1R5cGVCdWlsZGVycy5oIiAi
JVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KLXhjb3B5IC95ICIlRGVyaXZlZFNvdXJj
ZXNEaXJlY3RvcnklXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhl
YWRlcnNEaXJlY3RvcnklIiA+TlVMDQoteGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9y
eSVcSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJl
Y3RvcnklIiA+TlVMDQotDQotZWNobyBDb3B5aW5nIFdlYiBSZXBsYXkgc2NyaXB0cyBhcyBpZiB0
aGV5IHdlcmUgcHJpdmF0ZSBoZWFkZXJzLi4uDQotZm9yICUlZCBpbiAoDQotICAgIHJlcGxheVxz
Y3JpcHRzDQotKSBkbyAoDQotICAgIHhjb3B5IC95IC9kIC4uXCUlZFwqICIlUHJpdmF0ZUhlYWRl
cnNEaXJlY3RvcnklIiA+TlVMDQotKQ0KLQ0KLWVjaG8gQ29weWluZyBXZWIgUmVwbGF5IGdlbmVy
YXRlZCBoZWFkZXJzIGFzIGlmIHRoZXkgd2VyZSBwcml2YXRlIGhlYWRlcnMuLi4NCi14Y29weSAv
eSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxKU1JlcGxheUlucHV0cy5oIiAiJVByaXZhdGVI
ZWFkZXJzRGlyZWN0b3J5JSIgPk5VTA0KLQ0KLWVjaG8gQ29weWluZyBidWlsdGlucyBoZWFkZXIg
YXMgaWYgaXQgd2VyZSBhIHByaXZhdGUgaGVhZGVyLi4uDQoteGNvcHkgL3kgIiVEZXJpdmVkU291
cmNlc0RpcmVjdG9yeSVcSlNDQnVpbHRpbnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUi
ID5OVUwNCitAZWNobyBvZmYKKworc2V0IFB1YmxpY0hlYWRlcnNEaXJlY3Rvcnk9JUNPTkZJR1VS
QVRJT05CVUlMRERJUiVcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZQorc2V0IFByaXZhdGVIZWFkZXJz
RGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERESVIlXGluY2x1ZGVccHJpdmF0ZVxKYXZhU2Ny
aXB0Q29yZQorc2V0IFJlc291cmNlc0RpcmVjdG9yeT0lQ09ORklHVVJBVElPTkJVSUxERElSJVxi
aW4lUGxhdGZvcm1BcmNoaXRlY3R1cmUlXEphdmFTY3JpcHRDb3JlLnJlc291cmNlcworc2V0IERl
cml2ZWRTb3VyY2VzRGlyZWN0b3J5PSVDT05GSUdVUkFUSU9OQlVJTERESVIlXG9iaiVQbGF0Zm9y
bUFyY2hpdGVjdHVyZSVcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXMKKworaWYgIiUxIiBF
UVUgImNsZWFuIiBnb3RvIDpjbGVhbgoraWYgIiUxIiBFUVUgInJlYnVpbGQiIGNhbGwgOmNsZWFu
CisKK2VjaG8gQ29weWluZyBwdWJsaWMgaGVhZGVycy4uLgorbWtkaXIgIiVQdWJsaWNIZWFkZXJz
RGlyZWN0b3J5JSIgMj5OVUwKK2ZvciAlJWYgaW4gKAorICAgIEFQSUNhc3QuaAorICAgIEFQSURh
dGEuaAorICAgIEFQSVNoaW1zLmgKKyAgICBKU0Jhc2UuaAorICAgIEpTQ2xhc3NSZWYuaAorICAg
IEpTQ29udGV4dFJlZi5oCisgICAgSlNDb250ZXh0UmVmUHJpdmF0ZS5oCisJSlNDVGVzdFJ1bm5l
clV0aWxzLmgKKyAgICBKU09iamVjdFJlZi5oCisgICAgSlNPYmplY3RSZWZQcml2YXRlLmgKKyAg
ICBKU1JldGFpblB0ci5oCisgICAgSlNSZXRhaW5QdHIuaAorICAgIEpTU3RyaW5nUmVmLmgKKyAg
ICBKU1N0cmluZ1JlZkJTVFIuaAorICAgIEpTU3RyaW5nUmVmQ0YuaAorICAgIEpTVmFsdWVSZWYu
aAorICAgIEpTV2Vha09iamVjdE1hcFJlZkludGVybmFsLmgKKyAgICBKU1dlYWtPYmplY3RNYXBS
ZWZQcml2YXRlLmgKKyAgICBKYXZhU2NyaXB0LmgKKyAgICBKYXZhU2NyaXB0Q29yZS5oCisgICAg
T3BhcXVlSlNTdHJpbmcuaAorICAgIFdlYktpdEF2YWlsYWJpbGl0eS5oCispIGRvICgKKyAgICB4
Y29weSAveSAvZCAuLlxBUElcJSVmICIlUHVibGljSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKKykK
KworZWNobyBDb3B5aW5nIHByaXZhdGUgaGVhZGVycy4uLgorbWtkaXIgIiVQcml2YXRlSGVhZGVy
c0RpcmVjdG9yeSUiIDI+TlVMCitmb3IgJSVkIGluICgKKyAgICBhc3NlbWJsZXIKKyAgICBiaW5k
aW5ncworICAgIGJ5dGVjb2RlCisgICAgYnVpbHRpbnMKKyAgICBkZmcKKyAgICBkaXNhc3NlbWJs
ZXIKKyAgICBoZWFwCisgICAgZGVidWdnZXIKKyAgICBpbnNwZWN0b3IKKyAgICBpbnNwZWN0b3Jc
YWdlbnRzCisgICAgaW50ZXJwcmV0ZXIKKyAgICBqaXQKKyAgICBsbGludAorICAgIHBhcnNlcgor
ICAgIHByb2ZpbGVyCisgICAgcmVwbGF5CisgICAgcnVudGltZQorICAgIHlhcnIKKykgZG8gKAor
ICAgIHhjb3B5IC95IC9kIC4uXCUlZFwqLmggIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5O
VUwKKykKKworZWNobyBDb3B5aW5nIEluc3BlY3RvciBzY3JpcHRzIGFzIGlmIHRoZXkgd2VyZSBw
cml2YXRlIGhlYWRlcnMuLi4KK2ZvciAlJWQgaW4gKAorICAgIGluc3BlY3RvclxzY3JpcHRzCisp
IGRvICgKKyAgICB4Y29weSAveSAvZCAuLlwlJWRcKiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5
JSIgPk5VTAorKQorCitlY2hvIENvcHlpbmcgSW5zcGVjdG9yIGdlbmVyYXRlZCBmaWxlcyBhcyBp
ZiB0aGV5IHdlcmUgcHJpdmF0ZSBoZWFkZXJzLi4uCit4Y29weSAveSAiJURlcml2ZWRTb3VyY2Vz
RGlyZWN0b3J5JVxJbnNwZWN0b3JKUy5qc29uIiAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIg
Pk5VTAoreGNvcHkgL3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSW5zcGVjdG9ySlNUeXBl
QnVpbGRlcnMuaCIgIiVQcml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKK3hjb3B5IC95ICIl
RGVyaXZlZFNvdXJjZXNEaXJlY3RvcnklXEluc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmgi
ICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMCit4Y29weSAveSAiJURlcml2ZWRTb3Vy
Y2VzRGlyZWN0b3J5JVxJbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaCIgIiVQcml2YXRl
SGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKKworZWNobyBDb3B5aW5nIFdlYiBSZXBsYXkgc2NyaXB0
cyBhcyBpZiB0aGV5IHdlcmUgcHJpdmF0ZSBoZWFkZXJzLi4uCitmb3IgJSVkIGluICgKKyAgICBy
ZXBsYXlcc2NyaXB0cworKSBkbyAoCisgICAgeGNvcHkgL3kgL2QgLi5cJSVkXCogIiVQcml2YXRl
SGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKKykKKworZWNobyBDb3B5aW5nIFdlYiBSZXBsYXkgZ2Vu
ZXJhdGVkIGhlYWRlcnMgYXMgaWYgdGhleSB3ZXJlIHByaXZhdGUgaGVhZGVycy4uLgoreGNvcHkg
L3kgIiVEZXJpdmVkU291cmNlc0RpcmVjdG9yeSVcSlNSZXBsYXlJbnB1dHMuaCIgIiVQcml2YXRl
SGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKKworZWNobyBDb3B5aW5nIGJ1aWx0aW5zIGhlYWRlciBh
cyBpZiBpdCB3ZXJlIGEgcHJpdmF0ZSBoZWFkZXIuLi4KK3hjb3B5IC95ICIlRGVyaXZlZFNvdXJj
ZXNEaXJlY3RvcnklXEpTQ0J1aWx0aW5zLmgiICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+
TlVMCiB4Y29weSAveSAiJURlcml2ZWRTb3VyY2VzRGlyZWN0b3J5JVxCeXRlY29kZXMuaCIgIiVQ
cml2YXRlSGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKLQ0KLWVjaG8gQ29weWluZyByZXNvdXJjZXMu
Li4NCi1ta2RpciAiJVJlc291cmNlc0RpcmVjdG9yeSUiIDI+TlVMDQoteGNvcHkgL3kgL2QgSmF2
YVNjcmlwdENvcmUucmVzb3VyY2VzXCogIiVSZXNvdXJjZXNEaXJlY3RvcnklIiA+TlVMDQotDQot
Z290byA6RU9GDQotDQotOmNsZWFuDQotDQotZWNobyBEZWxldGluZyBjb3BpZWQgZmlsZXMuLi4N
Ci1pZiBleGlzdCAiJVB1YmxpY0hlYWRlcnNEaXJlY3RvcnklIiBybWRpciAvcyAvcSAiJVB1Ymxp
Y0hlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQotaWYgZXhpc3QgIiVQcml2YXRlSGVhZGVyc0RpcmVj
dG9yeSUiIHJtZGlyIC9zIC9xICIlUHJpdmF0ZUhlYWRlcnNEaXJlY3RvcnklIiA+TlVMDQotaWYg
ZXhpc3QgIiVSZXNvdXJjZXNEaXJlY3RvcnklIiBybWRpciAvcyAvcSAiJVJlc291cmNlc0RpcmVj
dG9yeSUiID5OVUwNCisKK2VjaG8gQ29weWluZyByZXNvdXJjZXMuLi4KK21rZGlyICIlUmVzb3Vy
Y2VzRGlyZWN0b3J5JSIgMj5OVUwKK3hjb3B5IC95IC9kIEphdmFTY3JpcHRDb3JlLnJlc291cmNl
c1wqICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIgPk5VTAorCitnb3RvIDpFT0YKKworOmNsZWFuCisK
K2VjaG8gRGVsZXRpbmcgY29waWVkIGZpbGVzLi4uCitpZiBleGlzdCAiJVB1YmxpY0hlYWRlcnNE
aXJlY3RvcnklIiBybWRpciAvcyAvcSAiJVB1YmxpY0hlYWRlcnNEaXJlY3RvcnklIiA+TlVMCitp
ZiBleGlzdCAiJVByaXZhdGVIZWFkZXJzRGlyZWN0b3J5JSIgcm1kaXIgL3MgL3EgIiVQcml2YXRl
SGVhZGVyc0RpcmVjdG9yeSUiID5OVUwKK2lmIGV4aXN0ICIlUmVzb3VyY2VzRGlyZWN0b3J5JSIg
cm1kaXIgL3MgL3EgIiVSZXNvdXJjZXNEaXJlY3RvcnklIiA+TlVMCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9jb3B5LWZp
bGVzLmNtZApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0wLDAgKzEgIyMKK25h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTE2NTYsNiArMTY1Niw3IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90
VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovOyB9OwogCQlD
MjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0MDJGREQ2MDA3OEVC
MzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8qIENvcGllZFNwYWNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDAz
MDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07CisJCUMyNDhGNjhF
MTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ4RjY4QzE5MDVENzNDMDA3MEEyQjEgLyogQVBJRGF0YS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNEQz
MUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OwogCQlDMjREMzFFMzE2MUNENjk1MDAyQUE0REIg
LyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNUQ3MDlC
MTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUQ3MDk5MTZERTk5RjQwMEZDQTZCQyAvKiBK
U01hbmFnZWRWYWx1ZS5tbSAqLzsgfTsKQEAgLTE2NjUsNiArMTY2Niw3IEBACiAJCUMyODMxOTAw
MTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE4RkYxNkZFNEI3RDAwMTU3QkZEIC8qIEhhbmRs
ZUJsb2NrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzI4MzE5MDIxNkZFNTMzRTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI4MzE5MDExNkZFNTMz
RTAwMTU3QkZEIC8qIEhhbmRsZUJsb2NrSW5saW5lcy5oICovOyB9OwogCQlDMjg4QjJERTE4QTU0
RDNFMDA3QkU0MEIgLyogRGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI4OEIyREQxOEE1NEQzRTAwN0JFNDBCIC8qIERhdGVUZXN0cy5t
bSAqLzsgfTsKKwkJQzI5MzJBNTUxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1hbmFnZW1lbnRU
ZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
OTMyQTU0MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50VGVzdHMubW0gKi87IH07
CiAJCUMyOTgxRkQ4MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFG
RDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAgKi87IH07
CiAJCUMyOTgxRkQ5MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTgxRkQ3
MTdCQUVFNEIwMEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjk4MUZEQzE3QkFGRjQ0
MDBBM0JDOTggLyogREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI5ODFGREExN0JBRkY0NDAwQTNCQzk4IC8q
IERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCAqLzsgfTsKQEAgLTMyNDIsNiArMzI0NCw3IEBA
CiAJCUMyMjM5RDE2MTYyNjJCREQwMDVBQzVGRCAvKiBHQ1RocmVhZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHQ1RocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2xvdFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3Bh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ4RjY4QzE5MDVENzNDMDA3MEEy
QjEgLyogQVBJRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTRE
QiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIZWFwU3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
NEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKU01hbmFnZWRWYWx1ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNTIsNiArMzI1NSw4IEBACiAJCUMy
ODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMyODhCMkRDMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0ZVRlc3RzLmg7IHBhdGggPSBB
UEkvdGVzdHMvRGF0ZVRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyODhC
MkREMThBNTREM0UwMDdCRTQwQiAvKiBEYXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBEYXRlVGVzdHMubW07IHBhdGggPSBBUEkvdGVzdHMvRGF0ZVRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjkzMkE1MzE5MDVCNUU3MDBF
N0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE1lbW9yeU1hbmFnZW1lbnRUZXN0cy5oOyBwYXRoID0gQVBJL3Rlc3RzL01lbW9y
eU1hbmFnZW1lbnRUZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjkzMkE1
NDE5MDVCNUU3MDBFN0EzOUIgLyogTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gTWVtb3J5TWFuYWdlbWVudFRlc3RzLm1tOyBw
YXRoID0gQVBJL3Rlc3RzL01lbW9yeU1hbmFnZW1lbnRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI5ODFGRDYxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXZWFr
UmVmZXJlbmNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdE
ZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOyBwYXRoID0gZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJl
bmNlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyOTgxRkQ3MTdCQUVFNEIw
MEEzQkM5OCAvKiBERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHBhdGggPSBkZmcvREZH
RGVzaXJlZFdlYWtSZWZlcmVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
OTgxRkRBMTdCQUZGNDQwMEEzQkM5OCAvKiBERkdEZXNpcmVkV3JpdGVCYXJyaWVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdEZXNpcmVkV3JpdGVCYXJyaWVy
cy5jcHA7IHBhdGggPSBkZmcvREZHRGVzaXJlZFdyaXRlQmFycmllcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzY5OCw2ICszNzAzLDggQEAKIAkJCQkxNEQ4NTc3NDBBNDY5
NkM4MDAzMjE0NkMgLyogdGVzdGFwaS5qcyAqLywKIAkJCQk4NkQyMjIxOTE2N0VGOTQ0MDAyNEM4
MDQgLyogdGVzdGFwaS5tbSAqLywKIAkJCQk2NTExMjJFNTE0MDQ2OUJBMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cC5jcHAgKi8sCisJCQkJQzI5MzJBNTMxOTA1QjVFNzAwRTdBMzlCIC8qIE1lbW9yeU1h
bmFnZW1lbnRUZXN0cy5oICovLAorCQkJCUMyOTMyQTU0MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1v
cnlNYW5hZ2VtZW50VGVzdHMubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IHRlc3RzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTM5OTIsNiArMzk5OSw3IEBACiAJCQkJRTEyNEE4RjYw
RTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJCQlFMTI0QThGNTBF
NTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1REUzRDBGNDBERDhE
REZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCisJCQkJQzI0OEY2OEMxOTA1
RDczQzAwNzBBMkIxIC8qIEFQSURhdGEuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTU0ODMsNiArNTQ5MSw3IEBACiAJCQkJQTFBMDA5
QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkQzQjJDNDEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTg0MDMyMDE4QkZGQkUxMDA1QTA4MTEgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUMyNDhGNjhFMTkwNUQ3M0MwMDcwQTJCMSAvKiBBUElEYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyQUFCQ0RFNzE4RUYyOTQyMDAwMDIwOTYgLyogR0NMb2dnaW5nLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkRBNzc4MzE4RTI1OTk5MDA2NkZDQjYgLyogSGVhcElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBQUNFNjNEMThDQTVBMDMwMEVEMDE5MSAvKiBHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtNjc4MSw2ICs2NzkwLDcgQEAKIAkJ
CQlDMjE4MUZDMjE4QTk0OEZCMDAyNUEyMzUgLyogSlNFeHBvcnRUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0NDBGNjEwMEE0Rjg1NjcwMDA1RjA2MSAvKiB0ZXN0YXBpLmMgaW4gU291cmNl
cyAqLywKIAkJCQk4NkQyMjIxQTE2N0VGOTQ0MDAyNEM4MDQgLyogdGVzdGFwaS5tbSBpbiBTb3Vy
Y2VzICovLAorCQkJCUMyOTMyQTU1MTkwNUI1RTcwMEU3QTM5QiAvKiBNZW1vcnlNYW5hZ2VtZW50
VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkocmV2aXNpb24gMTY3NjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIldhdGNoZG9nLmgi
CiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BUElEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0J1bXBQb2ludGVy
QWxsb2NhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KQEAgLTUxMCw2ICs1MTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIEJ1aWx0aW5FeGVjdXRhYmxlcyogYnVpbHRpbkV4ZWN1dGFibGVzKCkgeyByZXR1cm4g
bV9idWlsdGluRXhlY3V0YWJsZXMuZ2V0KCk7IH0KIAorICAgICAgICBBUElEYXRhIGFwaURhdGE7
CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2xlYXJFeGNlcHRpb25TY29wZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>